summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wells <mark@freeside.biz>2014-06-13 12:40:33 -0700
committerMark Wells <mark@freeside.biz>2014-06-13 12:40:33 -0700
commit979d73df228b7c22f72f7b93d90d23f695f8586b (patch)
treeccdac302305ec4e5c26b2bb336350bb24ffb0aa3
parenta55ce3e56422a6dbcd0f20a94c151a69fb41c02e (diff)
DBSchema 0.41 and case sensitivity fixes for RT upgrade, #28895
-rw-r--r--FS/FS/TicketSystem.pm24
1 files changed, 15 insertions, 9 deletions
diff --git a/FS/FS/TicketSystem.pm b/FS/FS/TicketSystem.pm
index 7339d74..e81d893 100644
--- a/FS/FS/TicketSystem.pm
+++ b/FS/FS/TicketSystem.pm
@@ -61,7 +61,11 @@ sub _upgrade_schema {
%{ $columns{$tablename}->{$colname} }
};
$col->table_obj($table);
- push @sql, $col->sql_add_column($dbh);
+ my ($alter, $postalter) = $col->sql_add_column($dbh);
+ foreach (@$alter) {
+ push @sql, "ALTER TABLE $tablename $_;";
+ }
+ push @sql, @$postalter;
}
} #foreach $colname
} #foreach $tablename
@@ -355,12 +359,14 @@ sub _upgrade_data {
for my $table (keys %target_pkey) {
my $pkey = $target_pkey{$table};
my $rows = $dbh->do(
- "DELETE FROM links WHERE id IN(".
- "SELECT links.id FROM links LEFT JOIN $table ON (links.target = ".
- "'freeside://freeside/$table/' || $table.$pkey) ".
- "WHERE links.target like 'freeside://freeside/$table/%' ".
- "AND $table.$pkey IS NULL".
- ")"
+ "DELETE FROM Links WHERE id IN(
+ SELECT id FROM (
+ SELECT Links.id FROM Links LEFT JOIN $table ON (Links.Target =
+ 'freeside://freeside/$table/' || $table.$pkey)
+ WHERE Links.Target like 'freeside://freeside/$table/%'
+ AND $table.$pkey IS NULL
+ ) AS x
+ )"
) or die $dbh->errstr;
warn "Removed $rows dangling ticket-$table links\n" if $rows > 0;
}
@@ -369,8 +375,8 @@ sub _upgrade_data {
# OldValue, though this is not known to happen) is an empty string
foreach (qw(newvalue oldvalue)) {
my $rows = $dbh->do(
- "UPDATE transactions SET $_ = '0' WHERE objecttype='RT::Ticket' AND ".
- "field IN ('TimeWorked', 'TimeEstimated', 'TimeLeft') AND $_ = ''"
+ "UPDATE Transactions SET $_ = '0' WHERE ObjectType='RT::Ticket' AND ".
+ "Field IN ('TimeWorked', 'TimeEstimated', 'TimeLeft') AND $_ = ''"
) or die $dbh->errstr;
warn "Fixed $rows transactions with empty time values\n" if $rows > 0;
}