diff options
| author | 2022-08-25 23:16:24 +0200 | |
|---|---|---|
| committer | 2022-08-25 23:16:24 +0200 | |
| commit | 03f5a42640928a11cbf5e7c63642c0e7eeca4706 (patch) | |
| tree | 0b047613f862806b7aa3b1466f97a5eed85aae5a | |
| parent | 2b1aa7eedeba6058b8cc7cca261bf379462f3655 (diff) | |
Fix MariaDB case sensitivity (#4537)
* Fix MariaDB case sensitivity
#fix https://github.com/FreshRSS/FreshRSS/issues/4535
Collation regression from https://github.com/FreshRSS/FreshRSS/pull/4505
* faster
* Minor syntax
* Minor parentheses
| -rw-r--r-- | app/Models/EntryDAO.php | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/app/Models/EntryDAO.php b/app/Models/EntryDAO.php index 7cefc8c0e..424f682a8 100644 --- a/app/Models/EntryDAO.php +++ b/app/Models/EntryDAO.php @@ -978,18 +978,26 @@ SQL; if ($filter->getSearch()) { foreach ($filter->getSearch() as $search_value) { - $sub_search .= 'AND (' . $alias . 'title LIKE ? OR ' . - (static::isCompressed() ? 'UNCOMPRESS(' . $alias . 'content_bin)' : '' . $alias . 'content') . ' LIKE ?) '; - $values[] = "%{$search_value}%"; - $values[] = "%{$search_value}%"; + if (static::isCompressed()) { // MySQL-only + $sub_search .= 'AND CONCAT(' . $alias . 'title, UNCOMPRESS(' . $alias . 'content_bin)) LIKE ? '; + $values[] = "%{$search_value}%"; + } else { + $sub_search .= 'AND (' . $alias . 'title LIKE ? OR ' . $alias . 'content LIKE ?) '; + $values[] = "%{$search_value}%"; + $values[] = "%{$search_value}%"; + } } } if ($filter->getNotSearch()) { foreach ($filter->getNotSearch() as $search_value) { - $sub_search .= 'AND ' . $alias . 'title NOT LIKE ? AND ' . - (static::isCompressed() ? 'UNCOMPRESS(' . $alias . 'content_bin)' : '' . $alias . 'content') . ' NOT LIKE ? '; - $values[] = "%{$search_value}%"; - $values[] = "%{$search_value}%"; + if (static::isCompressed()) { // MySQL-only + $sub_search .= 'AND CONCAT(' . $alias . 'title, UNCOMPRESS(' . $alias . 'content_bin)) NOT LIKE ? '; + $values[] = "%{$search_value}%"; + } else { + $sub_search .= 'AND ' . $alias . 'title NOT LIKE ? AND ' . $alias . 'content NOT LIKE ? '; + $values[] = "%{$search_value}%"; + $values[] = "%{$search_value}%"; + } } } |
