]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
Fix some SQL filters for MySQL
authorEric Bollengier <eric@baculasystems.com>
Mon, 23 May 2022 16:45:00 +0000 (18:45 +0200)
committerEric Bollengier <eric@baculasystems.com>
Thu, 14 Sep 2023 11:56:58 +0000 (13:56 +0200)
The ILIKE operator doesn't exist for MySQL. We replace it by lower(a) LIKE ('str')

bacula/src/cats/sql_list.c

index 61b17d24723782ebfe4fbf50dceabf2330c3d85f..a47f906d1a20f2893ca6413539c951e4b2a3f838 100644 (file)
@@ -111,7 +111,7 @@ bool BDB::bdb_search_job_records(JCR *jcr, JOB_DBR *jr,
    Mmsg(cmd,
         "SELECT Job "
         "FROM Job "
-        " %s WHERE Job.Job ILIKE '%%%s%%' %s", join, esc, where_tmp);
+        " %s WHERE lower(Job.Job) LIKE lower('%%%s%%') %s", join, esc, where_tmp);
 
    if (jr->limit > 0) {
       char ed1[50];
@@ -140,7 +140,7 @@ bool BDB::bdb_search_client_records(JCR *jcr, CLIENT_DBR *rec, DB_RESULT_HANDLER
    where_tmp = get_acls(DB_ACL_BIT(DB_ACL_CLIENT), 0);
 
    Mmsg(cmd, "SELECT Name "
-        "FROM Client WHERE Name ILIKE '%%%s%%' %s",
+        "FROM Client WHERE lower(Name) LIKE lower('%%%s%%') %s",
         esc, where_tmp);
 
    if (rec->limit > 0) {
@@ -443,7 +443,7 @@ bool BDB::bdb_search_media_records(JCR *jcr, MEDIA_DBR *mdbr,
       mdbr->limit = 50;
    }
 
-   Mmsg(cmd, "SELECT VolumeName FROM Media %s WHERE Media.VolumeName ILIKE '%%%s%%' %s LIMIT %u",
+   Mmsg(cmd, "SELECT VolumeName FROM Media %s WHERE lower(Media.VolumeName) LIKE lower('%%%s%%') %s LIMIT %u",
         join,
         esc,
         where,
@@ -811,7 +811,7 @@ void BDB::bdb_list_joblog_records(JCR *jcr, uint32_t JobId, const char *pattern,
       POOL_MEM esc;
       esc.check_size(strlen(pattern) * 2 + 1);
       bdb_escape_string(jcr, esc.c_str(), pattern, strlen(pattern));
-      Mmsg(tmp, "Log.LogText ILIKE '%%%s%%' ", esc.c_str());
+      Mmsg(tmp, "lower(Log.LogText) LIKE lower('%%%s%%') ", esc.c_str());
       append_filter(where2.handle(), tmp.c_str());
    }