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

Tyler Hobbs commented on CASSANDRA-9190:
----------------------------------------

bq. So if it's just a string literal, is decodeJson a no-op?

No, it's not a no-op.  It will attempt to decode it as a normal JSON string.  
For example, if you've got a {{map<frozen<set<int>>, boolean>}} column and you 
try to pass a string literal "abc" for a map key, you'll get an error like the 
following:

{noformat}
Error decoding JSON value for column1: Error decoding JSON string: Unexpected 
character ('a' (code 97)): expected a valid value (number, String, array, 
object, 'true', 'false' or 'null')
{noformat}

I could improve the error message somewhat if you'd like, but it should be a 
pretty rare case.

> Map keys aren't properly serialized as strings in SELECT JSON queries
> ---------------------------------------------------------------------
>
>                 Key: CASSANDRA-9190
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9190
>             Project: Cassandra
>          Issue Type: Bug
>          Components: API
>            Reporter: Gianluca Righetto
>            Assignee: Tyler Hobbs
>             Fix For: 2.2 beta 1
>
>         Attachments: 9190-trunk.txt
>
>
> When I run a SELECT JSON query on a table that contains a column of type map, 
> the JSON output doesn’t wrap the map keys with quotes, thus creating a 
> non-standard JSON representation, which doesn’t play along with JSON parsers 
> very well. 
> Here’s an example where the map keys are actually a set:
> {code}
> create table table1 (id int primary key, mymap map<frozen<set<int>>,int>);
> insert into table1 (id,mymap) values (1, {{1,2,3,4}:1});
> select json id,mymap from table1;
> {code}
> The output is:
> {noformat}
> {"id": 1, "mymap": {[1, 2, 3, 4]: 1}}
> {noformat}
> But what I expected was that the map key, in this case the entire integer 
> set, would be wrapped with quotes.
> The same thing happens when the key is a primitive, such as int, or when it’s 
> another type of collection.
> I tried this with the latest version of the Cassandra codebase from the 
> repository’s trunk (1f65a12c33).



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

Reply via email to