Commit cef81246 authored by Max Kanat-Alexander's avatar Max Kanat-Alexander

Bug 569302: Make sure that Install::DB functions always print out a message

if they are conditionally doing something to the database. r=mkanat, a=mkanat (module owner)
parent 5b260d69
...@@ -1032,6 +1032,7 @@ sub _copy_from_comments_to_longdescs { ...@@ -1032,6 +1032,7 @@ sub _copy_from_comments_to_longdescs {
# 2000-11-27 For Bugzilla 2.5 and later. Copy data from 'comments' to # 2000-11-27 For Bugzilla 2.5 and later. Copy data from 'comments' to
# 'longdescs' - the new name of the comments table. # 'longdescs' - the new name of the comments table.
if ($dbh->bz_table_info('comments')) { if ($dbh->bz_table_info('comments')) {
print "Copying data from 'comments' to 'longdescs'...\n";
my $quoted_when = $dbh->quote_identifier('when'); my $quoted_when = $dbh->quote_identifier('when');
$dbh->do("INSERT INTO longdescs (bug_when, bug_id, who, thetext) $dbh->do("INSERT INTO longdescs (bug_when, bug_id, who, thetext)
SELECT $quoted_when, bug_id, who, comment SELECT $quoted_when, bug_id, who, comment
...@@ -1239,6 +1240,7 @@ sub _use_ip_instead_of_hostname_in_logincookies { ...@@ -1239,6 +1240,7 @@ sub _use_ip_instead_of_hostname_in_logincookies {
# #
# Use the ip, not the hostname, in the logincookies table # Use the ip, not the hostname, in the logincookies table
if ($dbh->bz_column_info("logincookies", "hostname")) { if ($dbh->bz_column_info("logincookies", "hostname")) {
print "Clearing the logincookies table...\n";
# We've changed what we match against, so all entries are now invalid # We've changed what we match against, so all entries are now invalid
$dbh->do("DELETE FROM logincookies"); $dbh->do("DELETE FROM logincookies");
...@@ -1978,9 +1980,11 @@ sub _copy_old_charts_into_database { ...@@ -1978,9 +1980,11 @@ sub _copy_old_charts_into_database {
my $all_name = "-All-"; my $all_name = "-All-";
my $open_name = "All Open"; my $open_name = "All Open";
$dbh->bz_start_transaction();
my $products = $dbh->selectall_arrayref("SELECT name FROM products"); my $products = $dbh->selectall_arrayref("SELECT name FROM products");
foreach my $product ((map { $_->[0] } @$products), "-All-") { foreach my $product ((map { $_->[0] } @$products), "-All-") {
print "$product:\n";
# First, create the series # First, create the series
my %queries; my %queries;
my %seriesids; my %seriesids;
...@@ -2029,8 +2033,9 @@ sub _copy_old_charts_into_database { ...@@ -2029,8 +2033,9 @@ sub _copy_old_charts_into_database {
my %data; my %data;
my $last_date = ""; my $last_date = "";
while (<$in>) { my @lines = <$in>;
if (/^(\d+\|.*)/) { while (my $line = shift @lines) {
if ($line =~ /^(\d+\|.*)/) {
my @numbers = split(/\||\r/, $1); my @numbers = split(/\||\r/, $1);
# Only take the first line for each date; it was possible to # Only take the first line for each date; it was possible to
...@@ -2053,6 +2058,9 @@ sub _copy_old_charts_into_database { ...@@ -2053,6 +2058,9 @@ sub _copy_old_charts_into_database {
$in->close; $in->close;
my $total_items = (scalar(@fields) + 1)
* scalar(keys %{ $data{'NEW'} });
my $count = 0;
foreach my $field (@fields, $open_name) { foreach my $field (@fields, $open_name) {
# Insert values into series_data: series_id, date, value # Insert values into series_data: series_id, date, value
my %fielddata = %{$data{$field}}; my %fielddata = %{$data{$field}};
...@@ -2064,6 +2072,8 @@ sub _copy_old_charts_into_database { ...@@ -2064,6 +2072,8 @@ sub _copy_old_charts_into_database {
# We prepared this above # We prepared this above
$seriesdatasth->execute($seriesids{$field}, $seriesdatasth->execute($seriesids{$field},
$date, $fielddata{$date} || 0); $date, $fielddata{$date} || 0);
indicate_progress({ total => $total_items,
current => ++$count, every => 100 });
} }
} }
...@@ -2090,6 +2100,8 @@ sub _copy_old_charts_into_database { ...@@ -2090,6 +2100,8 @@ sub _copy_old_charts_into_database {
} }
} }
} }
$dbh->bz_commit_transaction();
} }
} }
...@@ -2158,7 +2170,7 @@ sub _convert_attachments_filename_from_mediumtext { ...@@ -2158,7 +2170,7 @@ sub _convert_attachments_filename_from_mediumtext {
# and attachment.cgi now takes them out, but old ones need converting. # and attachment.cgi now takes them out, but old ones need converting.
my $ref = $dbh->bz_column_info("attachments", "filename"); my $ref = $dbh->bz_column_info("attachments", "filename");
if ($ref->{TYPE} ne 'varchar(100)') { if ($ref->{TYPE} ne 'varchar(100)') {
print "Removing paths from filenames in attachments table...\n"; print "Removing paths from filenames in attachments table...";
my $sth = $dbh->prepare("SELECT attach_id, filename FROM attachments " . my $sth = $dbh->prepare("SELECT attach_id, filename FROM attachments " .
"WHERE " . $dbh->sql_position(q{'/'}, 'filename') . " > 0 OR " . "WHERE " . $dbh->sql_position(q{'/'}, 'filename') . " > 0 OR " .
...@@ -2174,8 +2186,6 @@ sub _convert_attachments_filename_from_mediumtext { ...@@ -2174,8 +2186,6 @@ sub _convert_attachments_filename_from_mediumtext {
print "Done.\n"; print "Done.\n";
print "Resizing attachments.filename from mediumtext to",
" varchar(100).\n";
$dbh->bz_alter_column("attachments", "filename", $dbh->bz_alter_column("attachments", "filename",
{TYPE => 'varchar(100)', NOTNULL => 1}); {TYPE => 'varchar(100)', NOTNULL => 1});
} }
...@@ -3150,16 +3160,17 @@ sub _populate_bugs_fulltext { ...@@ -3150,16 +3160,17 @@ sub _populate_bugs_fulltext {
$bug_ids ||= $dbh->selectcol_arrayref('SELECT bug_id FROM bugs'); $bug_ids ||= $dbh->selectcol_arrayref('SELECT bug_id FROM bugs');
# If there are no bugs in the bugs table, there's nothing to populate. # If there are no bugs in the bugs table, there's nothing to populate.
return if !@$bug_ids; return if !@$bug_ids;
my $num_bugs = scalar @$bug_ids;
my $where = ""; my $where = "";
if ($fulltext) { if ($fulltext) {
print "Updating bugs_fulltext...\n"; print "Updating bugs_fulltext for $num_bugs bugs...\n";
$where = "WHERE " . $dbh->sql_in('bugs.bug_id', $bug_ids); $where = "WHERE " . $dbh->sql_in('bugs.bug_id', $bug_ids);
$dbh->do("DELETE FROM bugs_fulltext WHERE " $dbh->do("DELETE FROM bugs_fulltext WHERE "
. $dbh->sql_in('bug_id', $bug_ids)); . $dbh->sql_in('bug_id', $bug_ids));
} }
else { else {
print "Populating bugs_fulltext..."; print "Populating bugs_fulltext with $num_bugs entries...";
print " (this can take a long time.)\n"; print " (this can take a long time.)\n";
} }
my $newline = $dbh->quote("\n"); my $newline = $dbh->quote("\n");
...@@ -3244,9 +3255,9 @@ sub _fix_invalid_custom_field_names { ...@@ -3244,9 +3255,9 @@ sub _fix_invalid_custom_field_names {
next if $field->name =~ /^[a-zA-Z0-9_]+$/; next if $field->name =~ /^[a-zA-Z0-9_]+$/;
# The field name is illegal and can break the DB. Kill the field! # The field name is illegal and can break the DB. Kill the field!
$field->set_obsolete(1); $field->set_obsolete(1);
eval { $field->remove_from_db(); };
print "Removing custom field '" . $field->name . "' (illegal name)... "; print "Removing custom field '" . $field->name . "' (illegal name)... ";
print $@ ? "failed\n$@\n" : "succeeded\n"; eval { $field->remove_from_db(); };
print $@ ? "failed:\n$@\n" : "succeeded\n";
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment