Skip to content

Commit e04b29b

Browse files
committed
Fix decoding of ref types
1 parent e5e1f62 commit e04b29b

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

sbe/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -700,6 +700,10 @@ def _unpack_composite(schema: Schema, composite: Composite, buffer: memoryview):
700700
return UnpackedValue(rv, size)
701701

702702
def _prettify_type(_schema: Schema, t: Type, v):
703+
if isinstance(t, RefType):
704+
return _prettify_type(_schema, _schema.types[t.type], v)
705+
if isinstance(t, Set):
706+
return t.decode(v)
703707
if t.primitiveType == PrimitiveType.CHAR and (
704708
t.characterEncoding in (CharacterEncoding.ASCII, CharacterEncoding.US_ASCII) or t.characterEncoding is None
705709
):
@@ -1029,6 +1033,10 @@ def _walk_fields_decode_composite(schema: Schema, rv: dict, composite: Composite
10291033
rv[t.name] = {}
10301034
_walk_fields_decode_composite(schema, rv[t.name], t, vals, cursor)
10311035

1036+
elif isinstance(t, RefType):
1037+
_t = _resolve_ref_type(t, composite)
1038+
_decode_value(schema, rv, t.name, _t, vals, cursor)
1039+
10321040
else:
10331041
if t.presence != Presence.CONSTANT:
10341042
_decode_value(schema, rv, t.name, t, vals, cursor)
@@ -1053,6 +1061,12 @@ def _walk_fields_decode(schema: Schema, rv: dict, fields: List[Union[Group, Fiel
10531061
rv[f.name] = {}
10541062
_walk_fields_decode_composite(schema, rv[f.name], f.type, vals, cursor)
10551063

1064+
elif isinstance(f.type, PrimitiveType):
1065+
_decode_value(schema, rv, f.name, f.type, vals, cursor)
1066+
1067+
elif isinstance(f.type, RefType):
1068+
_decode_value(schema, rv, f.name, schema.types[f.type], vals, cursor)
1069+
10561070
else:
10571071
if f.type.presence != Presence.CONSTANT:
10581072
_decode_value(schema, rv, f.name, f.type, vals, cursor)

0 commit comments

Comments
 (0)