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

Benjamin Lerer commented on CASSANDRA-13592:
--------------------------------------------

{quote}"list , set, map or UDT types" are not allowed in key{quote}
They are, as long as they are {{frozen}}.

Sorry, it seems that I was not clear. Fixing the problem in {{rowToJson}} or in 
the {{ToJsonFct}} is in my opinion wrong. Most of the types will not change the 
buffer position in the {{toJSONString}} method and I will argue that it is the 
correct behavior. The  {{toJSONString}} methods should not change the buffer 
position.
If you fix it at a higher level, like in the {{rowToJson}} method or in the 
{{ToJsonFct}} class, you let a potential bug in the code that can hit us later 
if we add some new code that use the {{toJSONString}} method.
Moreover, your changes create in most of the cases some unnecessary objects.

The proper way to fix that problem is to fix the {{toJSONString}} methods that 
changes the buffer position which seems to be the one of: {{TupleType}}, 
{{MapType}}, {{ListType}} and {{SetType}}.   

> Null Pointer exception at SELECT JSON statement
> -----------------------------------------------
>
>                 Key: CASSANDRA-13592
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13592
>             Project: Cassandra
>          Issue Type: Bug
>          Components: CQL
>         Environment: Debian Linux
>            Reporter: Wyss Philipp
>            Assignee: ZhaoYang
>              Labels: beginner
>         Attachments: system.log
>
>
> A Nulll pointer exception appears when the command
> {code}
> SELECT JSON * FROM examples.basic;
> ---MORE---
> <Error from server: code=0000 [Server error] 
> message="java.lang.NullPointerException">
> Examples.basic has the following description (DESC examples.basic;):
> CREATE TABLE examples.basic (
>     key frozen<tuple<uuid, int>> PRIMARY KEY,
>     wert text
> ) WITH bloom_filter_fp_chance = 0.01
>     AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
>     AND comment = ''
>     AND compaction = {'class': 
> 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 
> 'max_threshold': '32', 'min_threshold': '4'}
>     AND compression = {'chunk_length_in_kb': '64', 'class': 
> 'org.apache.cassandra.io.compress.LZ4Compressor'}
>     AND crc_check_chance = 1.0
>     AND dclocal_read_repair_chance = 0.1
>     AND default_time_to_live = 0
>     AND gc_grace_seconds = 864000
>     AND max_index_interval = 2048
>     AND memtable_flush_period_in_ms = 0
>     AND min_index_interval = 128
>     AND read_repair_chance = 0.0
>     AND speculative_retry = '99PERCENTILE';
> {code}
> The error appears after the ---MORE--- line.
> The field "wert" has a JSON formatted string.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to