[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