X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=FS%2Fbin%2Ffreeside-upgrade;h=48304d319213c65e044c05b00a8360644d37dcec;hb=c507a3d05881888d1181eac9f128b391b6ce3d19;hp=d3723a1887d26d54d5821302a074117940f4048c;hpb=3fbf293ee485c7b9245d1fadeb69c9b06ec075ed;p=freeside.git diff --git a/FS/bin/freeside-upgrade b/FS/bin/freeside-upgrade index d3723a188..48304d319 100755 --- a/FS/bin/freeside-upgrade +++ b/FS/bin/freeside-upgrade @@ -71,6 +71,19 @@ if ( dbdef->table('cgp_rule_condition') && } +if ( dbdef->table('areacode') and + dbdef->table('areacode')->primary_key eq 'code' ) +{ + if ( driver_name =~ /^mysql/i ) { + push @bugfix, + 'ALTER TABLE areacode DROP PRIMARY KEY', + 'ALTER TABLE areacode ADD COLUMN (areanum int auto_increment primary key)'; + } + else { + push @bugfix, 'ALTER TABLE areacode DROP CONSTRAINT areacode_pkey'; + } +} + if ( $DRY_RUN ) { print join(";\n", @bugfix ). ";\n"; @@ -99,6 +112,19 @@ my @statements = dbdef->sql_update_schema( dbdef_dist(datasrc), { 'nullify_default' => 1, }, ); +#### NEW CUSTOM FIELDS (prevent columns from being dropped by upgrade) +my $cfsth = $dbh->prepare("SELECT * FROM part_virtual_field") + or die $dbh->errstr; +$cfsth->execute or die $cfsth->errstr; +my $cf; +# likely a very inefficient implementation of this +while ( $cf = $cfsth->fetchrow_hashref ) { + my $tbl = $cf->{'dbtable'}; + my $name = $cf->{'name'}; + @statements = grep { $_ !~ /^\s*ALTER\s+TABLE\s+$tbl\s+DROP\s+COLUMN\s+cf_$name\s*$/i } + @statements; +} + @statements = grep { $_ !~ /^CREATE +INDEX +h_queue/i } #useless, holds up queue insertion @statements;