Changeset 437 for wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/Pg.pm
- Timestamp:
- 05/11/08 20:24:34 (4 years ago)
- Files:
-
- 1 modified
-
wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/Pg.pm (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/Pg.pm
r432 r437 13 13 use Carp; 14 14 15 my %create_sql = ( 16 schema_info => [ qq| 15 my $SCHEMA_VERSION = $VERSION*100; 16 17 my $create_sql = { 18 9 => { 19 schema_info => [ qq| 17 20 CREATE TABLE schema_info ( 18 21 version integer NOT NULL default 0 19 22 ) 20 23 |, qq| 21 INSERT INTO schema_info VALUES ( |.($VERSION*100).qq|)24 INSERT INTO schema_info VALUES (9) 22 25 | ], 23 26 24 node => [ qq|27 node => [ qq| 25 28 CREATE SEQUENCE node_seq 26 29 |, qq| … … 38 41 | ], 39 42 40 content => [ qq|43 content => [ qq| 41 44 CREATE TABLE content ( 42 45 node_id integer NOT NULL, … … 51 54 | ], 52 55 53 internal_links => [ qq|56 internal_links => [ qq| 54 57 CREATE TABLE internal_links ( 55 58 link_from varchar(200) NOT NULL default '', … … 60 63 | ], 61 64 62 metadata => [ qq|65 metadata => [ qq| 63 66 CREATE TABLE metadata ( 64 67 node_id integer NOT NULL, … … 71 74 CREATE INDEX metadata_index ON metadata (node_id, version, metadata_type, metadata_value) 72 75 | ] 73 74 );76 }, 77 }; 75 78 76 79 my %upgrades = ( … … 180 183 my $dbh = _get_dbh( @args ); 181 184 my $disconnect_required = _disconnect_required( @args ); 185 my $wanted_schema = _get_wanted_schema( @args ) || $SCHEMA_VERSION; 182 186 183 187 # Check whether tables exist 184 188 my $sql = "SELECT tablename FROM pg_tables 185 189 WHERE tablename in (" 186 . join( ",", map { $dbh->quote($_) } keys % create_sql) . ")";190 . join( ",", map { $dbh->quote($_) } keys %{$create_sql->{$SCHEMA_VERSION}} ) . ")"; 187 191 my $sth = $dbh->prepare($sql) or croak $dbh->errstr; 188 192 $sth->execute; 189 193 my %tables; 190 194 while ( my $table = $sth->fetchrow_array ) { 191 exists $create_sql {$table} and $tables{$table} = 1;195 exists $create_sql->{$SCHEMA_VERSION}->{$table} and $tables{$table} = 1; 192 196 } 193 197 … … 196 200 my $upgrade_schema; 197 201 if(scalar keys %tables > 0) { 198 $upgrade_schema = Wiki::Toolkit::Setup::Database::get_database_upgrade_required($dbh,$ VERSION);202 $upgrade_schema = Wiki::Toolkit::Setup::Database::get_database_upgrade_required($dbh,$wanted_schema); 199 203 } else { 200 204 print "Skipping schema upgrade check - no tables found\n"; … … 202 206 203 207 # Set up tables if not found 204 foreach my $required ( reverse sort keys % create_sql) {208 foreach my $required ( reverse sort keys %{$create_sql->{$SCHEMA_VERSION}} ) { 205 209 if ( $tables{$required} ) { 206 210 print "Table $required already exists... skipping...\n"; 207 211 } else { 208 212 print "Creating table $required... done\n"; 209 foreach my $sql ( @{ $create_sql {$required} } ) {213 foreach my $sql ( @{ $create_sql->{$SCHEMA_VERSION}->{$required} } ) { 210 214 $dbh->do($sql) or croak $dbh->errstr; 211 215 } … … 272 276 my $sql = "SELECT tablename FROM pg_tables 273 277 WHERE tablename in (" 274 . join( ",", map { $dbh->quote($_) } keys % create_sql) . ")";278 . join( ",", map { $dbh->quote($_) } keys %{$create_sql->{$SCHEMA_VERSION}} ) . ")"; 275 279 foreach my $tableref (@{$dbh->selectall_arrayref($sql)}) { 276 280 $dbh->do("DROP TABLE $tableref->[0] CASCADE") or croak $dbh->errstr; … … 312 316 dbhost => $_[3], 313 317 ); 318 } 319 320 sub _get_wanted_schema { 321 # Database handle passed in. 322 if ( ref $_[0] and ref $_[0] eq 'DBI::db' ) { 323 return undef; 324 } 325 326 # Args passed as hashref. 327 if ( ref $_[0] and ref $_[0] eq 'HASH' ) { 328 my %args = %{$_[0]}; 329 return $args{wanted_schema}; 330 } 331 332 # Args passed as list of connection details. 333 return $_[1]; 314 334 } 315 335
