@@ -95,7 +95,7 @@ func (c *Canal) runSyncBinlog() error {
95
95
c .cfg .Logger .Infof ("rotate binlog to %s" , pos )
96
96
savePos = true
97
97
force = true
98
- if err = c .eventHandler .OnRotate (e ); err != nil {
98
+ if err = c .eventHandler .OnRotate (ev . Header , e ); err != nil {
99
99
return errors .Trace (err )
100
100
}
101
101
case * replication.RowsEvent :
@@ -115,7 +115,7 @@ func (c *Canal) runSyncBinlog() error {
115
115
case * replication.XIDEvent :
116
116
savePos = true
117
117
// try to save the position later
118
- if err := c .eventHandler .OnXID (pos ); err != nil {
118
+ if err := c .eventHandler .OnXID (ev . Header , pos ); err != nil {
119
119
return errors .Trace (err )
120
120
}
121
121
if e .GSet != nil {
@@ -127,7 +127,7 @@ func (c *Canal) runSyncBinlog() error {
127
127
if err != nil {
128
128
return errors .Trace (err )
129
129
}
130
- if err := c .eventHandler .OnGTID (gtid ); err != nil {
130
+ if err := c .eventHandler .OnGTID (ev . Header , gtid ); err != nil {
131
131
return errors .Trace (err )
132
132
}
133
133
case * replication.GTIDEvent :
@@ -136,7 +136,7 @@ func (c *Canal) runSyncBinlog() error {
136
136
if err != nil {
137
137
return errors .Trace (err )
138
138
}
139
- if err := c .eventHandler .OnGTID (gtid ); err != nil {
139
+ if err := c .eventHandler .OnGTID (ev . Header , gtid ); err != nil {
140
140
return errors .Trace (err )
141
141
}
142
142
case * replication.QueryEvent :
@@ -151,15 +151,15 @@ func (c *Canal) runSyncBinlog() error {
151
151
if node .db == "" {
152
152
node .db = string (e .Schema )
153
153
}
154
- if err = c .updateTable (node .db , node .table ); err != nil {
154
+ if err = c .updateTable (ev . Header , node .db , node .table ); err != nil {
155
155
return errors .Trace (err )
156
156
}
157
157
}
158
158
if len (nodes ) > 0 {
159
159
savePos = true
160
160
force = true
161
161
// Now we only handle Table Changed DDL, maybe we will support more later.
162
- if err = c .eventHandler .OnDDL (pos , e ); err != nil {
162
+ if err = c .eventHandler .OnDDL (ev . Header , pos , e ); err != nil {
163
163
return errors .Trace (err )
164
164
}
165
165
}
@@ -176,7 +176,7 @@ func (c *Canal) runSyncBinlog() error {
176
176
c .master .UpdateTimestamp (ev .Header .Timestamp )
177
177
fakeRotateLogName = ""
178
178
179
- if err := c .eventHandler .OnPosSynced (pos , c .master .GTIDSet (), force ); err != nil {
179
+ if err := c .eventHandler .OnPosSynced (ev . Header , pos , c .master .GTIDSet (), force ); err != nil {
180
180
return errors .Trace (err )
181
181
}
182
182
}
@@ -228,10 +228,10 @@ func parseStmt(stmt ast.StmtNode) (ns []*node) {
228
228
return ns
229
229
}
230
230
231
- func (c * Canal ) updateTable (db , table string ) (err error ) {
231
+ func (c * Canal ) updateTable (header * replication. EventHeader , db , table string ) (err error ) {
232
232
c .ClearTableCache ([]byte (db ), []byte (table ))
233
233
c .cfg .Logger .Infof ("table structure changed, clear table cache: %s.%s\n " , db , table )
234
- if err = c .eventHandler .OnTableChanged (db , table ); err != nil && errors .Cause (err ) != schema .ErrTableNotExist {
234
+ if err = c .eventHandler .OnTableChanged (header , db , table ); err != nil && errors .Cause (err ) != schema .ErrTableNotExist {
235
235
return errors .Trace (err )
236
236
}
237
237
return
0 commit comments