File tree 1 file changed +14
-7
lines changed 1 file changed +14
-7
lines changed Original file line number Diff line number Diff line change @@ -196,6 +196,8 @@ type RowsEvent struct {
196
196
tables map [uint64 ]* TableMapEvent
197
197
needBitmap2 bool
198
198
199
+ Table * TableMapEvent
200
+
199
201
TableID uint64
200
202
201
203
Flags uint16
@@ -245,22 +247,27 @@ func (e *RowsEvent) Decode(data []byte) error {
245
247
pos += bitCount
246
248
}
247
249
248
- tableEvent , ok := e .tables [e .TableID ]
250
+ var ok bool
251
+ e .Table , ok = e .tables [e .TableID ]
249
252
if ! ok {
250
253
return fmt .Errorf ("invalid table id %d, no correspond table map event" , e .TableID )
251
254
}
252
255
253
256
var err error
254
- if n , err = e .decodeRows (data [pos :], tableEvent , e .ColumnBitmap1 ); err != nil {
255
- return err
256
- }
257
- pos += n
258
257
259
- if e .needBitmap2 {
260
- if n , err = e .decodeRows (data [pos :], tableEvent , e .ColumnBitmap2 ); err != nil {
258
+ // ... repeat rows until event-end
259
+ for pos < len (data ) {
260
+ if n , err = e .decodeRows (data [pos :], e .Table , e .ColumnBitmap1 ); err != nil {
261
261
return err
262
262
}
263
263
pos += n
264
+
265
+ if e .needBitmap2 {
266
+ if n , err = e .decodeRows (data [pos :], e .Table , e .ColumnBitmap2 ); err != nil {
267
+ return err
268
+ }
269
+ pos += n
270
+ }
264
271
}
265
272
266
273
return nil
You can’t perform that action at this time.
0 commit comments