Changeset 450
- Timestamp:
- 07/12/08 01:49:47 (4 years ago)
- Location:
- wiki-toolkit/trunk
- Files:
-
- 2 modified
-
lib/Wiki/Toolkit/Setup/MySQL.pm (modified) (2 diffs)
-
t/400_upgrade.t (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/MySQL.pm
r444 r450 179 179 180 180 my %upgrades = ( 181 '9_to_10' => [ qq| 182 CREATE UNIQUE INDEX node_name ON node (name) 183 |, qq| 181 '9_to_10' => [ sub { 182 my $dbh = shift; 183 my $sth = $dbh->prepare('SHOW INDEX FROM node WHERE key_name="node_name"'); 184 $sth->execute(); 185 unless ( $sth->rows ) { 186 $dbh->do('CREATE UNIQUE INDEX node_name ON node (name)') 187 or croak $dbh->errstr; 188 } 189 }, 190 qq| 184 191 ALTER TABLE content ADD COLUMN verified datetime default NULL 185 192 |, qq| … … 187 194 |, qq| 188 195 UPDATE schema_info SET version = 10 189 | 190 ], 196 | ] 197 191 198 ); 192 199 -
wiki-toolkit/trunk/t/400_upgrade.t
r448 r450 31 31 use Wiki::Toolkit::Setup::SQLite; 32 32 33 my $num_mysql_only_tests = 0; 34 my @mysql_databases; 35 33 36 foreach my $db (@configured_databases) { 34 37 my $setup_class = $db->{setup_class}; … … 42 45 push @schemas_to_test, $schema if $schema < $current_schema; 43 46 } 47 if ( $db->{dsn} =~ /mysql/i ) { 48 $num_mysql_only_tests = 2; 49 push @mysql_databases, $db; 50 } 44 51 } 45 52 46 plan tests => scalar @schemas_to_test * scalar @configured_databases * 2; 53 my $num_tests = (scalar @schemas_to_test * scalar @configured_databases * 2) + $num_mysql_only_tests; 54 plan tests => $num_tests; 47 55 48 56 foreach my $database (@configured_databases) { … … 92 100 } 93 101 } 102 103 if ( $num_mysql_only_tests ) { 104 foreach my $database ( @mysql_databases ) { 105 my $setup_class = $database->{setup_class}; 106 my $current_schema; 107 { 108 no strict 'refs'; 109 $current_schema = eval ${$setup_class . '::SCHEMA_VERSION'}; 110 } 111 # Set up database with old schema 112 my $params = $database->{params}; 113 $params->{wanted_schema} = 9; 114 115 { 116 no strict 'refs'; 117 eval &{$setup_class . '::cleardb'} ( $params ); 118 eval &{$setup_class . '::setup'} ( $params ); 119 } 120 121 my $class = $database->{class}; 122 eval "require $class"; 123 124 my $dsn = $database->{dsn}; 125 126 my $dbh = DBI->connect($dsn, $params->{dbuser}, $params->{dbpass}); 127 128 # Manually create index that the upgrade also wants to create 129 eval { $dbh->do('CREATE UNIQUE INDEX node_name ON node (name);') }; 130 is( $@, '', "Manually creating confusing index didn't die" ); 131 132 # Now upgrade 133 delete $params->{wanted_schema}; 134 { 135 no strict 'refs'; 136 eval &{$setup_class . '::setup'} ( $params ); 137 is( $@, '', "Upgrade didn't die even though node_name index had been created manually" ); 138 } 139 } 140 } 141
