Commit 80aa5e83 authored by mkanat%bugzilla.org's avatar mkanat%bugzilla.org

Bug 414012: Include the table id in fields that fail their new max-length check.

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=justdave, a=justdave
parent c87cca60
...@@ -516,7 +516,7 @@ sub update_table_definitions { ...@@ -516,7 +516,7 @@ sub update_table_definitions {
_make_lang_setting_dynamic(); _make_lang_setting_dynamic();
# 2007-11-29 xiaoou.wu@oracle.com - Bug 153129 # 2007-11-29 xiaoou.wu@oracle.com - Bug 153129
change_text_types(); _change_text_types();
# 2007-09-09 LpSolit@gmail.com - Bug 99215 # 2007-09-09 LpSolit@gmail.com - Bug 99215
_fix_attachment_modification_date(); _fix_attachment_modification_date();
...@@ -2937,12 +2937,12 @@ sub _fix_attachment_modification_date { ...@@ -2937,12 +2937,12 @@ sub _fix_attachment_modification_date {
[qw(modification_time)]); [qw(modification_time)]);
} }
sub change_text_types { sub _change_text_types {
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
return if $dbh->bz_column_info('series', 'query')->{TYPE} eq 'LONGTEXT'; return if $dbh->bz_column_info('series', 'query')->{TYPE} eq 'LONGTEXT';
_check_content_length('attachments', 'mimetype', 255); _check_content_length('attachments', 'mimetype', 255, 'attach_id');
_check_content_length('fielddefs', 'description', 255); _check_content_length('fielddefs', 'description', 255, 'id');
_check_content_length('attachments', 'description', 255); _check_content_length('attachments', 'description', 255, 'attach_id');
$dbh->bz_alter_column('bugs', 'bug_file_loc', $dbh->bz_alter_column('bugs', 'bug_file_loc',
{ TYPE => 'MEDIUMTEXT'}); { TYPE => 'MEDIUMTEXT'});
...@@ -2968,28 +2968,27 @@ sub change_text_types { ...@@ -2968,28 +2968,27 @@ sub change_text_types {
} }
sub _check_content_length { sub _check_content_length {
my ($table_name, $field_name, $max_length) = @_; my ($table_name, $field_name, $max_length, $id_field) = @_;
my $dbh = Bugzilla->dbh; my $dbh = Bugzilla->dbh;
my $contents = $dbh->selectcol_arrayref( my %contents = @{ $dbh->selectcol_arrayref(
"SELECT $field_name FROM $table_name "SELECT $id_field, $field_name FROM $table_name
WHERE LENGTH($field_name) > ?", undef, $max_length); WHERE LENGTH($field_name) > ?", {Columns=>[1,2]}, $max_length) };
if (@$contents) { if (scalar keys %contents) {
my @trimmed;
foreach my $item (@$contents) {
# Don't dump the whole string--it could be 16MB.
if (length($item) > 80) {
push(@trimmed, substr($item, 0, 30) . "..."
. substr($item, -30) . "\n");
} else {
push(@trimmed, $item);
}
}
print install_string('install_data_too_long', print install_string('install_data_too_long',
{ column => $field_name, { column => $field_name,
id_column => $id_field,
table => $table_name, table => $table_name,
max_length => $max_length, max_length => $max_length });
data => join("\n", @trimmed) }); foreach my $id (keys %contents) {
my $string = $contents{$id};
# Don't dump the whole string--it could be 16MB.
if (length($string) > 80) {
$string = substr($string, 0, 30) . "..."
. substr($string, -30) . "\n";
}
print "$id: $string\n";
}
exit 3; exit 3;
} }
} }
......
...@@ -46,10 +46,10 @@ with one command, do: ...@@ -46,10 +46,10 @@ with one command, do:
EOT EOT
install_data_too_long => <<EOT, install_data_too_long => <<EOT,
WARNING: Some of the data in the ##table##.##column## column is longer than WARNING: Some of the data in the ##table##.##column## column is longer than
its new length limit of ##max_length## characters. Please fix this data its new length limit of ##max_length## characters. The data that needs to be
and then re-run checksetup.pl: fixed is printed below with the value of the ##id_column## column first and
then the value of the ##column## column that needs to be fixed:
##data##
EOT EOT
install_module => 'Installing ##module## version ##version##...', install_module => 'Installing ##module## version ##version##...',
module_found => "found v##ver##", module_found => "found v##ver##",
......
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