From 0800bc59a47fd6cfe2f4463207e9e47d7a0edfc4 Mon Sep 17 00:00:00 2001 From: Seamus Lee Date: Sun, 17 Jan 2021 14:09:29 +1100 Subject: [PATCH] REF Ensure that when doing RLIKE BINARY the field is cast as BINARY to prevent issue on MySQL 8 --- CRM/Contact/BAO/Query.php | 2 +- tests/phpunit/CRM/Contact/SelectorTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CRM/Contact/BAO/Query.php b/CRM/Contact/BAO/Query.php index f34429084e..c296260208 100644 --- a/CRM/Contact/BAO/Query.php +++ b/CRM/Contact/BAO/Query.php @@ -5628,7 +5628,7 @@ civicrm_relationship.start_date > {$today} return $clause; case 'RLIKE': - return " {$clause} BINARY '{$value}' "; + return " CAST({$field} AS BINARY) RLIKE BINARY '{$value}' "; case 'IN': case 'NOT IN': diff --git a/tests/phpunit/CRM/Contact/SelectorTest.php b/tests/phpunit/CRM/Contact/SelectorTest.php index 5316ebbd23..04a9e968f8 100644 --- a/tests/phpunit/CRM/Contact/SelectorTest.php +++ b/tests/phpunit/CRM/Contact/SelectorTest.php @@ -552,7 +552,7 @@ AND ( 1 ) AND (contact_a.is_deleted = 0)', // case insensitive check 'LIKE' => "( contact_a.first_name LIKE '%Ad%' )", // case sensitive check - 'RLIKE' => "( contact_a.first_name RLIKE BINARY '^A[a-z]{3}$' )", + 'RLIKE' => "( CAST(contact_a.first_name AS BINARY) RLIKE BINARY '^A[a-z]{3}$' )", // case sensitive check 'IN' => '( contact_a.first_name IN ("Adam") )', ]; -- 2.25.1