@@ -163,6 +163,9 @@ func (s ClickHouseSuite) Test_MySQL_MariaDB_CompressedColumn_Rejected() {
163163}
164164
165165func (s ClickHouseSuite ) Test_MariaDB_CompressedColumn_AddedMidCDC () {
166+ if s .cluster {
167+ s .t .Skip ("source-side compressed column coverage does not need to run against ClickHouse cluster" )
168+ }
166169 mySource , ok := s .source .(* MySqlSource )
167170 if ! ok {
168171 s .t .Skip ("only applies to mysql" )
@@ -171,23 +174,34 @@ func (s ClickHouseSuite) Test_MariaDB_CompressedColumn_AddedMidCDC() {
171174 s .t .Skip ("column compression is a MariaDB-only feature" )
172175 }
173176
177+ // A compressed column produces a binlog row event go-mysql cannot decode, which poisons the
178+ // binlog stream for every mirror reading the server. Use a dedicated throwaway MariaDB so the
179+ // failure cannot cascade into the other parallel subtests sharing the CI source.
180+ src , suffix := SetupMySQLTestContainerSource (s .t , "cmpcol" , MySQLTestContainerConfig {
181+ Image : "mariadb:12.3" ,
182+ Flavor : protos .MySqlFlavor_MYSQL_MARIA ,
183+ ReplicationMechanism : mySource .Config .ReplicationMechanism ,
184+ })
185+
174186 srcTableName := "compressed_mid_cdc"
175- srcFullName := s . attachSchemaSuffix ( srcTableName )
187+ srcFullName := fmt . Sprintf ( "e2e_test_%s.%s" , suffix , srcTableName )
176188 dstTableName := "compressed_mid_cdc"
177189
178190 // The table starts without a compressed column, so mirror creation validation passes.
179- require .NoError (s .t , s . source .Exec (s .t .Context (), fmt .Sprintf (
191+ require .NoError (s .t , src .Exec (s .t .Context (), fmt .Sprintf (
180192 `CREATE TABLE %s (id INT PRIMARY KEY, name TEXT)` , srcFullName )))
181- require .NoError (s .t , s . source .Exec (s .t .Context (), fmt .Sprintf (
193+ require .NoError (s .t , src .Exec (s .t .Context (), fmt .Sprintf (
182194 `INSERT INTO %s (id, name) VALUES (1, 'snapshot')` , srcFullName )))
183195
184196 connectionGen := FlowConnectionGenerationConfig {
185- FlowJobName : srcFullName ,
197+ FlowJobName : "test_mariadb_compressed_mid_cdc_" + suffix ,
186198 TableNameMapping : map [string ]string {srcFullName : dstTableName },
187199 Destination : s .Peer ().Name ,
188200 }
189201 flowConnConfig := connectionGen .GenerateFlowConnectionConfigs (s )
190202 flowConnConfig .DoInitialSnapshot = true
203+ // The suite source is the shared CI MariaDB; point the mirror at our isolated source instead.
204+ flowConnConfig .SourceName = src .GeneratePeer (s .t ).Name
191205
192206 tc := NewTemporalClient (s .t )
193207 env := ExecutePeerflow (s .t , tc , flowConnConfig )
@@ -196,13 +210,13 @@ func (s ClickHouseSuite) Test_MariaDB_CompressedColumn_AddedMidCDC() {
196210 catalogPool , err := internal .GetCatalogConnectionPoolFromEnv (s .t .Context ())
197211 require .NoError (s .t , err )
198212
199- EnvWaitForEqualTablesWithNames (env , s , "waiting on initial snapshot" , srcTableName , dstTableName , "id,name" )
213+ EnvWaitForCount (env , s , "waiting on initial snapshot" , dstTableName , "id,name" , 1 )
200214
201215 // Add a COMPRESSED column mid-stream, then write a row so a row event carrying the undecodable
202216 // wire type reaches the pipe and trips the TABLE_MAP detection.
203- require .NoError (s .t , s . source .Exec (s .t .Context (), fmt .Sprintf (
217+ require .NoError (s .t , src .Exec (s .t .Context (), fmt .Sprintf (
204218 `ALTER TABLE %s ADD COLUMN val TEXT COMPRESSED` , srcFullName )))
205- require .NoError (s .t , s . source .Exec (s .t .Context (), fmt .Sprintf (
219+ require .NoError (s .t , src .Exec (s .t .Context (), fmt .Sprintf (
206220 `INSERT INTO %s (id, name, val) VALUES (2, 'cdc', 'compressed value')` , srcFullName )))
207221
208222 EnvWaitFor (s .t , env , 3 * time .Minute , "waiting for compressed column error" , func () bool {
0 commit comments