Change NUMERIC field type to DECIMAL(24,3)
parent
78dc6d4f6e
commit
46b762fdce
|
@ -4249,6 +4249,44 @@ sub get_string
|
|||
return $value;
|
||||
}
|
||||
|
||||
# Get attribute value in the default format
|
||||
sub get_value
|
||||
{
|
||||
my ($self, $attr) = @_;
|
||||
my $field = Bugzilla->get_field($attr);
|
||||
|
||||
if (defined $self->{$attr})
|
||||
{
|
||||
$self->{$attr} =~ s/\.?0+$//so if $field && $field->type == FIELD_TYPE_NUMERIC;
|
||||
return $self->{$attr};
|
||||
}
|
||||
|
||||
if ($attr =~ /^(.*)_obj$/s)
|
||||
{
|
||||
return $self->get_object($1);
|
||||
}
|
||||
|
||||
if ($field)
|
||||
{
|
||||
if ($field->type == FIELD_TYPE_MULTI_SELECT)
|
||||
{
|
||||
$self->{$attr} ||= Bugzilla->dbh->selectcol_arrayref(
|
||||
"SELECT id FROM bug_$attr, $attr WHERE value_id=id AND bug_id=? ORDER BY value",
|
||||
undef, $self->id);
|
||||
return $self->{$attr};
|
||||
}
|
||||
elsif ($field->type == FIELD_TYPE_BUG_ID_REV)
|
||||
{
|
||||
$self->{$attr} ||= Bugzilla->dbh->selectcol_arrayref(
|
||||
"SELECT bug_id FROM bugs WHERE ".$field->value_field->name." = ".$self->id
|
||||
);
|
||||
return $self->{$attr};
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
# FIXME WTF this is needed for? bugzilla.dtd? maybe it should be autogenerated?
|
||||
sub fields
|
||||
{
|
||||
|
@ -4314,38 +4352,7 @@ sub AUTOLOAD
|
|||
}
|
||||
|
||||
no strict 'refs';
|
||||
*$AUTOLOAD = sub
|
||||
{
|
||||
my $self = shift;
|
||||
return $self->{$attr} if defined $self->{$attr};
|
||||
|
||||
if ($attr =~ /^(.*)_obj$/s)
|
||||
{
|
||||
return $self->get_object($1);
|
||||
}
|
||||
|
||||
my $field = Bugzilla->get_field($attr);
|
||||
if ($field)
|
||||
{
|
||||
if ($field->type == FIELD_TYPE_MULTI_SELECT)
|
||||
{
|
||||
$self->{$attr} ||= Bugzilla->dbh->selectcol_arrayref(
|
||||
"SELECT id FROM bug_$attr, $attr WHERE value_id=id AND bug_id=? ORDER BY value",
|
||||
undef, $self->id);
|
||||
return $self->{$attr};
|
||||
}
|
||||
elsif ($field->type == FIELD_TYPE_BUG_ID_REV)
|
||||
{
|
||||
$self->{$attr} ||= Bugzilla->dbh->selectcol_arrayref(
|
||||
"SELECT bug_id FROM bugs WHERE ".$field->value_field->name." = ".$self->id
|
||||
);
|
||||
return $self->{$attr};
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
};
|
||||
|
||||
*$AUTOLOAD = sub { $_[0]->get_value($attr) };
|
||||
goto &$AUTOLOAD;
|
||||
}
|
||||
|
||||
|
|
|
@ -143,7 +143,7 @@ use constant SQL_DEFINITIONS => {
|
|||
FIELD_TYPE_TEXTAREA, { TYPE => 'MEDIUMTEXT' },
|
||||
FIELD_TYPE_DATETIME, { TYPE => 'DATETIME' },
|
||||
FIELD_TYPE_BUG_ID, { TYPE => 'INT4' },
|
||||
FIELD_TYPE_NUMERIC, { TYPE => 'NUMERIC', NOTNULL => 1, DEFAULT => '0' },
|
||||
FIELD_TYPE_NUMERIC, { TYPE => 'DECIMAL(30,10)', NOTNULL => 1, DEFAULT => '0' },
|
||||
};
|
||||
|
||||
# Field definitions for the fields that ship with Bugzilla.
|
||||
|
|
|
@ -855,6 +855,12 @@ WHERE description LIKE \'%[CC:%]%\'');
|
|||
$dbh->bz_drop_column('flagtypes', 'cc_list');
|
||||
}
|
||||
|
||||
# Change all NUMERIC custom fields to their actual type
|
||||
for (Bugzilla->get_fields({ custom => 1, type => FIELD_TYPE_NUMERIC }))
|
||||
{
|
||||
$dbh->bz_alter_column('bugs', $_->name, Bugzilla::Field->SQL_DEFINITIONS->{FIELD_TYPE_NUMERIC()});
|
||||
}
|
||||
|
||||
_move_old_defaults($old_params);
|
||||
|
||||
################################################################
|
||||
|
@ -4098,7 +4104,10 @@ sub _change_select_fields_to_ids
|
|||
print "Replacing 'unspecified' versions with NULL\n";
|
||||
my $id = Bugzilla->get_field('version')->id;
|
||||
$dbh->do("UPDATE bugs b SET version=NULL WHERE b.version IN (SELECT v.id FROM versions v WHERE v.value='unspecified')");
|
||||
$dbh->do("UPDATE components c SET default_version=NULL WHERE c.default_version IN (SELECT v.id FROM versions v WHERE v.value='unspecified')");
|
||||
if ($dbh->bz_column_info('components', 'default_version'))
|
||||
{
|
||||
$dbh->do("UPDATE components c SET default_version=NULL WHERE c.default_version IN (SELECT v.id FROM versions v WHERE v.value='unspecified')");
|
||||
}
|
||||
$dbh->do("UPDATE fielddefs SET is_mandatory=0 WHERE name='version'");
|
||||
$dbh->do(
|
||||
"DELETE FROM fieldvaluecontrol WHERE (field_id, value_id, visibility_value_id) IN ".
|
||||
|
|
Loading…
Reference in New Issue