From: Marcin Haba Date: Mon, 14 Feb 2022 06:47:10 +0000 (+0100) Subject: baculum: Fix file search for text that isn't lower-case in MySQL/MariaDB database X-Git-Tag: Release-11.0.6~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ed8d5baf69467374fc95697e0f09f34f478221c;p=thirdparty%2Fbacula.git baculum: Fix file search for text that isn't lower-case in MySQL/MariaDB database --- diff --git a/gui/baculum/protected/API/Class/JobManager.php b/gui/baculum/protected/API/Class/JobManager.php index 970b58c6f..b210525b7 100644 --- a/gui/baculum/protected/API/Class/JobManager.php +++ b/gui/baculum/protected/API/Class/JobManager.php @@ -336,13 +336,20 @@ WHERE Client.ClientId='$clientid' $wh"; default: $type_crit = ' AND FileIndex > 0 '; break; } + $db_params = $this->getModule('api_config')->getConfig('db'); $search_crit = ''; if (is_string($search)) { - $search_crit = " AND (LOWER(Path.Path) LIKE LOWER('%$search%') OR LOWER(File.Filename) LIKE LOWER('%$search%')) "; + $path_col = 'Path.Path'; + $filename_col = 'File.Filename'; + if ($db_params['type'] === Database::MYSQL_TYPE) { + // Conversion is required because LOWER() and UPPER() do not work with BLOB data type. + $path_col = "CONVERT($path_col USING utf8mb4)"; + $filename_col = "CONVERT($filename_col USING utf8mb4)"; + } + $search_crit = " AND (LOWER($path_col) LIKE LOWER('%$search%') OR LOWER($filename_col) LIKE LOWER('%$search%')) "; } $fname_col = 'Path.Path || File.Filename'; - $db_params = $this->getModule('api_config')->getConfig('db'); if ($db_params['type'] === Database::MYSQL_TYPE) { $fname_col = 'CONCAT(Path.Path, File.Filename)'; }