From 23a45ba7a84a0272231968c28daa160e726bcafb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mehmet=20Tokg=C3=B6z?= <56408993+mehmettokgoz@users.noreply.github.com> Date: Thu, 9 Feb 2023 16:22:22 +0300 Subject: [PATCH] Various serialization fixes. (#932) --- aggregate/aggregate_distinct.go | 4 ++-- internal/serialization/default_portable_writer.go | 2 +- internal/serialization/object_data.go | 4 ++++ internal/serialization/serialization.go | 3 +++ 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/aggregate/aggregate_distinct.go b/aggregate/aggregate_distinct.go index 72323dcac..4f1380038 100644 --- a/aggregate/aggregate_distinct.go +++ b/aggregate/aggregate_distinct.go @@ -46,13 +46,13 @@ func (a aggDistinct) ClassID() (classID int32) { func (a aggDistinct) WriteData(output serialization.DataOutput) { writeAttrPath(output, a.attrPath) // member side field, not used in client - output.WriteInt64(0) + output.WriteInt32(0) } func (a *aggDistinct) ReadData(input serialization.DataInput) { a.attrPath = input.ReadString() // member side field, not used in client - input.ReadInt64() + input.ReadInt32() } func (a aggDistinct) String() string { diff --git a/internal/serialization/default_portable_writer.go b/internal/serialization/default_portable_writer.go index 97f550f58..f62cf51f8 100644 --- a/internal/serialization/default_portable_writer.go +++ b/internal/serialization/default_portable_writer.go @@ -269,7 +269,7 @@ func (pw *DefaultPortableWriter) GetRawDataOutput() serialization.DataOutput { pw.output.PWriteInt32(pw.offset+index*Int32SizeInBytes, pos) pw.raw = true } - return pw.output.ObjectDataOutput + return pw.output } func (pw *DefaultPortableWriter) End() { diff --git a/internal/serialization/object_data.go b/internal/serialization/object_data.go index 991562f2c..8ee69735e 100644 --- a/internal/serialization/object_data.go +++ b/internal/serialization/object_data.go @@ -659,6 +659,10 @@ func NewPositionalObjectDataOutput(length int, service *Service, bigEndian bool) return &PositionalObjectDataOutput{NewObjectDataOutput(length, service, bigEndian)} } +func (p *PositionalObjectDataOutput) WriteObject(object interface{}) { + p.service.WriteObject(p, object) +} + func (p *PositionalObjectDataOutput) PWriteByte(pos int32, v byte) { p.buffer[pos] = v } diff --git a/internal/serialization/serialization.go b/internal/serialization/serialization.go index 7e3030653..d1c90c413 100644 --- a/internal/serialization/serialization.go +++ b/internal/serialization/serialization.go @@ -68,6 +68,9 @@ func (s *Service) ToData(object interface{}) (r Data, err error) { err = makeError(rec) } }() + if object == nil { + return nil, nil + } if serData, ok := object.(Data); ok { return serData, nil }