Commit 3a5de3cb authored by bugreport%peshkin.net's avatar bugreport%peshkin.net

Bug 243351: Fix mysql version sensitivity in case-sensitive search

r=jouni a=justdave
parent c5718f38
...@@ -164,6 +164,16 @@ sub _handle_error { ...@@ -164,6 +164,16 @@ sub _handle_error {
return 0; # Now let DBI handle raising the error return 0; # Now let DBI handle raising the error
} }
my $cached_server_version;
sub server_version {
return $cached_server_version if defined($cached_server_version);
my $dbh = Bugzilla->dbh;
my $sth = $dbh->prepare('SELECT VERSION()');
$sth->execute();
($cached_server_version) = $sth->fetchrow_array();
return $cached_server_version;
}
1; 1;
__END__ __END__
......
...@@ -711,7 +711,15 @@ sub init { ...@@ -711,7 +711,15 @@ sub init {
$term = "$ff != $q"; $term = "$ff != $q";
}, },
",casesubstring" => sub { ",casesubstring" => sub {
$term = "INSTR(CAST($ff AS BINARY), CAST($q AS BINARY))"; # mysql 4.0.1 and lower do not support CAST
# mysql 3.*.* had a case-sensitive INSTR
# (checksetup has a check for unsupported versions)
my $server_version = Bugzilla::DB->server_version;
if ($server_version =~ /^3\./) {
$term = "INSTR($ff ,$q)";
} else {
$term = "INSTR(CAST($ff AS BINARY), CAST($q AS BINARY))";
}
}, },
",substring" => sub { ",substring" => sub {
$term = "INSTR(LOWER($ff), " . lc($q) . ")"; $term = "INSTR(LOWER($ff), " . lc($q) . ")";
......
...@@ -1449,6 +1449,11 @@ if ($my_db_check) { ...@@ -1449,6 +1449,11 @@ if ($my_db_check) {
" Bugzilla requires version $sql_want or later of MySQL.\n" . " Bugzilla requires version $sql_want or later of MySQL.\n" .
" Please visit http://www.mysql.com/ and download a newer version.\n"; " Please visit http://www.mysql.com/ and download a newer version.\n";
} }
if (( $sql_vers =~ /^4\.0\.(\d+)/ ) && ($1 < 2)) {
die "\nYour MySQL server is incompatible with Bugzilla.\n" .
" Bugzilla does not support versions 4.x.x below 4.0.2.\n" .
" Please visit http://www.mysql.com/ and download a newer version.\n";
}
my @databases = $dbh->func('_ListDBs'); my @databases = $dbh->func('_ListDBs');
unless (grep /^$my_db_name$/, @databases) { unless (grep /^$my_db_name$/, @databases) {
......
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