diff --git a/CHANGES.txt b/CHANGES.txt index 7e43fdfc8c..6b690befdc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -26,7 +26,7 @@ * remove unused classes (CASSANDRA-7197) * Limit user types to the keyspace they are defined in (CASSANDRA-6643) * Add validate method to CollectionType (CASSANDRA-7208) - * New serialization format for UDT values (CASSANDRA-7209) + * New serialization format for UDT values (CASSANDRA-7209, CASSANDRA-7261) * Fix nodetool netstats (CASSANDRA-7270) Merged from 2.0: * Always reallocate buffers in HSHA (CASSANDRA-6285) diff --git a/bin/cqlsh b/bin/cqlsh index f9b433d4b3..c242010bd1 100755 --- a/bin/cqlsh +++ b/bin/cqlsh @@ -33,7 +33,7 @@ from __future__ import with_statement from uuid import UUID description = "CQL Shell for Apache Cassandra" -version = "5.0.0" +version = "5.0.1" from StringIO import StringIO from contextlib import contextmanager, closing @@ -1000,11 +1000,12 @@ class Shell(cmd.Cmd): out.write(ksdef.as_cql_query()) out.write("\n\n") - uts = self.get_usertypes_meta().get_usertypes_names(ksname) + uts = self.get_usertypes_meta().get_usertypes_names(ksdef.name) if uts: - out.write("USE %s;\n\n" % ksname) + out.write("USE %s;\n" % ksname) for ut in uts: - self.print_recreate_usertype(ksname, ut, out) + out.write('\n') + self.print_recreate_usertype(ksdef.name, ut, out) cfs = self.get_columnfamily_names(ksdef.name) if cfs: diff --git a/lib/cassandra-driver-internal-only-1.0.2.post.zip b/lib/cassandra-driver-internal-only-1.0.2.post.zip deleted file mode 100644 index 7ccd5f79af..0000000000 Binary files a/lib/cassandra-driver-internal-only-1.0.2.post.zip and /dev/null differ diff --git a/lib/cassandra-driver-internal-only-1.1.2.zip b/lib/cassandra-driver-internal-only-1.1.2.zip new file mode 100644 index 0000000000..cd5181ca33 Binary files /dev/null and b/lib/cassandra-driver-internal-only-1.1.2.zip differ diff --git a/pylib/cqlshlib/cql3handling.py b/pylib/cqlshlib/cql3handling.py index 14b3dba3e0..e4364a0d82 100644 --- a/pylib/cqlshlib/cql3handling.py +++ b/pylib/cqlshlib/cql3handling.py @@ -1149,7 +1149,7 @@ class UserTypesMeta(object): result[ksname] = {} utname = row.type_name - result[ksname][utname] = zip(row.column_names, row.column_types) + result[ksname][utname] = zip(row.field_names, row.field_types) return cls(meta=result) def get_usertypes_names(self, keyspace): diff --git a/pylib/cqlshlib/test/test_cqlsh_output.py b/pylib/cqlshlib/test/test_cqlsh_output.py index 5a2a8375c6..32cdbe1415 100644 --- a/pylib/cqlshlib/test/test_cqlsh_output.py +++ b/pylib/cqlshlib/test/test_cqlsh_output.py @@ -821,3 +821,33 @@ class TestCqlshOutput(BaseTestCase): def test_empty_line(self): pass + + def test_user_types_output(self): + self.assertCqlverQueriesGiveColoredOutput(( + ("select addresses from users;", r""" + addresses + MMMMMMMMM + -------------------------------------------------------------------------------------------------------------------------------------------- + + {{city: 'Austin', address: '902 East 5th St. #202', zip: '78702'}, {city: 'Sunnyvale', address: '292 Gibraltar Drive #107', zip: '94089'}} + BBYYYYBBYYYYYYYYBBYYYYYYYBBYYYYYYYYYYYYYYYYYYYYYYYBBYYYBBYYYYYYYBBBBYYYYBBYYYYYYYYYYYBBYYYYYYYBBYYYYYYYYYYYYYYYYYYYYYYYYYYBBYYYBBYYYYYYYBB + + + (1 rows) + nnnnnnnn + """), + ), cqlver="3.1.6") + self.assertCqlverQueriesGiveColoredOutput(( + ("select phone_numbers from users;", r""" + phone_numbers + MMMMMMMMMMMMM + ------------------------------------------------------------------------------------- + + {{country: '+1', number: '512-537-7809'}, {country: '+44', number: '208 622 3021'}} + BBYYYYYYYBBYYYYBBYYYYYYBBYYYYYYYYYYYYYYBBBBYYYYYYYBBYYYYYBBYYYYYYBBYYYYYYYYYYYYYYBB + + + (1 rows) + nnnnnnnn + """), + ), cqlver="3.1.6") \ No newline at end of file diff --git a/pylib/cqlshlib/test/test_keyspace_init.cql b/pylib/cqlshlib/test/test_keyspace_init.cql index 8079cd5aa4..6f44e92693 100644 --- a/pylib/cqlshlib/test/test_keyspace_init.cql +++ b/pylib/cqlshlib/test/test_keyspace_init.cql @@ -197,3 +197,29 @@ INSERT INTO twenty_rows_composite_table (a, b, c) VALUES ('A', '17', '17'); INSERT INTO twenty_rows_composite_table (a, b, c) VALUES ('A', '18', '18'); INSERT INTO twenty_rows_composite_table (a, b, c) VALUES ('A', '19', '19'); INSERT INTO twenty_rows_composite_table (a, b, c) VALUES ('A', '20', '20'); + +CREATE TYPE address ( + city text, + address text, + zip text +); + +CREATE TYPE phone_number ( + country text, + number text +); + +CREATE TABLE users ( + login text PRIMARY KEY, + name text, + addresses set
, + phone_numbers set