You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/09/18 09:31:32 UTC
[2/2] git commit: cqlsh: adapt to CASSANDRA-4018 system cf changes
cqlsh: adapt to CASSANDRA-4018 system cf changes
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9ec77eb6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9ec77eb6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9ec77eb6
Branch: refs/heads/trunk
Commit: 9ec77eb66ec4106fde1b8ecaf17c2aca521fe9f0
Parents: 6fc3080
Author: paul cannon <pa...@datastax.com>
Authored: Sat Aug 4 23:10:00 2012 -0600
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Tue Sep 18 09:09:39 2012 +0200
----------------------------------------------------------------------
bin/cqlsh | 42 ++++++++++++++++++++++++++++------
pylib/cqlshlib/cql3handling.py | 12 ++++++++-
2 files changed, 44 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ec77eb6/bin/cqlsh
----------------------------------------------------------------------
diff --git a/bin/cqlsh b/bin/cqlsh
index 42a77cc..43b1e53 100755
--- a/bin/cqlsh
+++ b/bin/cqlsh
@@ -434,6 +434,7 @@ class Shell(cmd.Cmd):
tempcurs.execute('USE %s;' % self.cql_protect_name(keyspace))
tempcurs.close()
self.cursor = self.conn.cursor()
+ self.get_connection_versions()
self.current_keyspace = keyspace
@@ -470,6 +471,9 @@ class Shell(cmd.Cmd):
def cqlver_atleast(self, major, minor=0, patch=0):
return self.cql_ver_tuple[:3] >= (major, minor, patch)
+ def cassandraver_atleast(self, major, minor=0, patch=0):
+ return self.cass_ver_tuple[:3] >= (major, minor, patch)
+
def myformat_value(self, val, casstype, **kwargs):
if isinstance(val, DecodeError):
self.decoding_errors.append(val)
@@ -491,7 +495,7 @@ class Shell(cmd.Cmd):
self.port)
def show_version(self):
- vers = self.get_cluster_versions()
+ vers = self.connection_versions.copy()
vers['shver'] = version
# system.Versions['cql'] apparently does not reflect changes with
# set_cql_version.
@@ -524,7 +528,22 @@ class Shell(cmd.Cmd):
% (cf, colname, cql_typename(vtype))
print
- def get_cluster_versions(self):
+ def get_connection_versions(self):
+ try:
+ self.cursor.execute("select * from system.local where key = 'local'")
+ except cql.ProgrammingError:
+ vers = self.get_connection_versions_fallback()
+ else:
+ result = self.fetchdict()
+ vers = {
+ 'build': result['release_version'],
+ 'thrift': result['thrift_version'],
+ 'cql': result['cql_version'],
+ }
+ self.connection_versions = vers
+ self.cass_ver_tuple = tuple(map(int, vers['build'].split('-', 1)[0].split('.', 2)))
+
+ def get_connection_versions_fallback(self):
if self.cqlver_atleast(3):
query = 'select component, version from system."Versions"'
else:
@@ -660,15 +679,21 @@ class Shell(cmd.Cmd):
def get_columnfamily_layout(self, ksname, cfname):
if ksname is None:
ksname = self.current_keyspace
- self.cursor.execute("""select * from system.schema_columnfamilies
- where "keyspace"=:ks and "columnfamily"=:cf""",
- {'ks': ksname, 'cf': cfname})
+ if self.cassandraver_atleast(1, 2):
+ cf_q = """select * from system.schema_columnfamilies
+ where keyspace_name=:ks and columnfamily_name=:cf"""
+ col_q = """select * from system.schema_columns
+ where keyspace_name=:ks and columnfamily_name=:cf"""
+ else:
+ cf_q = """select * from system.schema_columnfamilies
+ where "keyspace"=:ks and "columnfamily"=:cf"""
+ col_q = """select * from system.schema_columns
+ where "keyspace"=:ks and "columnfamily"=:cf"""
+ self.cursor.execute(cf_q, {'ks': ksname, 'cf': cfname})
layout = self.fetchdict()
if layout is None:
raise ColumnFamilyNotFound("Column family %r not found" % cfname)
- self.cursor.execute("""select * from system.schema_columns
- where "keyspace"=:ks and "columnfamily"=:cf""",
- {'ks': ksname, 'cf': cfname})
+ self.cursor.execute(col_q, {'ks': ksname, 'cf': cfname})
cols = self.fetchdict_all()
return cql3handling.CqlTableDef.from_layout(layout, cols)
@@ -1544,6 +1569,7 @@ class Shell(cmd.Cmd):
showwhat = parsed.get_binding('what').lower()
if showwhat == 'version':
+ self.get_connection_versions()
self.show_version()
elif showwhat == 'host':
self.show_host()
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9ec77eb6/pylib/cqlshlib/cql3handling.py
----------------------------------------------------------------------
diff --git a/pylib/cqlshlib/cql3handling.py b/pylib/cqlshlib/cql3handling.py
index 13ce07a..f1d7f81 100644
--- a/pylib/cqlshlib/cql3handling.py
+++ b/pylib/cqlshlib/cql3handling.py
@@ -692,7 +692,11 @@ class CqlColumnDef:
@classmethod
def from_layout(cls, layout):
- c = cls(layout[u'column'], cql_typename(layout[u'validator']))
+ try:
+ colname = layout[u'column_name']
+ except KeyError:
+ colname = layout[u'column']
+ c = cls(colname, cql_typename(layout[u'validator']))
c.index_name = layout[u'index_name']
return c
@@ -716,7 +720,11 @@ class CqlTableDef:
@classmethod
def from_layout(cls, layout, coldefs):
- cf = cls(name=layout[u'columnfamily'])
+ try:
+ cfname = layout[u'columnfamily_name']
+ except KeyError:
+ cfname = layout[u'columnfamily']
+ cf = cls(name=cfname)
for attr, val in layout.items():
setattr(cf, attr.encode('ascii'), val)
for attr in cls.json_attrs: