[Rt-commit] r15728 - rt/3.8/trunk/etc/upgrade

ruz at bestpractical.com ruz at bestpractical.com
Wed Sep 3 16:51:05 EDT 2008


Author: ruz
Date: Wed Sep  3 16:51:05 2008
New Revision: 15728

Modified:
   rt/3.8/trunk/etc/upgrade/schema.mysql-4.0-4.1.pl

Log:
* check mysql version and use schema tables if it's mysql 5.0 and greater

Modified: rt/3.8/trunk/etc/upgrade/schema.mysql-4.0-4.1.pl
==============================================================================
--- rt/3.8/trunk/etc/upgrade/schema.mysql-4.0-4.1.pl	(original)
+++ rt/3.8/trunk/etc/upgrade/schema.mysql-4.0-4.1.pl	Wed Sep  3 16:51:05 2008
@@ -214,6 +214,8 @@
 my ($db_name, $db_user, $db_pass) = (shift, shift, shift);
 my $dbh = DBI->connect("dbi:mysql:$db_name", $db_user, $db_pass, { RaiseError => 1 });
 
+my $version = ($dbh->selectrow_array("show variables like 'version'"))[1];
+($version) = $version =~ /^(\d+\.\d+)/;
 
 push @sql_commands, qq{ALTER DATABASE $db_name DEFAULT CHARACTER SET utf8};
 convert_table($_) foreach @tables;
@@ -350,6 +352,14 @@
 
 sub column_byte_length {
     my ($table, $column) = @_;
+    if ( $version >= 5.0 ) {
+        return $dbh->selectrow_arrayref(
+            "SELECT 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)
+        )->[0];
+    }
     return $dbh->selectrow_arrayref("SELECT MAX(LENGTH(". $dbh->quote($column) .")) FROM $table")->[0];
 }
 


More information about the Rt-commit mailing list