@@ -107,59 +107,8 @@ func (bat *Batch) Slice(from, to int) *Batch {
107107}
108108
109109func (bat * Batch ) MarshalBinary () ([]byte , error ) {
110- // --------------------------------------------------------------------
111- // | len | Zs... | len | Vecs... | len | Attrs... | len | AggInfos... |
112- // --------------------------------------------------------------------
113110 var w bytes.Buffer
114-
115- // row count.
116- rl := int64 (bat .rowCount )
117- w .Write (types .EncodeInt64 (& rl ))
118-
119- // Vecs
120- l := int32 (len (bat .Vecs ))
121- w .Write (types .EncodeInt32 (& l ))
122- for i := 0 ; i < int (l ); i ++ {
123- data , err := bat .Vecs [i ].MarshalBinary ()
124- if err != nil {
125- return nil , err
126- }
127- size := int32 (len (data ))
128- w .Write (types .EncodeInt32 (& size ))
129- w .Write (data )
130- }
131-
132- // Attrs
133- l = int32 (len (bat .Attrs ))
134- w .Write (types .EncodeInt32 (& l ))
135- for i := 0 ; i < int (l ); i ++ {
136- size := int32 (len (bat .Attrs [i ]))
137- w .Write (types .EncodeInt32 (& size ))
138- w .WriteString (bat .Attrs [i ])
139- }
140-
141- // AggInfos
142- aggInfos := make ([][]byte , len (bat .Aggs ))
143- for i , exec := range bat .Aggs {
144- data , err := aggexec .MarshalAggFuncExec (exec )
145- if err != nil {
146- return nil , err
147- }
148- aggInfos [i ] = data
149- }
150-
151- l = int32 (len (aggInfos ))
152- w .Write (types .EncodeInt32 (& l ))
153- for i := 0 ; i < int (l ); i ++ {
154- size := int32 (len (aggInfos [i ]))
155- w .Write (types .EncodeInt32 (& size ))
156- w .Write (aggInfos [i ])
157- }
158-
159- w .Write (types .EncodeInt32 (& bat .Recursive ))
160- w .Write (types .EncodeInt32 (& bat .ShuffleIDX ))
161-
162- return w .Bytes (), nil
111+ return bat .MarshalBinaryWithBuffer (& w )
163112}
164113
165114func (bat * Batch ) MarshalBinaryWithBuffer (w * bytes.Buffer ) ([]byte , error ) {
@@ -196,6 +145,20 @@ func (bat *Batch) MarshalBinaryWithBuffer(w *bytes.Buffer) ([]byte, error) {
196145 }
197146 }
198147
148+ // ExtraBuf1
149+ size := int32 (len (bat .ExtraBuf1 ))
150+ w .Write (types .EncodeInt32 (& size ))
151+ if size > 0 {
152+ w .Write (bat .ExtraBuf1 )
153+ }
154+
155+ // ExtraBuf2
156+ size = int32 (len (bat .ExtraBuf2 ))
157+ w .Write (types .EncodeInt32 (& size ))
158+ if size > 0 {
159+ w .Write (bat .ExtraBuf2 )
160+ }
161+
199162 // AggInfos
200163 aggInfos := make ([][]byte , len (bat .Aggs ))
201164 for i , exec := range bat .Aggs {
@@ -270,6 +233,20 @@ func (bat *Batch) UnmarshalBinaryWithAnyMp(data []byte, mp *mpool.MPool) (err er
270233 data = data [size :]
271234 }
272235
236+ // ExtraBuf1
237+ l = types .DecodeInt32 (data [:4 ])
238+ data = data [4 :]
239+ bat .ExtraBuf1 = nil
240+ bat .ExtraBuf1 = append (bat .ExtraBuf1 , data [:l ]... )
241+ data = data [l :]
242+
243+ // ExtraBuf2
244+ l = types .DecodeInt32 (data [:4 ])
245+ data = data [4 :]
246+ bat .ExtraBuf2 = nil
247+ bat .ExtraBuf2 = append (bat .ExtraBuf2 , data [:l ]... )
248+ data = data [l :]
249+
273250 l = types .DecodeInt32 (data [:4 ])
274251 aggs := make ([][]byte , l )
275252
0 commit comments