Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-9636

Duplicate columns in selection causes AssertionError

    XMLWordPrintableJSON

Details

    • Normal

    Description

      Prior to CASSANDRA-9532, unaliased duplicate fields in a selection would be silently ignored. Now, they trigger a server side exception and an unfriendly error response, which we should clean up. Duplicate columns with aliases are not affected.

      CREATE KEYSPACE ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
      CREATE TABLE ks.t1 (k int PRIMARY KEY, v int);
      INSERT INTO ks.t2 (k, v) VALUES (0, 0);
      SELECT k, v FROM ks.t2;
      SELECT k, v, v AS other_v FROM ks.t2;
      SELECT k, v, v FROM ks.t2;
      

      The final statement results in this error response & server side stacktrace:

      ServerError: <ErrorMessage code=0000 [Server error] message="java.lang.AssertionError">
      
      
      ERROR 13:01:30 Unexpected exception during request; channel = [id: 0x44d22e61, /127.0.0.1:39463 => /127.0.0.1:9042]
      java.lang.AssertionError: null
              at org.apache.cassandra.cql3.ResultSet.addRow(ResultSet.java:63) ~[main/:na]
              at org.apache.cassandra.cql3.statements.Selection$ResultSetBuilder.build(Selection.java:355) ~[main/:na]
              at org.apache.cassandra.cql3.statements.SelectStatement.process(SelectStatement.java:1226) ~[main/:na]
              at org.apache.cassandra.cql3.statements.SelectStatement.processResults(SelectStatement.java:299) ~[main/:na]
              at org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:238) ~[main/:na]
              at org.apache.cassandra.cql3.statements.SelectStatement.execute(SelectStatement.java:67) ~[main/:na]
              at org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:238) ~[main/:na]
              at org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:260) ~[main/:na]
              at org.apache.cassandra.transport.messages.QueryMessage.execute(QueryMessage.java:119) ~[main/:na]
              at org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:439) [main/:na]
              at org.apache.cassandra.transport.Message$Dispatcher.channelRead0(Message.java:335) [main/:na]
              at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105) [netty-all-4.0.23.Final.jar:4.0.23.Final]
              at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:333) [netty-all-4.0.23.Final.jar:4.0.23.Final]
              at io.netty.channel.AbstractChannelHandlerContext.access$700(AbstractChannelHandlerContext.java:32) [netty-all-4.0.23.Final.jar:4.0.23.Final]
              at io.netty.channel.AbstractChannelHandlerContext$8.run(AbstractChannelHandlerContext.java:324) [netty-all-4.0.23.Final.jar:4.0.23.Final]
              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_45]
              at org.apache.cassandra.concurrent.AbstractTracingAwareExecutorService$FutureTask.run(AbstractTracingAwareExecutorService.java:164) [main/:na]
              at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:105) [main/:na]
              at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45]
      

      This issue also presents on the head of the 2.2 branch and on 2.0.16. However, the prior behaviour is different on both of those branches.
      In the 2.0 line prior to CASSANDRA-9532, duplicate columns would actually be included in the results, as opposed to being silently dropped as per 2.1.x
      In 2.2, the assertion error seen above precedes CASSANDRA-9532 and is also triggered for both aliased and unaliased duplicate columns.

      Attachments

        1. 9636-2.0.txt
          28 kB
          Sam Tunnicliffe
        2. 9636-2.1.txt
          31 kB
          Sam Tunnicliffe
        3. 9636-2.2.txt
          35 kB
          Sam Tunnicliffe
        4. 9636-trunk.txt
          36 kB
          Sam Tunnicliffe

        Activity

          People

            samt Sam Tunnicliffe
            samt Sam Tunnicliffe
            Sam Tunnicliffe
            Benjamin Lerer
            Votes:
            0 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: