[
https://issues.apache.org/jira/browse/CASSANDRA-11055?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15298917#comment-15298917
]
Adam Holmberg commented on CASSANDRA-11055:
-------------------------------------------
Sorry about the delay. I see what you mean about the ordering. That was a
broken test and it was apparently fixed in a later version. However, I added
the text "fix" to this branch, and the change for this ticket caused a change
in behavior. My knowledge of DCT is lacking, so I'm not confident of the
original test. What CQL would you expect to reproduce a column family like
this?:
{code}
create column family composite_comp_no_col
with column_type = 'Standard'
and comparator =
'DynamicCompositeType(t=>org.apache.cassandra.db.marshal.TimeUUIDType,s=>org.apache.cassandra.db.marshal.UTF8Type,b=>org.apache.cassandra.db.marshal.BytesType)'
and default_validation_class = 'BytesType'
and key_validation_class = 'BytesType';
{code}
Previously we were producing something like this:
{code}
/*
Warning: Table legacy.composite_comp_no_col omitted because it has constructs
not compatible with CQL (was created via legacy API).
Approximate structure, for reference:
(this should not be used to reproduce this schema)
CREATE TABLE legacy.composite_comp_no_col (
key blob,
column1
'org.apache.cassandra.db.marshal.DynamicCompositeType(org.apache.cassandra.db.marshal.BytesType,
org.apache.cassandra.db.marshal.UTF8Type,
org.apache.cassandra.db.marshal.TimeUUIDType)',
column2 timeuuid,
value blob,
PRIMARY KEY (key, column1, column1, column2)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC, column1 ASC, column2 ASC)
{code}
...so it never claimed to be valid CQL, but it did show the DCT.
With the change for this ticket we get:
{code}
/*
Warning: Table legacy.composite_comp_no_col omitted because it has constructs
not compatible with CQL (was created via legacy API).
Approximate structure, for reference:
(this should not be used to reproduce this schema)
CREATE TABLE legacy.composite_comp_no_col (
key blob,
column1 timeuuid,
value blob,
PRIMARY KEY (key, column1, column1, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC, column1 ASC, column1 ASC)
{code}
Maybe it's good enough to "not blow up", but I just wanted to mention the
difference.
> C*2.1 cqlsh DESCRIBE KEYSPACE ( or TABLE ) returns 'NoneType' object has no
> attribute 'replace'
> -----------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-11055
> URL: https://issues.apache.org/jira/browse/CASSANDRA-11055
> Project: Cassandra
> Issue Type: Bug
> Components: Tools
> Reporter: Simon Ashley
> Assignee: Stefania
> Labels: cqlsh
> Fix For: 2.1.x
>
> Attachments: 11055-driver-2.7.2.patch, data.tar.gz
>
>
> C* 2.1 cqlsh DESCRIBE KEYSPACE ( or TABLE ) returns:
> 'NoneType' object has no attribute 'replace'
> for thrift CF's originally created in C* 1.2.
> Repro:
> 1. Create cf in cassandra-cli on C* 1.2.x (1.2.9 was used here)
> [default@ks1] CREATE COLUMN FAMILY t1
> ... WITH column_type='Standard'
> ... AND
> comparator='CompositeType(org.apache.cassandra.db.marshal.UTF8Type,org.apache.cassandra.db.marshal.UTF8Type)'
> ... AND default_validation_class='UTF8Type'
> ... AND key_validation_class='UTF8Type'
> ... AND read_repair_chance=0.1
> ... AND dclocal_read_repair_chance=0.0
> ... AND gc_grace=864000
> ... AND min_compaction_threshold=4
> ... AND max_compaction_threshold=32
> ... AND replicate_on_write=true
> ... AND compaction_strategy='LeveledCompactionStrategy' AND
> compaction_strategy_options={sstable_size_in_mb: 32}
> ... AND caching='KEYS_ONLY'
> ... AND compression_options={sstable_compression:SnappyCompressor,
> chunk_length_kb:64};
> qlsh> describe keyspace ks1;
> CREATE KEYSPACE ks1 WITH replication = {
> 'class': 'NetworkTopologyStrategy',
> 'datacenter1': '1'
> };
> USE ks1;
> CREATE TABLE t1 (
> key text,
> column1 text,
> column2 text,
> value text,
> PRIMARY KEY (key, column1, column2)
> ) WITH COMPACT STORAGE AND
> bloom_filter_fp_chance=0.100000 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={'sstable_size_in_mb': '32', 'class':
> 'LeveledCompactionStrategy'} AND
> compression={'chunk_length_kb': '64', 'sstable_compression':
> 'SnappyCompressor'};
> cqlsh> select keyspace_name, columnfamily_name,column_aliases,key_aliases
> from system.schema_columnfamilies where keyspace_name= 'ks1';
> keyspace_name | columnfamily_name | column_aliases | key_aliases
> ---------------+-------------------+----------------+-------------
> ks1 | t1 | [] | []
> 2/ Upgrade -> C* 2.0.9 -> nodetool upgradesstables -a
> At this stage , DESCRIBE in cqlsh is working
> 3/ Upgrade -> C* 2.1.12 -> nodetool upgradesstables -a
> DESCRIBE now fails:
> cqlsh> describe table ks1.t1;
> 'NoneType' object has no attribute 'replace'
> cqlsh> describe keyspace ks1;
> 'NoneType' object has no attribute 'replace'
> You can workaround by manually updating system.schema_columnfamilies
> UPDATE system.schema_columnfamilies SET column_aliases
> ='["column1","column2"]' WHERE keyspace_name = 'ks1' AND columnfamily_name =
> 't1';
> Once you exit and restart cqlsh, DESCRIBE is not working as per C* 1.2
> cqlsh> describe keyspace ks1;
> CREATE KEYSPACE ks1 WITH replication = {'class': 'NetworkTopologyStrategy',
> 'datacenter1': '1'} AND durable_writes = true;
> CREATE TABLE ks1.t1 (
> key text,
> column1 text,
> column2 text,
> value text,
> PRIMARY KEY (key, column1, column2)
> ) WITH COMPACT STORAGE
> AND CLUSTERING ORDER BY (column1 ASC, column2 ASC)
> AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
> AND comment = ''
> AND compaction = {'sstable_size_in_mb': '32', 'class':
> 'org.apache.cassandra.db.compaction.LeveledCompactionStrategy'}
> AND compression = {'chunk_length_kb': '64', 'sstable_compression':
> 'org.apache.cassandra.io.compress.SnappyCompressor'}
> AND dclocal_read_repair_chance = 0.0
> AND default_time_to_live = 0
> AND gc_grace_seconds = 864000
> AND max_index_interval = 2048
> AND memtable_flush_period_in_ms = 0
> AND min_index_interval = 128
> AND read_repair_chance = 0.1
> AND speculative_retry = '99.0PERCENTILE';
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)