From cef812462fabfc26aebf6557a46b6eee0bc207b0 Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Mon, 31 May 2010 22:30:16 -0700 Subject: 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) --- Bugzilla/Install/DB.pm | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'Bugzilla/Install/DB.pm') diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm index e7d9c675c..051f2dc25 100644 --- a/Bugzilla/Install/DB.pm +++ b/Bugzilla/Install/DB.pm @@ -1032,6 +1032,7 @@ sub _copy_from_comments_to_longdescs { # 2000-11-27 For Bugzilla 2.5 and later. Copy data from 'comments' to # 'longdescs' - the new name of the comments table. if ($dbh->bz_table_info('comments')) { + print "Copying data from 'comments' to 'longdescs'...\n"; my $quoted_when = $dbh->quote_identifier('when'); $dbh->do("INSERT INTO longdescs (bug_when, bug_id, who, thetext) SELECT $quoted_when, bug_id, who, comment @@ -1239,6 +1240,7 @@ sub _use_ip_instead_of_hostname_in_logincookies { # # Use the ip, not the hostname, in the logincookies table 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 $dbh->do("DELETE FROM logincookies"); @@ -1978,9 +1980,11 @@ sub _copy_old_charts_into_database { my $all_name = "-All-"; my $open_name = "All Open"; + $dbh->bz_start_transaction(); my $products = $dbh->selectall_arrayref("SELECT name FROM products"); foreach my $product ((map { $_->[0] } @$products), "-All-") { + print "$product:\n"; # First, create the series my %queries; my %seriesids; @@ -2029,8 +2033,9 @@ sub _copy_old_charts_into_database { my %data; my $last_date = ""; - while (<$in>) { - if (/^(\d+\|.*)/) { + my @lines = <$in>; + while (my $line = shift @lines) { + if ($line =~ /^(\d+\|.*)/) { my @numbers = split(/\||\r/, $1); # Only take the first line for each date; it was possible to @@ -2053,6 +2058,9 @@ sub _copy_old_charts_into_database { $in->close; + my $total_items = (scalar(@fields) + 1) + * scalar(keys %{ $data{'NEW'} }); + my $count = 0; foreach my $field (@fields, $open_name) { # Insert values into series_data: series_id, date, value my %fielddata = %{$data{$field}}; @@ -2064,6 +2072,8 @@ sub _copy_old_charts_into_database { # We prepared this above $seriesdatasth->execute($seriesids{$field}, $date, $fielddata{$date} || 0); + indicate_progress({ total => $total_items, + current => ++$count, every => 100 }); } } @@ -2090,6 +2100,8 @@ sub _copy_old_charts_into_database { } } } + + $dbh->bz_commit_transaction(); } } @@ -2158,7 +2170,7 @@ sub _convert_attachments_filename_from_mediumtext { # and attachment.cgi now takes them out, but old ones need converting. my $ref = $dbh->bz_column_info("attachments", "filename"); 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 " . "WHERE " . $dbh->sql_position(q{'/'}, 'filename') . " > 0 OR " . @@ -2174,8 +2186,6 @@ sub _convert_attachments_filename_from_mediumtext { print "Done.\n"; - print "Resizing attachments.filename from mediumtext to", - " varchar(100).\n"; $dbh->bz_alter_column("attachments", "filename", {TYPE => 'varchar(100)', NOTNULL => 1}); } @@ -3150,16 +3160,17 @@ sub _populate_bugs_fulltext { $bug_ids ||= $dbh->selectcol_arrayref('SELECT bug_id FROM bugs'); # If there are no bugs in the bugs table, there's nothing to populate. return if !@$bug_ids; + my $num_bugs = scalar @$bug_ids; my $where = ""; 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); $dbh->do("DELETE FROM bugs_fulltext WHERE " . $dbh->sql_in('bug_id', $bug_ids)); } else { - print "Populating bugs_fulltext..."; + print "Populating bugs_fulltext with $num_bugs entries..."; print " (this can take a long time.)\n"; } my $newline = $dbh->quote("\n"); @@ -3244,9 +3255,9 @@ sub _fix_invalid_custom_field_names { next if $field->name =~ /^[a-zA-Z0-9_]+$/; # The field name is illegal and can break the DB. Kill the field! $field->set_obsolete(1); - eval { $field->remove_from_db(); }; 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"; } } -- cgit v1.2.3-24-g4f1b