Alter the rest of integer fields to be INT4, remove sub Bugzilla->COLUMNS, add BIGSERIAL type

hinted-selects
Vitaliy Filippov 2014-08-13 20:33:10 +04:00
parent 1453596813
commit 5f999b339f
10 changed files with 34 additions and 28 deletions

View File

@ -873,9 +873,6 @@ sub cache_fields
return $Bugzilla::CACHE_FIELDS;
}
sub COLUMNS { Bugzilla::Search->COLUMNS }
sub COLUMN_ALIASES { Bugzilla::Search->COLUMN_ALIASES }
sub rc_cache_fields
{
my $class = shift;

View File

@ -593,7 +593,7 @@ use constant ABSTRACT_SCHEMA => {
# (originally CustIS Bugs 53617, 91153)
fieldvaluecontrol => {
FIELDS => [
field_id => {TYPE => 'INT4', NOTNULL => 1},
field_id => {TYPE => 'INT4', NOTNULL => 1, REFERENCES => {TABLE => 'fielddefs', COLUMN => 'id'}},
value_id => {TYPE => 'INT4', NOTNULL => 1},
visibility_value_id => {TYPE => 'INT4', NOTNULL => 1},
],
@ -1016,18 +1016,11 @@ use constant ABSTRACT_SCHEMA => {
category_group_map => {
FIELDS => [
category_id => {TYPE => 'INT4', NOTNULL => 1,
REFERENCES => {TABLE => 'series_categories',
COLUMN => 'id',
DELETE => 'CASCADE'}},
group_id => {TYPE => 'INT4', NOTNULL => 1,
REFERENCES => {TABLE => 'groups',
COLUMN => 'id',
DELETE => 'CASCADE'}},
category_id => {TYPE => 'INT4', NOTNULL => 1, REFERENCES => {TABLE => 'series_categories', COLUMN => 'id', DELETE => 'CASCADE'}},
group_id => {TYPE => 'INT4', NOTNULL => 1, REFERENCES => {TABLE => 'groups', COLUMN => 'id', DELETE => 'CASCADE'}},
],
INDEXES => [
category_group_map_category_id_idx =>
{FIELDS => [qw(category_id group_id)], TYPE => 'UNIQUE'},
category_group_map_category_id_idx => {FIELDS => [qw(category_id group_id)], TYPE => 'UNIQUE'},
],
},

View File

@ -109,6 +109,7 @@ sub _initialize {
SMALLSERIAL => 'smallint auto_increment',
MEDIUMSERIAL => 'mediumint auto_increment',
INTSERIAL => 'integer auto_increment',
BIGSERIAL => 'bigint auto_increment',
TINYTEXT => 'tinytext',
MEDIUMTEXT => 'mediumtext',

View File

@ -61,6 +61,7 @@ sub _initialize {
SMALLSERIAL => 'integer',
MEDIUMSERIAL => 'integer',
INTSERIAL => 'integer',
BIGSERIAL => 'bigint',
TINYTEXT => 'varchar(255)',
MEDIUMTEXT => 'varchar(4000)',

View File

@ -54,6 +54,7 @@ sub _initialize {
SMALLSERIAL => 'serial unique',
MEDIUMSERIAL => 'serial unique',
INTSERIAL => 'serial unique',
BIGSERIAL => 'bigserial unique',
TINYTEXT => 'varchar(255)',
MEDIUMTEXT => 'text',

View File

@ -712,7 +712,8 @@ WHERE description LIKE\'%[CC:%\'');
$dbh->bz_add_index('bugs_activity', 'bugs_activity_removed_idx', ['removed(255)']);
# Change types of all ID fields to INT4
if ($dbh->bz_column_info('bugs', 'bug_id')->{TYPE} ne 'INTSERIAL')
if ($dbh->bz_column_info('bugs', 'bug_id')->{TYPE} ne 'INTSERIAL' ||
$dbh->bz_column_info('fieldvaluecontrol', 'field_id')->{TYPE} ne 'INT4')
{
_change_int_keys_to_int4();
}
@ -819,6 +820,11 @@ WHERE description LIKE\'%[CC:%\'');
# Add FK to multi select field tables
_add_foreign_keys_to_multiselects();
if (!$dbh->bz_fk_info('fieldvaluecontrol', 'field_id'))
{
$dbh->do("DELETE FROM fieldvaluecontrol WHERE field_id=0");
}
_move_old_defaults($old_params);
################################################################
@ -3951,18 +3957,23 @@ sub _change_int_keys_to_int4
$abs = { @{$abs->{FIELDS}} } if $abs;
while (my ($column, $d) = each %h)
{
if ($d->{TYPE} =~ /SERIAL/is)
if ($d->{TYPE} =~ /INT|SERIAL/ && ($abs && $abs->{$column} ||
$d->{TYPE} =~ /(?<!INT)SERIAL/ || $d->{REFERENCES} || $d->{PRIMARYKEY}))
{
push @$alter, [ $table, $column, { %$d, TYPE => 'INTSERIAL' } ];
}
elsif ($d->{TYPE} =~ /INT/is && ($d->{REFERENCES} || $d->{PRIMARYKEY} || $abs && $abs->{$column}->{REFERENCES}))
{
if ($d->{REFERENCES})
my $nt = $abs && $abs->{$column} && $abs->{$column}->{TYPE};
if (!$nt)
{
# Foreign keys will be automatically recreated later
$dbh->bz_drop_fk($table, $column);
$nt = $d->{TYPE} =~ /SERIAL/ ? 'INTSERIAL' : 'INT4';
}
if (lc $d->{TYPE} ne lc $nt)
{
if ($d->{REFERENCES})
{
# Foreign keys will be automatically recreated later
$dbh->bz_drop_fk($table, $column);
}
push @$alter, [ $table, $column, { %$d, TYPE => $nt } ];
}
push @$alter, [ $table, $column, { %$d, TYPE => 'INT4' } ];
}
}
}

View File

@ -1334,6 +1334,7 @@ _close_standby_message($contenttype, $disposition, $serverpush);
################################################################################
$vars->{template_format} = $ARGS->{format};
$vars->{COLUMNS} = Bugzilla::Search->COLUMNS;
# Generate and return the UI (HTML page) from the appropriate template.
my $output;

View File

@ -51,7 +51,8 @@ my @masterlist =
Bugzilla::Hook::process('colchange_columns', {'columns' => \@masterlist} );
$vars->{'masterlist'} = \@masterlist;
$vars->{masterlist} = \@masterlist;
$vars->{COLUMNS} = Bugzilla::Search->COLUMNS;
my @collist;
if (defined $cgi->param('rememberedquery')) {

View File

@ -63,13 +63,13 @@
size="15" multiple="multiple" onchange="updateView();">
[% FOREACH column = collist %]
<option value="[% column FILTER html %]" selected="selected">
[% Bugzilla.COLUMNS.${column}.title || column | html %]
[% COLUMNS.${column}.title || column | html %]
</option>
[% END %]
[% FOREACH column = masterlist %]
[% IF lsearch(collist, column) == -1 %]
<option value="[% column FILTER html %]">
[% Bugzilla.COLUMNS.${column}.title || column | html %]
[% COLUMNS.${column}.title || column | html %]
</option>
[% END %]
[% END %]

View File

@ -206,7 +206,7 @@
[% FOREACH column = displaycolumns %]
<td class="bz_[% column FILTER css_class_quote %]_column bz_f[% bug_fields.$column.type %]
[%- IF Bugzilla.COLUMNS.$column.subid %] bz_[% Bugzilla.COLUMNS.$column.subid | css_class_quote %]_column[% END %]"
[%- IF COLUMNS.$column.subid %] bz_[% COLUMNS.$column.subid | css_class_quote %]_column[% END %]"
[%- IF abbrev.$column.maxlength %] title="[%- bug.$column | html %]"[% END %]>
[% IF abbrev.$column.format_value %]
[%- bug.$column FILTER format(abbrev.$column.format_value) FILTER html -%]