From: Eric Bollengier Date: Mon, 23 May 2022 16:45:00 +0000 (+0200) Subject: Fix some SQL filters for MySQL X-Git-Tag: Beta-15.0.0~573 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f35daef9d85ee8dd171ee9c7c01899dbd989286e;p=thirdparty%2Fbacula.git Fix some SQL filters for MySQL The ILIKE operator doesn't exist for MySQL. We replace it by lower(a) LIKE ('str') --- diff --git a/bacula/src/cats/sql_list.c b/bacula/src/cats/sql_list.c index 61b17d247..a47f906d1 100644 --- a/bacula/src/cats/sql_list.c +++ b/bacula/src/cats/sql_list.c @@ -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()); }