cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Yaskevich (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-11456) support for PreparedStatement with LIKE
Date Wed, 30 Mar 2016 19:30:25 GMT

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

Pavel Yaskevich commented on CASSANDRA-11456:
---------------------------------------------

This is actually going to be pretty tough to implement since actual type of LIKE operator
(LIKE_\{PREFIX, SUFFIX, ...\}) is determined by the value and we can't get a value while building
restrictions which means we can't say if restriction matches index etc. until it's too late
already. 

I guess we could cheat in LikeRestriction\#isSupportedBy(Index) method and just accept purely
based on the column definition and fail once query is actually executed since that's only
when we will be able to properly determine a type of LIKE statement.

Or, as an alternative, we could support something like {{SELECT * FROM X WHERE user_name LIKE
'?%'}} so only values of the LIKE could be bind, but I'm not sure if that's even is currently
feasible in CQL.

WDYT, [~beobal]?

> support for PreparedStatement with LIKE
> ---------------------------------------
>
>                 Key: CASSANDRA-11456
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-11456
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL
>            Reporter: Pavel Yaskevich
>            Assignee: Pavel Yaskevich
>            Priority: Minor
>             Fix For: 3.5
>
>
> Using the Java driver for example:
> {code}
> PreparedStatement pst = session.prepare("select * from test.users where first_name LIKE
?");
> BoundStatement bs = pst.bind("Jon%");
> {code}
> The first line fails with {{SyntaxError: line 1:47 mismatched input '?' expecting STRING_LITERAL}}
(which makes sense since it's how it's declared in the grammar). Other operators declare the
right-hand side value as a {{Term.Raw}}, which can also be a bind marker.
> I think users will expect to be able to bind the argument this way.



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

Mime
View raw message