[Jifty-commit] r6780 - jifty/trunk/lib/Jifty

Jifty commits jifty-commit at lists.jifty.org
Wed Apr 15 13:40:57 EDT 2009


Author: ruz
Date: Wed Apr 15 13:40:56 2009
New Revision: 6780

Modified:
   jifty/trunk/lib/Jifty/Upgrade.pm

Log:
* migrate to rename_table/rename_column in the JDBI

Modified: jifty/trunk/lib/Jifty/Upgrade.pm
==============================================================================
--- jifty/trunk/lib/Jifty/Upgrade.pm	(original)
+++ jifty/trunk/lib/Jifty/Upgrade.pm	Wed Apr 15 13:40:56 2009
@@ -113,60 +113,15 @@
     my $renamed = $package->just_renamed || {};
 
     if ( $args{column} ) {
-        my $driver = Jifty->config->framework('Database')->{'Driver'};
-        if ( $driver =~ /SQLite/ ) {
 
-            # Convert columns
-            my ($schema) = Jifty->handle->fetch_result("SELECT sql FROM sqlite_master WHERE tbl_name = '$table_name' AND type = 'table'");
-
-            $schema =~ s/(.*create\s+table\s+)\S+(.*?\(\s*)//i or die "Cannot find 'CREATE TABLE' statement in schema for '$table_name': $schema";
-
-            my $new_table_name    = join( '_', $table_name, 'new', $$ );
-            my $new_create_clause = "$1$new_table_name$2";
-
-            my @column_info = ( split /,/, $schema );
-            my @column_names = map { /^\s*(\S+)/ ? $1 : () } @column_info;
-
-            s/^(\s*)\b\Q$args{column}\E\b/$1$args{to}/i for @column_info;
-
-            my $new_schema = $new_create_clause . join( ',', @column_info );
-            my $copy_columns = join(
-                ', ',
-                map {
-                    ( lc($_) eq lc( $args{column} ) )
-                      ? "$_ AS $args{to}"
-                      : $_
-                  } @column_names
-            );
-
-            # Convert indices
-            my $indice_sth = Jifty->handle->simple_query("SELECT sql FROM sqlite_master WHERE tbl_name = '$table_name' AND type = 'index'");
-            my @indice_sql;
-            while ( my ($index) = $indice_sth->fetchrow_array ) {
-                $index =~ s/^(.*\(.*)\b\Q$args{column}\E\b/$1$args{to}/i;
-                push @indice_sql, $index;
-            }
-            $indice_sth->finish;
-
-            # Run the conversion SQLs
-            Jifty->handle->begin_transaction;
-            Jifty->handle->simple_query($new_schema);
-            Jifty->handle->simple_query("INSERT INTO $new_table_name SELECT $copy_columns FROM $table_name");
-            Jifty->handle->simple_query("DROP TABLE $table_name");
-            Jifty->handle->simple_query("ALTER TABLE $new_table_name RENAME TO $table_name");
-            Jifty->handle->simple_query($_) for @indice_sql;
-            Jifty->handle->commit;
-        }
-        else {
-            Jifty->handle->simple_query("ALTER TABLE $table_name RENAME $args{column} TO $args{to}");
-        }
+        Jifty->handle->rename_column( %args, table => $table_name );
 
         # Mark this table column as renamed
         $renamed->{ $table_name }{'drop'}{ $args{'column'} } = $args{'to'};
         $renamed->{ $table_name }{'add' }{ $args{'to'    } } = $args{'column'};
     }
     else {
-        Jifty->handle->simple_query("ALTER TABLE $table_name RENAME TO $args{to}");
+        Jifty->handle->rename_table( %args, table => $table_name );
 
         # Mark this table as renamed
         $renamed->{ $table_name }{'drop_table'} = $args{'to'};
@@ -177,8 +132,6 @@
     $package->just_renamed($renamed);
 }
 
-
-
 =head1 SEE ALSO
 
 L<Jifty::Manual::Upgrading>


More information about the Jifty-commit mailing list