Hi,
I have following column family from pre-CQL times, now using 1.2.5 and
want to investigate ability to use CQL instead of Thrift API.

   ColumnFamily: RRD
      Key Validation Class: org.apache.cassandra.db.marshal.UTF8Type
      Default column value validator: org.apache.cassandra.db.marshal.BytesType
      Columns sorted by: org.apache.cassandra.db.marshal.BytesType
      GC grace seconds: 864000
      Compaction min/max thresholds: 4/32
      Read repair chance: 0.1
      DC Local Read repair chance: 0.0
      Populate IO Cache on flush: false
      Replicate on write: true
      Caching: KEYS_ONLY
      Bloom Filter FP chance: default
      Built indexes: []
      Compaction Strategy:
org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy
      Compression Options:
        sstable_compression: org.apache.cassandra.io.compress.SnappyCompressor

In cqlsh it looks like

CREATE TABLE "RRD" (
  key text,
  column1 blob,
  value blob,
  PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE AND
  bloom_filter_fp_chance=0.010000 AND
  caching='KEYS_ONLY' AND
  comment='' AND
  dclocal_read_repair_chance=0.000000 AND
  gc_grace_seconds=864000 AND
  read_repair_chance=0.100000 AND
  replicate_on_write='true' AND
  populate_io_cache_on_flush='false' AND
  compaction={'class': 'SizeTieredCompactionStrategy'} AND
  compression={'sstable_compression': 'SnappyCompressor'};

I have already successfully changed type of key from blob to text.
column1 is actually a text string, as I would like to change it type
from blob to text too.

But when I run query  ALTER TABLE  "RRD" ALTER  column1  TYPE text,
cqlsh hangs, and I observe following error in Cassandra log:

ERROR 18:28:56,103 Exception in thread Thread[Thrift:16,5,main]
java.lang.AssertionError
        at 
org.apache.cassandra.cql3.statements.AlterTableStatement.announceMigration(AlterTableStatement.java:147)
        at 
org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:73)
        at 
org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:132)
        at 
org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:143)
        at 
org.apache.cassandra.thrift.CassandraServer.execute_cql3_query(CassandraServer.java:1707)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$execute_cql3_query.getResult(Cassandra.java:4074)
        at 
org.apache.cassandra.thrift.Cassandra$Processor$execute_cql3_query.getResult(Cassandra.java:4062)
        at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:32)
        at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:34)
        at 
org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:199)
        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:724)

>From source code I see that it  failed assertion:
     case COLUMN_ALIAS:
                   assert cfDef.isComposite;

So it have to be composite, but there is already exists PRIMARY KEY
(key, column1). Did I miss something?
How can I change type of this column1 ?

Thanks.

-- 
Sergey

Reply via email to