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

rday commented on CASSANDRA-2623:
---------------------------------

Possibly the unescapeSQLString in CliUtils.java
can do something to get rid of the single quotes.
The unit test doesn't cover escaping via 2 single quotes.

    public static String unescapeSQLString(String b)
    {
        if (b.charAt(0) == '\'' && b.charAt(b.length()-1) == '\'')
            b = b.substring(1, b.length()-1);
        return StringEscapeUtils.unescapeJava(b);
    }

also method escapeSQLString which 
(only used in the unit test but public ) 
is assuming a backslash to escape single quotes.

    public static String escapeSQLString(String b)
    {
        // single quotes are not escaped in java, need to be for cli
        return StringEscapeUtils.escapeJava(b).replace("\'", "\\'");
    }


The StringLiteral Definition makes sense for using 2 single quotes escaping 
since it should always have an even number of quotes so just the backing code 
needs to be enlightened.


> CLI escaped single quote parsing gives errors
> ---------------------------------------------
>
>                 Key: CASSANDRA-2623
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2623
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Tools
>         Environment: windows vista, linux
>            Reporter: rday
>            Assignee: Pavel Yaskevich
>            Priority: Minor
>              Labels: cli
>             Fix For: 0.7.6, 0.8.1
>
>
> Escaping quotes in cli commands causes parsing errors.
> some examples::::
> No need to create columns etc, it doesn't get through parsing the expression::
> cassandra-cli
> 1. 
> set column['KEY+vals'][VALUE] = 'VAL\'' ;
> Syntax error at position 41: mismatched character '<EOF>' expecting '''
> 2.
> set column['KEY+val\'s'][VALUE] = 'VAL' ;
> Syntax error at position 41: mismatched character '<EOF>' expecting '''
> 3.
> set column['KEY+vals\''][VALUE] = 'VAL\'' ;
> Syntax error at position 38: unexpected "\" for `set 
> column['KEY+vals\''][VALUE] = 'VAL\'' ;`.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to