@@ -14,7 +14,7 @@ import (
14
14
)
15
15
16
16
var (
17
- expCreateTable = regexp .MustCompile ("(?i)^CREATE\\ sTABLE(\\ sIF\\ sNOT\\ sEXISTS)?\\ s`{0,1}(.*?)`{0,1}\\ .{0,1}`{0,1}([^`\\ .]+?)`{0,1}\\ s.*" )
17
+ expCreateTable = regexp .MustCompile ("(?i)^CREATE\\ sTABLE(\\ sIF\\ sNOT\\ sEXISTS)?\\ s`{0,1}(.*?)`{0,1}\\ .{0,1}`{0,1}([^`\\ .]+?)`{0,1}\\ s.*" )
18
18
expAlterTable = regexp .MustCompile ("(?i)^ALTER\\ sTABLE\\ s.*?`{0,1}(.*?)`{0,1}\\ .{0,1}`{0,1}([^`\\ .]+?)`{0,1}\\ s.*" )
19
19
expRenameTable = regexp .MustCompile ("(?i)^RENAME\\ sTABLE\\ s.*?`{0,1}(.*?)`{0,1}\\ .{0,1}`{0,1}([^`\\ .]+?)`{0,1}\\ s{1,}TO\\ s.*?" )
20
20
expDropTable = regexp .MustCompile ("(?i)^DROP\\ sTABLE(\\ sIF\\ sEXISTS){0,1}\\ s`{0,1}(.*?)`{0,1}\\ .{0,1}`{0,1}([^`\\ .]+?)`{0,1}(?:$|\\ s)" )
@@ -115,9 +115,9 @@ func (c *Canal) runSyncBinlog() error {
115
115
}
116
116
case * replication.QueryEvent :
117
117
var (
118
- mb [][]byte
118
+ mb [][]byte
119
119
schema []byte
120
- table []byte
120
+ table []byte
121
121
)
122
122
regexps := []regexp.Regexp {* expCreateTable , * expAlterTable , * expRenameTable , * expDropTable }
123
123
for _ , reg := range regexps {
@@ -143,10 +143,14 @@ func (c *Canal) runSyncBinlog() error {
143
143
force = true
144
144
c .ClearTableCache (schema , table )
145
145
log .Infof ("table structure changed, clear table cache: %s.%s\n " , schema , table )
146
- if err = c .eventHandler .OnDDL ( pos , e ); err != nil {
146
+ if err = c .eventHandler .OnTableChanged ( string ( schema ), string ( table ) ); err != nil {
147
147
return errors .Trace (err )
148
148
}
149
149
150
+ // Now we only handle Table Changed DDL, maybe we will support more later.
151
+ if err = c .eventHandler .OnDDL (pos , e ); err != nil {
152
+ return errors .Trace (err )
153
+ }
150
154
default :
151
155
continue
152
156
}
0 commit comments