Pass user type map to decode fns as necessary
This commit is contained in:
@@ -605,7 +605,7 @@ class ResultMessage(_MessageType):
|
|||||||
colksname = read_string(f)
|
colksname = read_string(f)
|
||||||
colcfname = read_string(f)
|
colcfname = read_string(f)
|
||||||
colname = read_string(f)
|
colname = read_string(f)
|
||||||
coltype = cls.read_type(f)
|
coltype = cls.read_type(f, user_type_map)
|
||||||
column_metadata.append((colksname, colcfname, colname, coltype))
|
column_metadata.append((colksname, colcfname, colname, coltype))
|
||||||
return paging_state, column_metadata
|
return paging_state, column_metadata
|
||||||
|
|
||||||
@@ -635,17 +635,17 @@ class ResultMessage(_MessageType):
|
|||||||
raise NotSupportedError("Unknown data type code 0x%04x. Have to skip"
|
raise NotSupportedError("Unknown data type code 0x%04x. Have to skip"
|
||||||
" entire result set." % (optid,))
|
" entire result set." % (optid,))
|
||||||
if typeclass in (ListType, SetType):
|
if typeclass in (ListType, SetType):
|
||||||
subtype = cls.read_type(f)
|
subtype = cls.read_type(f, user_type_map)
|
||||||
typeclass = typeclass.apply_parameters((subtype,))
|
typeclass = typeclass.apply_parameters((subtype,))
|
||||||
elif typeclass == MapType:
|
elif typeclass == MapType:
|
||||||
keysubtype = cls.read_type(f)
|
keysubtype = cls.read_type(f, user_type_map)
|
||||||
valsubtype = cls.read_type(f)
|
valsubtype = cls.read_type(f, user_type_map)
|
||||||
typeclass = typeclass.apply_parameters((keysubtype, valsubtype))
|
typeclass = typeclass.apply_parameters((keysubtype, valsubtype))
|
||||||
elif typeclass == UserDefinedType:
|
elif typeclass == UserDefinedType:
|
||||||
ks = cls.read_string(f)
|
ks = cls.read_string(f)
|
||||||
udt_name = cls.read_string(f)
|
udt_name = cls.read_string(f)
|
||||||
num_fields = cls.read_short(f)
|
num_fields = cls.read_short(f)
|
||||||
names_and_types = ((cls.read_string(f), cls.read_type(f))
|
names_and_types = ((cls.read_string(f), cls.read_type(f, user_type_map))
|
||||||
for _ in xrange(num_fields))
|
for _ in xrange(num_fields))
|
||||||
mapped_class = user_type_map.get(ks, {}).get(udt_name)
|
mapped_class = user_type_map.get(ks, {}).get(udt_name)
|
||||||
typeclass = typeclass.apply_parameters(
|
typeclass = typeclass.apply_parameters(
|
||||||
|
|||||||
Reference in New Issue
Block a user