You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "graham sanderson (JIRA)" <ji...@apache.org> on 2014/07/03 04:55:25 UTC

[jira] [Created] (CASSANDRA-7490) Static columns mess up selects with ordering and clustering column ranges

graham sanderson created CASSANDRA-7490:
-------------------------------------------

             Summary: Static columns mess up selects with ordering and clustering column ranges
                 Key: CASSANDRA-7490
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7490
             Project: Cassandra
          Issue Type: Bug
          Components: Core
            Reporter: graham sanderson


Starts off ok:
{code}
cqlsh:test> create table test (p text, c text, v text, s text static, PRIMARY KEY (p, c));
cqlsh:test> insert into test (p, c, v, s) values ('p1', 'k1', 'v1', 'sv1');
cqlsh:test> select * from test where p = 'p1';

 p  | c  | s   | v
----+----+-----+----
 p1 | k1 | sv1 | v1

(1 rows)
{code}
But try ordering, and we appear to get the static row instead:
{code}
cqlsh:test> select * from test where p = 'p1' order by c desc;

 p  | c    | s   | v
----+------+-----+------
 p1 | null | sv1 | null

(1 rows)
{code}
Now we add a clustering key range constraint, again works ok:
{code}
cqlsh:test> select * from test where p = 'p1' and c >= 'a';

 p  | c  | s   | v
----+----+-----+----
 p1 | k1 | sv1 | v1

(1 rows)
{code}
But, this causes assertion failure (which has a very nice comment explaining exactly why that might happen!):
{code}
cqlsh:test> select * from test where p = 'p1' and c >= 'a' order by c desc;
Request did not complete within rpc_timeout.
{code}

Cause:

{code}
java.lang.AssertionError: Added column does not sort as the first column
        at org.apache.cassandra.db.ArrayBackedSortedColumns.addColumn(ArrayBackedSortedColumns.java:115)
        at org.apache.cassandra.db.ColumnFamily.addColumn(ColumnFamily.java:116)
        at org.apache.cassandra.db.ColumnFamily.addIfRelevant(ColumnFamily.java:110)
        at org.apache.cassandra.db.filter.SliceQueryFilter.collectReducedColumns(SliceQueryFilter.java:205)
        at org.apache.cassandra.db.filter.QueryFilter.collateColumns(QueryFilter.java:122)
        at org.apache.cassandra.db.filter.QueryFilter.collateOnDiskAtom(QueryFilter.java:80)
        at org.apache.cassandra.db.filter.QueryFilter.collateOnDiskAtom(QueryFilter.java:72)
        at org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:297)
        at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:53)
        at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1547)
        at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1376)
        at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:333)
        at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:65)
        at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1363)
        at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1927)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
{code}




--
This message was sent by Atlassian JIRA
(v6.2#6252)