Skip to content

Commit 1a74af4

Browse files
committed
encode UDT field names to avoid implicit conversion in formatting
PYTHON-353
1 parent 21ccd5c commit 1a74af4

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

cassandra/cluster.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1898,11 +1898,17 @@ def user_type_registered(self, keyspace, user_type, klass):
18981898
raise UserTypeDoesNotExist(
18991899
'User type %s does not exist in keyspace %s' % (user_type, keyspace))
19001900

1901+
field_names = type_meta.field_names
1902+
if six.PY2:
1903+
# go from unicode to string to avoid decode errors from implicit
1904+
# decode when formatting non-ascii values
1905+
field_names = [fn.encode('utf-8') for fn in field_names]
1906+
19011907
def encode(val):
19021908
return '{ %s }' % ' , '.join('%s : %s' % (
19031909
field_name,
19041910
self.encoder.cql_encode_all_types(getattr(val, field_name, None))
1905-
) for field_name in type_meta.field_names)
1911+
) for field_name in field_names)
19061912

19071913
self.encoder.mapping[klass] = encode
19081914

0 commit comments

Comments
 (0)