[ 
https://issues.apache.org/jira/browse/CASSANDRA-11458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15230960#comment-15230960
 ] 

Henry Manasseh commented on CASSANDRA-11458:
--------------------------------------------

Sorry for the delayed response. I was out of town.

Yes, what I really need is a custom filter (and not a secondary index) but I 
was only able to add it by creating a dummy secondary index. I will check out 
the changes from CASSANDRA-11295 later this week. It seems like it may have 
what I need. Thank you [~beobal]



> Complete support for CustomExpression
> -------------------------------------
>
>                 Key: CASSANDRA-11458
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11458
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Henry Manasseh
>            Priority: Minor
>         Attachments: Custom-expression-Change.png, addCustomIndexExpression 
> change.png
>
>
> This is a proposal to complete the CustomExpression support first introduced 
> as part of https://issues.apache.org/jira/browse/CASSANDRA-10217.
> The current support for custom expressions is partial. There is no clean way 
> to implement queries making use of the "exp('index', 'value)" syntax due to 
> the fact CustomExpression is declared as final and there is no way to for 
> developers to cleanly plug-in their own expressions.
> https://github.com/apache/cassandra/blob/6e69c75900f3640195130085ad69daa1659184eb/src/java/org/apache/cassandra/db/filter/RowFilter.java#L869
> The proposal is to make CustomExpression not final so that developers can 
> extend and create their own subclass and provide their own isSatisfiedBy 
> operation (which currently always returns true).
> Introducing a new custom expression would be done as follows:
> 1. Developer would create a subclass of CustomExpression and override 
> isSatisfiedBy method with their logic (public boolean 
> isSatisfiedBy(CFMetaData metadata, DecoratedKey partitionKey, Row row))
> 2. This class would be packaged in a jar and copied to the cassandra lib 
> directory along with a secondary index class which overrides 
> Index.customExpressionValueType
> 2. Create the custom index with an option which identifies the 
> CustomExpression subclass (custom_expression_class).
> CREATE CUSTOM INDEX ON keyspace.my_table(my_indexed_column) USING 
> 'org.custom.MyCustomIndex'
> WITH OPTIONS = { 'custom_expression_class': 'org.custom.MyCustomExpression' };
> I have prototyped the change and works as designed. In my case I do a type of 
> "IN" query filter which will simplify my client logic significantly.
> The default behavior of using the CustomExpression class would be maintained 
> if the developer does not provide a custom class in the create index options.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to