mirror of https://github.com/apache/cassandra
cqlsh: preserve original result column names
Patch by Tyler Hobbs; reviewed by Aleksey Yeschenko for CASSANDRA-7806
This commit is contained in:
parent
58554decc2
commit
c4191ed1c9
|
|
@ -1,4 +1,6 @@
|
|||
2.1.0
|
||||
* (cqlsh) Fix column name formatting for functions, CAS operations,
|
||||
and UDT field selections (CASSANDRA-7806)
|
||||
* (cqlsh) Fix COPY FROM handling of null/empty primary key
|
||||
values (CASSANDRA-7792)
|
||||
* Fix ordering of static cells (CASSANDRA-7763)
|
||||
|
|
|
|||
15
bin/cqlsh
15
bin/cqlsh
|
|
@ -107,7 +107,7 @@ except ImportError, e:
|
|||
'Error: %s\n' % (sys.executable, sys.path, e))
|
||||
|
||||
from cassandra.cluster import Cluster
|
||||
from cassandra.query import SimpleStatement
|
||||
from cassandra.query import SimpleStatement, ordered_dict_factory
|
||||
from cassandra.policies import WhiteListRoundRobinPolicy
|
||||
from cassandra.metadata import protect_name, protect_names, protect_value
|
||||
from cassandra.auth import PlainTextAuthProvider
|
||||
|
|
@ -521,6 +521,7 @@ class Shell(cmd.Cmd):
|
|||
self.session = self.conn.connect(keyspace)
|
||||
else:
|
||||
self.session = self.conn.connect()
|
||||
self.session.row_factory = ordered_dict_factory
|
||||
self.get_connection_versions()
|
||||
|
||||
self.current_keyspace = keyspace
|
||||
|
|
@ -612,9 +613,9 @@ class Shell(cmd.Cmd):
|
|||
def get_connection_versions(self):
|
||||
result, = self.session.execute("select * from system.local where key = 'local'")
|
||||
vers = {
|
||||
'build': result.release_version,
|
||||
'protocol': result.native_protocol_version,
|
||||
'cql': result.cql_version,
|
||||
'build': result['release_version'],
|
||||
'protocol': result['native_protocol_version'],
|
||||
'cql': result['cql_version'],
|
||||
}
|
||||
self.connection_versions = vers
|
||||
self.cass_ver_tuple = tuple(map(int, vers['build'].split('-', 1)[0].split('.')[:3]))
|
||||
|
|
@ -952,9 +953,9 @@ class Shell(cmd.Cmd):
|
|||
def print_static_result(self, rows):
|
||||
if not rows:
|
||||
return
|
||||
colnames = rows[0]._fields
|
||||
colnames = rows[0].keys()
|
||||
formatted_names = [self.myformat_colname(name) for name in colnames]
|
||||
formatted_values = [map(self.myformat_value, row) for row in rows]
|
||||
formatted_values = [map(self.myformat_value, row.values()) for row in rows]
|
||||
if self.expand_enabled:
|
||||
self.print_formatted_result_vertically(formatted_names, formatted_values)
|
||||
else:
|
||||
|
|
@ -1423,7 +1424,7 @@ class Shell(cmd.Cmd):
|
|||
format_value(v, output_encoding=encoding, nullval=nullval,
|
||||
time_format=self.display_time_format,
|
||||
float_precision=self.display_float_precision).strval
|
||||
writer.writerow(map(fmt, row))
|
||||
writer.writerow(map(fmt, row.values()))
|
||||
rows += 1
|
||||
finally:
|
||||
if do_close:
|
||||
|
|
|
|||
|
|
@ -1149,7 +1149,7 @@ def username_name_completer(ctxt, cass):
|
|||
return [Hint('<username>')]
|
||||
|
||||
session = cass.session
|
||||
return [maybe_quote(row[0].replace("'", "''")) for row in session.execute("LIST USERS")]
|
||||
return [maybe_quote(row.values()[0].replace("'", "''")) for row in session.execute("LIST USERS")]
|
||||
|
||||
# END SYNTAX/COMPLETION RULE DEFINITIONS
|
||||
|
||||
|
|
@ -1167,12 +1167,12 @@ class UserTypesMeta(object):
|
|||
def from_layout(cls, layout):
|
||||
result = {}
|
||||
for row in layout:
|
||||
ksname = row.keyspace_name
|
||||
ksname = row['keyspace_name']
|
||||
if ksname not in result:
|
||||
result[ksname] = {}
|
||||
utname = row.type_name
|
||||
utname = row['type_name']
|
||||
|
||||
result[ksname][utname] = zip(row.field_names, row.field_types)
|
||||
result[ksname][utname] = zip(row['field_names'], row['field_types'])
|
||||
return cls(meta=result)
|
||||
|
||||
def get_usertypes_names(self, keyspace):
|
||||
|
|
|
|||
Loading…
Reference in New Issue