[ https://issues.apache.org/jira/browse/CASSANDRA-6180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13793998#comment-13793998 ]
Henning Kropp commented on CASSANDRA-6180: ------------------------------------------ I agree that {{byte[]}} is not semantically equivalent to {{null}}. The representation of {{null}} in Cassandra seems to me like an issue on it's own. How about limiting it to {{CqlStorage}} and making it configurable? So the user can deliberately change the representation of {{null}}/empty values. At least I can query easily for {{byte[]}} but not for {{null}}. {code} > CREATE INDEX null_idx ON null_table(null_value); > DELETE null_value FROM null_table WHERE null_id = 'a'; > SELECT COUNT(*) FROM null_table WHERE null_value = ''; count ------- 6 > SELECT * FROM null_table WHERE null_value = null; Bad Request: Unsupported null value for indexed column null_value {code} > NPE in CqlRecordWriter: Related to AbstractCassandraStorage handling null > values > -------------------------------------------------------------------------------- > > Key: CASSANDRA-6180 > URL: https://issues.apache.org/jira/browse/CASSANDRA-6180 > Project: Cassandra > Issue Type: Bug > Components: Hadoop > Environment: Pig, CqlStorage > Reporter: Henning Kropp > Attachments: null_test.pig, patch.txt, test_null.cql, test_null_data > > > I encountered an issue with the {{CqlStorage}} and it's handling of null > values. The {{CqlRecordWriter}} throws an NPE when a value is null. I found a > related ticket CASSANDRA-5885 and applied the there stated fix to the > {{AbstractCassandraStorage}}. > Instead of converting {{null}} values to {{ByteBuffer.wrap(new byte[0])}} > {{AbstractCassandraStorage}} returns {{(ByteBuffer)null}} > This issue can be reproduced with the attached files: {{test_null.cql}}, > {{test_null_data}}, {{null_test.pig}} > A fix can be found in the attached patch. > {code} > java.io.IOException: java.lang.NullPointerException > at > org.apache.cassandra.hadoop.cql3.CqlRecordWriter$RangeClient.run(CqlRecordWriter.java:248) > Caused by: java.lang.NullPointerException > at > org.apache.thrift.protocol.TBinaryProtocol.writeBinary(TBinaryProtocol.java:194) > at > org.apache.cassandra.thrift.Cassandra$execute_prepared_cql3_query_args.write(Cassandra.java:41253) > at org.apache.thrift.TServiceClient.sendBase(TServiceClient.java:63) > at > org.apache.cassandra.thrift.Cassandra$Client.send_execute_prepared_cql3_query(Cassandra.java:1683) > at > org.apache.cassandra.thrift.Cassandra$Client.execute_prepared_cql3_query(Cassandra.java:1673) > at > org.apache.cassandra.hadoop.cql3.CqlRecordWriter$RangeClient.run(CqlRecordWriter.java:232) > {code} -- This message was sent by Atlassian JIRA (v6.1#6144)