]> git.ipfire.org Git - thirdparty/bacula.git/commitdiff
baculum: Fix file search for text that isn't lower-case in MySQL/MariaDB database
authorMarcin Haba <marcin.haba@bacula.pl>
Mon, 14 Feb 2022 06:47:10 +0000 (07:47 +0100)
committerMarcin Haba <marcin.haba@bacula.pl>
Mon, 14 Feb 2022 06:47:27 +0000 (07:47 +0100)
gui/baculum/protected/API/Class/JobManager.php

index 970b58c6f8dd83210f0f33b225bfd7e020462502..b210525b737500e67baba17e7c5c95db46aece4a 100644 (file)
@@ -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)';
                }