Changeset 440 for wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/Pg.pm
- Timestamp:
- 05/12/08 01:21:15 (4 years ago)
- Files:
-
- 1 modified
-
wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/Pg.pm (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
wiki-toolkit/trunk/lib/Wiki/Toolkit/Setup/Pg.pm
r438 r440 16 16 17 17 my $create_sql = { 18 8 => { 19 schema_info => [ qq| 20 CREATE TABLE schema_info ( 21 version integer NOT NULL default 0 22 ) 23 |, qq| 24 INSERT INTO schema_info VALUES (8) 25 | ], 26 27 node => [ qq| 28 CREATE SEQUENCE node_seq 29 |, qq| 30 CREATE TABLE node ( 31 id integer NOT NULL DEFAULT NEXTVAL('node_seq'), 32 name varchar(200) NOT NULL DEFAULT '', 33 version integer NOT NULL default 0, 34 text text NOT NULL default '', 35 modified timestamp without time zone default NULL, 36 CONSTRAINT pk_id PRIMARY KEY (id) 37 ) 38 |, qq| 39 CREATE UNIQUE INDEX node_name ON node (name) 40 | ], 41 42 content => [ qq| 43 CREATE TABLE content ( 44 node_id integer NOT NULL, 45 version integer NOT NULL default 0, 46 text text NOT NULL default '', 47 modified timestamp without time zone default NULL, 48 comment text NOT NULL default '', 49 CONSTRAINT pk_node_id PRIMARY KEY (node_id,version), 50 CONSTRAINT fk_node_id FOREIGN KEY (node_id) REFERENCES node (id) 51 ) 52 | ], 53 54 internal_links => [ qq| 55 CREATE TABLE internal_links ( 56 link_from varchar(200) NOT NULL default '', 57 link_to varchar(200) NOT NULL default '' 58 ) 59 |, qq| 60 CREATE UNIQUE INDEX internal_links_pkey ON internal_links (link_from, link_to) 61 | ], 62 63 metadata => [ qq| 64 CREATE TABLE metadata ( 65 node_id integer NOT NULL, 66 version integer NOT NULL default 0, 67 metadata_type varchar(200) NOT NULL DEFAULT '', 68 metadata_value text NOT NULL DEFAULT '', 69 CONSTRAINT fk_node_id FOREIGN KEY (node_id) REFERENCES node (id) 70 ) 71 |, qq| 72 CREATE INDEX metadata_index ON metadata (node_id, version, metadata_type, metadata_value) 73 | ] 74 75 }, 18 76 9 => { 19 77 schema_info => [ qq| … … 113 171 ALTER TABLE metadata ADD CONSTRAINT fk_node_id FOREIGN KEY (node_id) REFERENCES node (id); 114 172 CREATE INDEX metadata_index ON metadata (node_id, version, metadata_type, metadata_value) 173 |, 174 175 qq| 176 CREATE TABLE schema_info (version integer NOT NULL default 0); 177 INSERT INTO schema_info VALUES (8) 115 178 | 116 179 ], … … 126 189 ALTER TABLE content ALTER COLUMN moderated SET DEFAULT '1'; 127 190 ALTER TABLE content ALTER COLUMN moderated SET NOT NULL; 191 UPDATE schema_info SET version = 9; 128 192 | 129 193 ], … … 185 249 my $wanted_schema = _get_wanted_schema( @args ) || $SCHEMA_VERSION; 186 250 251 die "No schema information for requested schema version $wanted_schema\n" 252 unless $create_sql->{$wanted_schema}; 253 187 254 # Check whether tables exist 188 255 my $sql = "SELECT tablename FROM pg_tables 189 256 WHERE tablename in (" 190 . join( ",", map { $dbh->quote($_) } keys %{$create_sql->{$ SCHEMA_VERSION}} ) . ")";257 . join( ",", map { $dbh->quote($_) } keys %{$create_sql->{$wanted_schema}} ) . ")"; 191 258 my $sth = $dbh->prepare($sql) or croak $dbh->errstr; 192 259 $sth->execute; 193 260 my %tables; 194 261 while ( my $table = $sth->fetchrow_array ) { 195 exists $create_sql->{$ SCHEMA_VERSION}->{$table} and $tables{$table} = 1;262 exists $create_sql->{$wanted_schema}->{$table} and $tables{$table} = 1; 196 263 } 197 264 … … 206 273 207 274 # Set up tables if not found 208 foreach my $required ( reverse sort keys %{$create_sql->{$ SCHEMA_VERSION}} ) {275 foreach my $required ( reverse sort keys %{$create_sql->{$wanted_schema}} ) { 209 276 if ( $tables{$required} ) { 210 277 print "Table $required already exists... skipping...\n"; 211 278 } else { 212 279 print "Creating table $required... done\n"; 213 foreach my $sql ( @{ $create_sql->{$ SCHEMA_VERSION}->{$required} } ) {280 foreach my $sql ( @{ $create_sql->{$wanted_schema}->{$required} } ) { 214 281 $dbh->do($sql) or croak $dbh->errstr; 215 282 } … … 329 396 return $args{wanted_schema}; 330 397 } 331 332 # Args passed as list of connection details.333 return $_[1];334 398 } 335 399
