bug_id => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1,
PRIMARYKEY => 1},
assigned_to => {TYPE => 'INT3', NOTNULL => 1},
- bug_file_loc => {TYPE => 'TEXT'},
+ bug_file_loc => {TYPE => 'MEDIUMTEXT'},
bug_severity => {TYPE => 'varchar(64)', NOTNULL => 1},
bug_status => {TYPE => 'varchar(64)', NOTNULL => 1},
creation_ts => {TYPE => 'DATETIME'},
bug_when => {TYPE => 'DATETIME', NOTNULL => 1},
work_time => {TYPE => 'decimal(5,2)', NOTNULL => 1,
DEFAULT => '0'},
- thetext => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
+ thetext => {TYPE => 'LONGTEXT', NOTNULL => 1},
isprivate => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 'FALSE'},
already_wrapped => {TYPE => 'BOOLEAN', NOTNULL => 1,
bug_id => {TYPE => 'INT3', NOTNULL => 1},
creation_ts => {TYPE => 'DATETIME', NOTNULL => 1},
modification_time => {TYPE => 'DATETIME', NOTNULL => 1},
- description => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
- mimetype => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
+ description => {TYPE => 'TINYTEXT', NOTNULL => 1},
+ mimetype => {TYPE => 'TINYTEXT', NOTNULL => 1},
ispatch => {TYPE => 'BOOLEAN'},
filename => {TYPE => 'varchar(100)', NOTNULL => 1},
submitter_id => {TYPE => 'INT3', NOTNULL => 1,
id => {TYPE => 'SMALLSERIAL', NOTNULL => 1,
PRIMARYKEY => 1},
name => {TYPE => 'varchar(50)', NOTNULL => 1},
- description => {TYPE => 'TEXT'},
+ description => {TYPE => 'MEDIUMTEXT'},
cc_list => {TYPE => 'varchar(200)'},
target_type => {TYPE => 'char(1)', NOTNULL => 1,
DEFAULT => "'b'"},
DEFAULT => FIELD_TYPE_UNKNOWN},
custom => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 'FALSE'},
- description => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
+ description => {TYPE => 'TINYTEXT', NOTNULL => 1},
mailhead => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 'FALSE'},
sortkey => {TYPE => 'INT2', NOTNULL => 1},
COLUMN => 'userid',
DELETE => 'CASCADE'}},
name => {TYPE => 'varchar(64)', NOTNULL => 1},
- query => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
+ query => {TYPE => 'LONGTEXT', NOTNULL => 1},
query_type => {TYPE => 'BOOLEAN', NOTNULL => 1},
],
INDEXES => [
id => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1,
PRIMARYKEY => 1},
name => {TYPE => 'varchar(255)', NOTNULL => 1},
- description => {TYPE => 'TEXT', NOTNULL => 1},
+ description => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
isbuggroup => {TYPE => 'BOOLEAN', NOTNULL => 1},
userregexp => {TYPE => 'TINYTEXT', NOTNULL => 1,
DEFAULT => "''"},
name => {TYPE => 'varchar(64)', NOTNULL => 1},
frequency => {TYPE => 'INT2', NOTNULL => 1},
last_viewed => {TYPE => 'DATETIME'},
- query => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
+ query => {TYPE => 'LONGTEXT', NOTNULL => 1},
is_public => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 'FALSE'},
],
quipid => {TYPE => 'MEDIUMSERIAL', NOTNULL => 1,
PRIMARYKEY => 1},
userid => {TYPE => 'INT3'},
- quip => {TYPE => 'TEXT', NOTNULL => 1},
+ quip => {TYPE => 'MEDIUMTEXT', NOTNULL => 1},
approved => {TYPE => 'BOOLEAN', NOTNULL => 1,
DEFAULT => 'TRUE'},
],
=item C<TINYTEXT>
-Variable length string of characters up to 255 (2^8 - 1) characters wide
-or more depending on the character set used.
+Variable length string of characters up to 255 (2^8 - 1) characters wide.
=item C<MEDIUMTEXT>
-Variable length string of characters up to 16M (2^24 - 1) characters wide
-or more depending on the character set used.
+Variable length string of characters up to 4000 characters wide.
+May be longer on some databases.
-=item C<TEXT>
+=item C<LONGTEXT>
-Variable length string of characters up to 64K (2^16 - 1) characters wide
-or more depending on the character set used.
+Variable length string of characters up to 16M (2^24 - 1) characters wide.
=item C<LONGBLOB>
use Bugzilla::Constants;
use Bugzilla::Hook;
-use Bugzilla::Install::Util qw(indicate_progress);
+use Bugzilla::Install::Util qw(indicate_progress install_string);
use Bugzilla::Util;
use Bugzilla::Series;
$dbh->bz_add_column('setting', 'subclass', {TYPE => 'varchar(32)'});
$dbh->bz_alter_column('longdescs', 'thetext',
- { TYPE => 'MEDIUMTEXT', NOTNULL => 1 }, '');
+ {TYPE => 'LONGTEXT', NOTNULL => 1}, '');
# 2006-10-20 LpSolit@gmail.com - Bug 189627
$dbh->bz_add_column('group_control_map', 'editcomponents',
# 2007-08-21 wurblzap@gmail.com - Bug 365378
_make_lang_setting_dynamic();
+
+ # 2007-11-29 xiaoou.wu@oracle.com - Bug 153129
+ change_text_types();
# 2007-09-09 LpSolit@gmail.com - Bug 99215
_fix_attachment_modification_date();
[qw(modification_time)]);
}
+sub change_text_types {
+ my $dbh = Bugzilla->dbh;
+ return if $dbh->bz_column_info('series', 'query')->{TYPE} eq 'LONGTEXT';
+ _check_content_length('attachments', 'mimetype', 255);
+ _check_content_length('fielddefs', 'description', 255);
+ _check_content_length('attachments', 'description', 255);
+
+ $dbh->bz_alter_column('bugs', 'bug_file_loc',
+ { TYPE => 'MEDIUMTEXT'});
+ $dbh->bz_alter_column('longdescs', 'thetext',
+ { TYPE => 'LONGTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('attachments', 'description',
+ { TYPE => 'TINYTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('attachments', 'mimetype',
+ { TYPE => 'TINYTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('flagtypes', 'description',
+ { TYPE => 'MEDIUMTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('fielddefs', 'description',
+ { TYPE => 'TINYTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('namedqueries', 'query',
+ { TYPE => 'LONGTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('groups', 'description',
+ { TYPE => 'MEDIUMTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('quips', 'quip',
+ { TYPE => 'MEDIUMTEXT', NOTNULL => 1 });
+ $dbh->bz_alter_column('series', 'query',
+ { TYPE => 'LONGTEXT', NOTNULL => 1 });
+}
+
+sub _check_content_length {
+ my ($table_name, $field_name, $max_length) = @_;
+ my $dbh = Bugzilla->dbh;
+ my $contents = $dbh->selectcol_arrayref(
+ "SELECT $field_name FROM $table_name
+ WHERE LENGTH($field_name) > ?", undef, $max_length);
+
+ if (@$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',
+ { column => $field_name,
+ table => $table_name,
+ max_length => $max_length,
+ data => join("\n", @trimmed) });
+ exit 3;
+ }
+}
+
1;
__END__