[
https://issues.apache.org/jira/browse/CASSANDRA-8879?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14346814#comment-14346814
]
Sylvain Lebresne commented on CASSANDRA-8879:
---------------------------------------------
bq. I thought we agreed (long ago, don't remember the ticket) to allow going
from blob to X
We're talking of the comparator here and so we definitively should not allow it
for any X, because if X doesn't compare as bytes (and only text, ascii and inet
do so), you'll just end up irreversibly corrupting data. But for non-clustering
columns, we could indeed allow it (and for clustering, we can allow it just for
the types that compare as bytes) with the caveat that users might shoot
themselves in the foot and have to revert the change.
But I'm kind of -1 on making that the default in CQL because it's still
dangerous and doesn't make sense expect for the upgrade of a minority of people
(even in thrift it was a good idea to use types and were encouraged it, so I'm
not sure "using blob for everything" is necessarily that common). I'd be fine
with adding a {{FORCE}} flag to {{ALTER}} to allow that though.
> Alter table on compact storage broken
> -------------------------------------
>
> Key: CASSANDRA-8879
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8879
> Project: Cassandra
> Issue Type: Bug
> Reporter: Nick Bailey
> Assignee: Tyler Hobbs
> Fix For: 2.0.13
>
> Attachments: 8879-2.0.txt
>
>
> In 2.0 HEAD, alter table on compact storage tables seems to be broken. With
> the following table definition, altering the column breaks cqlsh and
> generates a stack trace in the log.
> {noformat}
> CREATE TABLE settings (
> key blob,
> column1 blob,
> value blob,
> PRIMARY KEY ((key), column1)
> ) WITH COMPACT STORAGE
> {noformat}
> {noformat}
> cqlsh:OpsCenter> alter table settings ALTER column1 TYPE ascii ;
> TSocket read 0 bytes
> cqlsh:OpsCenter> DESC TABLE settings;
> {noformat}
> {noformat}
> ERROR [Thrift:7] 2015-02-26 17:20:24,640 CassandraDaemon.java (line 199)
> Exception in thread Thread[Thrift:7,5,main]
> java.lang.AssertionError
> >...at
> >org.apache.cassandra.cql3.statements.AlterTableStatement.announceMigration(AlterTableStatement.java:198)
> >...at
> >org.apache.cassandra.cql3.statements.SchemaAlteringStatement.execute(SchemaAlteringStatement.java:79)
> >...at
> >org.apache.cassandra.cql3.QueryProcessor.processStatement(QueryProcessor.java:158)
> >...at
> >org.apache.cassandra.cql3.QueryProcessor.process(QueryProcessor.java:175)
> >...at
> >org.apache.cassandra.thrift.CassandraServer.execute_cql3_query(CassandraServer.java:1958)
> >...at
> >org.apache.cassandra.thrift.Cassandra$Processor$execute_cql3_query.getResult(Cassandra.java:4486)
> >...at
> >org.apache.cassandra.thrift.Cassandra$Processor$execute_cql3_query.getResult(Cassandra.java:4470)
> >...at org.apache.thrift.ProcessFunction.process(ProcessFunction.java:39)
> >...at org.apache.thrift.TBaseProcessor.process(TBaseProcessor.java:39)
> >...at
> >org.apache.cassandra.thrift.CustomTThreadPoolServer$WorkerProcess.run(CustomTThreadPoolServer.java:204)
> >...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)
> {noformat}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)