diff --git a/CHANGES.txt b/CHANGES.txt index 957978149b..72d6a1f78f 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -156,6 +156,7 @@ Merged from 3.0: * Correct log message for statistics of offheap memtable flush (CASSANDRA-12776) * Explicitly set locale for string validation (CASSANDRA-12541,CASSANDRA-12542,CASSANDRA-12543,CASSANDRA-12545) Merged from 2.2: + * cqlsh: fix DESC TYPES errors (CASSANDRA-12914) * Fix leak on skipped SSTables in sstableupgrade (CASSANDRA-12899) * Avoid blocking gossip during pending range calculation (CASSANDRA-12281) * Fix purgeability of tombstones with max timestamp (CASSANDRA-12792) diff --git a/bin/cqlsh.py b/bin/cqlsh.py index 0358c83232..2387342f5d 100644 --- a/bin/cqlsh.py +++ b/bin/cqlsh.py @@ -1318,12 +1318,10 @@ class Shell(cmd.Cmd): name = protect_name(ksmeta.name) print 'Keyspace %s' % (name,) print '---------%s' % ('-' * len(name)) - cmd.Cmd.columnize(self, protect_names(ksmeta.functions.keys())) - print + self._columnize_unicode(ksmeta.functions.keys()) else: ksmeta = self.get_keyspace_meta(ksname) - cmd.Cmd.columnize(self, protect_names(ksmeta.functions.keys())) - print + self._columnize_unicode(ksmeta.functions.keys()) def describe_function(self, ksname, functionname): if ksname is None: @@ -1345,12 +1343,10 @@ class Shell(cmd.Cmd): name = protect_name(ksmeta.name) print 'Keyspace %s' % (name,) print '---------%s' % ('-' * len(name)) - cmd.Cmd.columnize(self, protect_names(ksmeta.aggregates.keys())) - print + self._columnize_unicode(ksmeta.aggregates.keys()) else: ksmeta = self.get_keyspace_meta(ksname) - cmd.Cmd.columnize(self, protect_names(ksmeta.aggregates.keys())) - print + self._columnize_unicode(ksmeta.aggregates.keys()) def describe_aggregate(self, ksname, aggregatename): if ksname is None: @@ -1372,12 +1368,10 @@ class Shell(cmd.Cmd): name = protect_name(ksmeta.name) print 'Keyspace %s' % (name,) print '---------%s' % ('-' * len(name)) - cmd.Cmd.columnize(self, protect_names(ksmeta.user_types.keys())) - print + self._columnize_unicode(ksmeta.user_types.keys(), quote=True) else: ksmeta = self.get_keyspace_meta(ksname) - cmd.Cmd.columnize(self, protect_names(ksmeta.user_types.keys())) - print + self._columnize_unicode(ksmeta.user_types.keys(), quote=True) def describe_usertype(self, ksname, typename): if ksname is None: @@ -1392,6 +1386,16 @@ class Shell(cmd.Cmd): raise UserTypeNotFound("User type %r not found" % typename) print usertype.export_as_string() + def _columnize_unicode(self, name_list, quote=False): + """ + Used when columnizing identifiers that may contain unicode + """ + names = [n.encode('utf-8') for n in name_list] + if quote: + names = protect_names(names) + cmd.Cmd.columnize(self, names) + print + def describe_cluster(self): print '\nCluster: %s' % self.get_cluster_name() p = trim_if_present(self.get_partitioner(), 'org.apache.cassandra.dht.')