Skip to content

Commit a334ae5

Browse files
committed
fix removing last user type in proto [1,2]
PYTHON-106
1 parent 2d8374a commit a334ae5

2 files changed

Lines changed: 23 additions & 26 deletions

File tree

cassandra/metadata.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ def _update_keyspace(self, keyspace_meta, new_user_types=None):
168168
self.keyspaces[ks_name] = keyspace_meta
169169
if old_keyspace_meta:
170170
keyspace_meta.tables = old_keyspace_meta.tables
171-
keyspace_meta.user_types = new_user_types or old_keyspace_meta.user_types
171+
keyspace_meta.user_types = new_user_types if new_user_types is not None else old_keyspace_meta.user_types
172172
keyspace_meta.indexes = old_keyspace_meta.indexes
173173
keyspace_meta.functions = old_keyspace_meta.functions
174174
keyspace_meta.aggregates = old_keyspace_meta.aggregates

tests/integration/standard/test_metadata.py

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -722,32 +722,29 @@ def test_refresh_user_type_metadata_proto_2(self):
722722
723723
@test_category metadata
724724
"""
725-
if 1 not in get_supported_protocol_versions() and 2 not in get_supported_protocol_versions():
726-
raise unittest.SkipTest("Protocol 1 or 2 is not support in Cassandra version ".format(CASSANDRA_VERSION))
727-
cluster2 = None
728-
if 2 in get_supported_protocol_versions():
729-
cluster2 = Cluster(protocol_version=2)
730-
session2 = cluster2.connect()
731-
cluster1 = None
732-
if 1 in get_supported_protocol_versions():
733-
cluster1 = Cluster(protocol_version=1)
734-
session1 = cluster1.connect()
735-
736-
if cluster2:
737-
self.assertEqual(cluster2.metadata.keyspaces[self.keyspace_name].user_types, {})
738-
session2.execute("CREATE TYPE {0}.user (age int, name text)".format(self.keyspace_name))
739-
self.assertIn("user", cluster2.metadata.keyspaces[self.keyspace_name].user_types)
740-
session2.execute("DROP TYPE {0}.user".format(self.keyspace_name))
741-
self.assertEqual(cluster2.metadata.keyspaces[self.keyspace_name].user_types, {})
742-
cluster2.shutdown()
725+
supported_versions = get_supported_protocol_versions()
726+
if 2 not in supported_versions: # 1 and 2 were dropped in the same version
727+
raise unittest.SkipTest("Protocol versions 1 and 2 are not supported in Cassandra version ".format(CASSANDRA_VERSION))
728+
729+
for protocol_version in (1, 2):
730+
cluster = Cluster(protocol_version=protocol_version)
731+
session = cluster.connect()
732+
self.assertEqual(cluster.metadata.keyspaces[self.keyspace_name].user_types, {})
733+
734+
session.execute("CREATE TYPE {0}.user (age int, name text)".format(self.keyspace_name))
735+
self.assertIn("user", cluster.metadata.keyspaces[self.keyspace_name].user_types)
736+
self.assertIn("age", cluster.metadata.keyspaces[self.keyspace_name].user_types["user"].field_names)
737+
self.assertIn("name", cluster.metadata.keyspaces[self.keyspace_name].user_types["user"].field_names)
738+
739+
session.execute("ALTER TYPE {0}.user ADD flag boolean".format(self.keyspace_name))
740+
self.assertIn("flag", cluster.metadata.keyspaces[self.keyspace_name].user_types["user"].field_names)
741+
742+
session.execute("ALTER TYPE {0}.user RENAME flag TO something".format(self.keyspace_name))
743+
self.assertIn("something", cluster.metadata.keyspaces[self.keyspace_name].user_types["user"].field_names)
743744

744-
if cluster1:
745-
self.assertEqual(cluster1.metadata.keyspaces[self.keyspace_name].user_types, {})
746-
session1.execute("CREATE TYPE {0}.user (age int, name text)".format(self.keyspace_name))
747-
self.assertIn("user", cluster1.metadata.keyspaces[self.keyspace_name].user_types)
748-
session1.execute("DROp TYPE {0}.user".format(self.keyspace_name))
749-
self.assertEqual(cluster1.metadata.keyspaces[self.keyspace_name].user_types, {})
750-
cluster1.shutdown()
745+
session.execute("DROP TYPE {0}.user".format(self.keyspace_name))
746+
self.assertEqual(cluster.metadata.keyspaces[self.keyspace_name].user_types, {})
747+
cluster.shutdown()
751748

752749
def test_refresh_user_function_metadata(self):
753750
"""

0 commit comments

Comments
 (0)