Bug 243351: Fix mysql version sensitivity in case-sensitive search
r=jouni a=justdave git-svn-id: svn://10.0.0.236/trunk@157000 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -164,6 +164,16 @@ sub _handle_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;
|
||||
|
||||
__END__
|
||||
|
||||
@@ -711,7 +711,15 @@ sub init {
|
||||
$term = "$ff != $q";
|
||||
},
|
||||
",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 {
|
||||
$term = "INSTR(LOWER($ff), " . lc($q) . ")";
|
||||
|
||||
@@ -1449,6 +1449,11 @@ if ($my_db_check) {
|
||||
" Bugzilla requires version $sql_want or later of MySQL.\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');
|
||||
unless (grep /^$my_db_name$/, @databases) {
|
||||
|
||||
Reference in New Issue
Block a user