Simply UserType deserialization in cqltypes.py
This commit is contained in:
@@ -943,27 +943,7 @@ class UserType(TupleType):
|
|||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def deserialize_safe(cls, byts, protocol_version):
|
def deserialize_safe(cls, byts, protocol_version):
|
||||||
proto_version = max(3, protocol_version)
|
values = super(UserType, cls).deserialize_safe(byts, protocol_version)
|
||||||
p = 0
|
|
||||||
values = []
|
|
||||||
for col_type in cls.subtypes:
|
|
||||||
if p == len(byts):
|
|
||||||
break
|
|
||||||
itemlen = int32_unpack(byts[p:p + 4])
|
|
||||||
p += 4
|
|
||||||
if itemlen >= 0:
|
|
||||||
item = byts[p:p + itemlen]
|
|
||||||
p += itemlen
|
|
||||||
else:
|
|
||||||
item = None
|
|
||||||
# collections inside UDTs are always encoded with at least the
|
|
||||||
# version 3 format
|
|
||||||
values.append(col_type.from_binary(item, proto_version))
|
|
||||||
|
|
||||||
if len(values) < len(cls.subtypes):
|
|
||||||
nones = [None] * (len(cls.subtypes) - len(values))
|
|
||||||
values = values + nones
|
|
||||||
|
|
||||||
if cls.mapped_class:
|
if cls.mapped_class:
|
||||||
return cls.mapped_class(**dict(zip(cls.fieldnames, values)))
|
return cls.mapped_class(**dict(zip(cls.fieldnames, values)))
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user