cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pierre Chalamet (JIRA)" <j...@apache.org>
Subject [jira] [Created] (CASSANDRA-5474) failure when passing null parameter to prepared statement
Date Mon, 15 Apr 2013 21:20:16 GMT
Pierre Chalamet created CASSANDRA-5474:
------------------------------------------

             Summary: failure when passing null parameter to prepared statement
                 Key: CASSANDRA-5474
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5474
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 1.2.4
         Environment: windows 8 x64, 1.7.0_11-b21 x64
            Reporter: Pierre Chalamet


I have a failure when passing a null parameter to the prepared statement bellow when going
through the cql 3 bin protocol:

{code}
Exec: CREATE KEYSPACE Tests WITH replication = {'class': 'SimpleStrategy', 'replication_factor'
: 1}

Exec: CREATE TABLE Tests.AllTypes (a int, b int, primary key (a))

Prepare: insert into Tests.AllTypes (a, b) values (?, ?)
{code}

Passing a=1 and b=null cause the following error:

{code}
DEBUG 23:07:23,315 Responding: RESULT PREPARED 59b3d6baed67d5c0a3ced29ebb4277c5 [a(tests,
alltypes), org.apache.cassandra.db.marshal.Int32Type][b(tests, alltypes), org.apache.cassandra.db.marshal.Int32Type]
DEBUG 23:07:23,292 Compaction buckets are []
DEBUG 23:07:23,336 Received: EXECUTE 59b3d6baed67d5c0a3ced29ebb4277c5 with 2 values at consistency
QUORUM
ERROR 23:07:23,338 Unexpected exception during request
java.lang.NullPointerException
        at org.apache.cassandra.db.marshal.Int32Type.validate(Int32Type.java:95)
        at org.apache.cassandra.cql3.Constants$Marker.bindAndGet(Constants.java:257)
        at org.apache.cassandra.cql3.Constants$Setter.execute(Constants.java:282)
        at org.apache.cassandra.cql3.statements.UpdateStatement.mutationForKey(UpdateStatement.java:250)
        at org.apache.cassandra.cql3.statements.UpdateStatement.getMutations(UpdateStatement.java:133)
        at org.apache.cassandra.cql3.statements.ModificationStatement.execute(ModificationStatement.java:92)
        at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:132)
        at org.apache.cassandra.cql3.QueryProcessor.processPrepared(QueryProcessor.java:254)
        at org.apache.cassandra.transport.messages.ExecuteMessage.execute(ExecuteMessage.java:122)
        at org.apache.cassandra.transport.Message$Dispatcher.messageReceived(Message.java:287)
        at org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:75)
        at org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:565)
        at org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:793)
        at org.jboss.netty.handler.execution.ChannelUpstreamEventRunnable.doRun(ChannelUpstreamEventRunnable.java:45)
        at org.jboss.netty.handler.execution.ChannelEventRunnable.run(ChannelEventRunnable.java:69)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)
DEBUG 23:07:23,337 No tasks available
DEBUG 23:07:23,341 request complete
DEBUG 23:07:23,343 Responding: ERROR SERVER_ERROR: java.lang.NullPointerException
{code}

When serializing value for b, a bytes array of len -1 is transmitted (accordingly to the spec):
{code}
[bytes] A [int] n, followed by n bytes if n >= 0. If n < 0,
        no byte should follow and the value represented is `null`.
{code}

CASSANDRA-5081 added support for null params. Am I doing something wrong there ? Thanks.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message