[Rt-commit] rt branch, 4.0/upgrade-mysql-schema-case-sesitivity, created. rt-4.0.4-42-gea76516
Ruslan Zakirov
ruz at bestpractical.com
Fri Nov 11 10:14:19 EST 2011
The branch, 4.0/upgrade-mysql-schema-case-sesitivity has been created
at ea76516f4295859380c9fa62fea328463ad1c7f2 (commit)
- Log -----------------------------------------------------------------
commit ea76516f4295859380c9fa62fea328463ad1c7f2
Author: Ruslan Zakirov <ruz at bestpractical.com>
Date: Fri Nov 11 19:11:30 2011 +0400
searches in info schema should be forced to be case insensitive
information_schema searches can be case sensitive
and users may use lower_case_table_names, use LOWER
for everything just in case
http://dev.mysql.com/doc/refman/5.1/en/charset-collation-information-schema.html
diff --git a/etc/upgrade/upgrade-mysql-schema.pl b/etc/upgrade/upgrade-mysql-schema.pl
index 2343c07..7bc6806 100755
--- a/etc/upgrade/upgrade-mysql-schema.pl
+++ b/etc/upgrade/upgrade-mysql-schema.pl
@@ -439,11 +439,15 @@ sub build_column_definition {
sub column_byte_length {
my ($table, $column) = @_;
if ( $version >= 5.0 ) {
+ # information_schema searches can be case sensitive
+ # and users may use lower_case_table_names, use LOWER
+ # for everything just in case
+ # http://dev.mysql.com/doc/refman/5.1/en/charset-collation-information-schema.html
my ($char, $octet) = @{ $dbh->selectrow_arrayref(
"SELECT CHARACTER_MAXIMUM_LENGTH, CHARACTER_OCTET_LENGTH FROM information_schema.COLUMNS WHERE"
- ." TABLE_SCHEMA = ". $dbh->quote($db_name)
- ." AND TABLE_NAME = ". $dbh->quote($table)
- ." AND COLUMN_NAME = ". $dbh->quote($column)
+ ." LOWER(TABLE_SCHEMA) = ". lc( $dbh->quote($db_name) )
+ ." AND LOWER(TABLE_NAME) = ". lc( $dbh->quote($table) )
+ ." AND LOWER(COLUMN_NAME) = ". lc( $dbh->quote($column) )
) };
return $octet if $octet == $char;
}
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list