Skip to content

Commit bebe11e

Browse files
committed
Merge pull request go-mysql-org#2 from perepechaev/master
Multiply rows for event rows
2 parents 75746a7 + b69b502 commit bebe11e

File tree

1 file changed

+14
-7
lines changed

1 file changed

+14
-7
lines changed

replication/row_event.go

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,8 @@ type RowsEvent struct {
196196
tables map[uint64]*TableMapEvent
197197
needBitmap2 bool
198198

199+
Table *TableMapEvent
200+
199201
TableID uint64
200202

201203
Flags uint16
@@ -245,22 +247,27 @@ func (e *RowsEvent) Decode(data []byte) error {
245247
pos += bitCount
246248
}
247249

248-
tableEvent, ok := e.tables[e.TableID]
250+
var ok bool
251+
e.Table, ok = e.tables[e.TableID]
249252
if !ok {
250253
return fmt.Errorf("invalid table id %d, no correspond table map event", e.TableID)
251254
}
252255

253256
var err error
254-
if n, err = e.decodeRows(data[pos:], tableEvent, e.ColumnBitmap1); err != nil {
255-
return err
256-
}
257-
pos += n
258257

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 {
261261
return err
262262
}
263263
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+
}
264271
}
265272

266273
return nil

0 commit comments

Comments
 (0)