@@ -81,6 +81,50 @@ func (s ClickHouseSuite) Test_UnsignedMySQL() {
8181 RequireEnvCanceled (s .t , env )
8282}
8383
84+ func (s ClickHouseSuite ) Test_MySQL_MyISAM_NonTransactional () {
85+ if _ , ok := s .source .(* MySqlSource ); ! ok {
86+ s .t .Skip ("only applies to mysql" )
87+ }
88+
89+ srcTableName := "test_myisam"
90+ srcFullName := s .attachSchemaSuffix (srcTableName )
91+ dstTableName := "test_myisam"
92+
93+ require .NoError (s .t , s .source .Exec (s .t .Context (), fmt .Sprintf (`CREATE TABLE %s (
94+ id int primary key,
95+ val text
96+ ) ENGINE=MyISAM` , srcFullName )))
97+
98+ require .NoError (s .t , s .source .Exec (s .t .Context (),
99+ fmt .Sprintf (`INSERT INTO %s (id, val) VALUES (1, 'snapshot')` , srcFullName )))
100+
101+ connectionGen := FlowConnectionGenerationConfig {
102+ FlowJobName : srcFullName ,
103+ TableNameMapping : map [string ]string {srcFullName : dstTableName },
104+ Destination : s .Peer ().Name ,
105+ }
106+ flowConnConfig := connectionGen .GenerateFlowConnectionConfigs (s )
107+ flowConnConfig .DoInitialSnapshot = true
108+
109+ tc := NewTemporalClient (s .t )
110+ env := ExecutePeerflow (s .t , tc , flowConnConfig )
111+ SetupCDCFlowStatusQuery (s .t , env , flowConnConfig )
112+
113+ EnvWaitForEqualTablesWithNames (env , s , "waiting on initial snapshot" , srcTableName , dstTableName , "id,val" )
114+
115+ require .NoError (s .t , s .source .Exec (s .t .Context (),
116+ fmt .Sprintf (`INSERT INTO %s (id, val) VALUES (2, 'cdc-insert')` , srcFullName )))
117+ require .NoError (s .t , s .source .Exec (s .t .Context (),
118+ fmt .Sprintf (`UPDATE %s SET val = 'cdc-update' WHERE id = 1` , srcFullName )))
119+ require .NoError (s .t , s .source .Exec (s .t .Context (),
120+ fmt .Sprintf (`DELETE FROM %s WHERE id = 2` , srcFullName )))
121+
122+ EnvWaitForEqualTablesWithNames (env , s , "waiting on cdc changes" , srcTableName , dstTableName , "id,val" )
123+
124+ env .Cancel (s .t .Context ())
125+ RequireEnvCanceled (s .t , env )
126+ }
127+
84128func (s ClickHouseSuite ) Test_MySQL_Time () {
85129 if _ , ok := s .source .(* MySqlSource ); ! ok {
86130 s .t .Skip ("only applies to mysql" )
0 commit comments