Commit 993f0b35 authored by mkanat%kerio.com's avatar mkanat%kerio.com

Bug 284599: Use of REGEXP search is not consistent wrt case sensitivity

Patch By Tomas Kopal <Tomas.Kopal@altap.cz> r=mkanat, a=justdave
parent 57394ff0
...@@ -1199,7 +1199,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>. ...@@ -1199,7 +1199,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>.
=item C<sql_regexp> =item C<sql_regexp>
Description: Outputs SQL regular expression operator for POSIX regex Description: Outputs SQL regular expression operator for POSIX regex
searches in format suitable for a given database. searches (case insensitive) in format suitable for a given
database.
Abstract method, should be overriden by database specific code. Abstract method, should be overriden by database specific code.
Params: none Params: none
Returns: formatted SQL for regular expression search (e.g. REGEXP) Returns: formatted SQL for regular expression search (e.g. REGEXP)
...@@ -1208,7 +1209,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>. ...@@ -1208,7 +1209,8 @@ formatted SQL command have prefix C<sql_>. All other methods have prefix C<bz_>.
=item C<sql_not_regexp> =item C<sql_not_regexp>
Description: Outputs SQL regular expression operator for negative POSIX Description: Outputs SQL regular expression operator for negative POSIX
regex searches in format suitable for a given database. regex searches (case insensitive) in format suitable for a given
database.
Abstract method, should be overriden by database specific code. Abstract method, should be overriden by database specific code.
Params: none Params: none
Returns: formatted SQL for negative regular expression search Returns: formatted SQL for negative regular expression search
......
...@@ -87,11 +87,11 @@ sub bz_last_key { ...@@ -87,11 +87,11 @@ sub bz_last_key {
} }
sub sql_regexp { sub sql_regexp {
return "~"; return "~*";
} }
sub sql_not_regexp { sub sql_not_regexp {
return "!~" return "!~*"
} }
sub sql_limit { sub sql_limit {
......
...@@ -1000,10 +1000,10 @@ sub init { ...@@ -1000,10 +1000,10 @@ sub init {
$term = $dbh->sql_position(lc($q), "LOWER($ff)") . " = 0"; $term = $dbh->sql_position(lc($q), "LOWER($ff)") . " = 0";
}, },
",regexp" => sub { ",regexp" => sub {
$term = "LOWER($ff) " . $dbh->sql_regexp() . " $q"; $term = "$ff " . $dbh->sql_regexp() . " $q";
}, },
",notregexp" => sub { ",notregexp" => sub {
$term = "LOWER($ff) " . $dbh->sql_not_regexp() . " $q"; $term = "$ff " . $dbh->sql_not_regexp() . " $q";
}, },
",lessthan" => sub { ",lessthan" => sub {
$term = "$ff < $q"; $term = "$ff < $q";
...@@ -1506,7 +1506,7 @@ sub GetByWordList { ...@@ -1506,7 +1506,7 @@ sub GetByWordList {
$word =~ s/^'//; $word =~ s/^'//;
$word =~ s/'$//; $word =~ s/'$//;
$word = '(^|[^a-z0-9])' . $word . '($|[^a-z0-9])'; $word = '(^|[^a-z0-9])' . $word . '($|[^a-z0-9])';
push(@list, "lower($field) " . $dbh->sql_regexp() . " '$word'"); push(@list, "$field " . $dbh->sql_regexp() . " '$word'");
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment