@@ -178,10 +178,13 @@ class BookkeeperJdbc(db: Database, profile: JdbcProfile, batchId: Long) extends
178178
179179 override def deleteTable (tableName : String ): Seq [String ] = {
180180 val hasWildcard = tableName.contains(" *" )
181- val tableNameEscaped = if (hasWildcard)
182- tableName.trim.replace(" %" , " \\ %" ).replace('*' , '%' )
183- else
184- tableName.trim.replace(" %" , " \\ %" )
181+
182+ val escape = '\\ '
183+ val baseEscaped = tableName.trim
184+ .replace(" \\ " , " \\\\ " )
185+ .replace(" %" , " \\ %" )
186+
187+ val tableNameEscaped = if (hasWildcard) baseEscaped.replace(" *" , " %" ) else baseEscaped
185188
186189 val likePattern = if (! hasWildcard)
187190 tableNameEscaped + " ->%"
@@ -194,7 +197,7 @@ class BookkeeperJdbc(db: Database, profile: JdbcProfile, batchId: Long) extends
194197 s " ' $tableNameEscaped' or ' $likePattern' "
195198
196199 val listQuery = BookkeepingRecords .records
197- .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern))
200+ .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern, escape ))
198201 .map(_.pramenTableName)
199202 .distinct
200203
@@ -212,19 +215,19 @@ class BookkeeperJdbc(db: Database, profile: JdbcProfile, batchId: Long) extends
212215 log.info(s " Deleted $deletedBkCount records from the bookkeeping table for tables matching $patternForLogging: ${tablesToDelete.mkString(" , " )}" )
213216
214217 val deletedSchemaCount = SlickUtils .executeAction(db, SchemaRecords .records
215- .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern))
218+ .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern, escape ))
216219 .delete
217220 )
218221 log.info(s " Deleted $deletedSchemaCount records from the schemas table. " )
219222
220223 val deletedOffsetsCount = SlickUtils .executeAction(db, OffsetRecords .records
221- .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern))
224+ .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern, escape ))
222225 .delete
223226 )
224227 log.info(s " Deleted $deletedOffsetsCount records from the offsets table. " )
225228
226229 val deletedMetadataCount = SlickUtils .executeAction(db, MetadataRecords .records
227- .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern))
230+ .filter(r => r.pramenTableName === tableNameEscaped || r.pramenTableName.like(likePattern, escape ))
228231 .delete
229232 )
230233 log.info(s " Deleted $deletedMetadataCount records from the metadata table. " )
0 commit comments