--
-- bt_bugs: add 'needinfo' to resolution check constraint
--
drop index bt_bugs_pk;
drop index bt_bugs_bug_number_un;
alter table bt_bugs rename to bt_bugs_old;
create table bt_bugs (
bug_id integer
constraint bt_bugs_pk
primary key
constraint bt_bugs_bug_id_fk
references acs_objects(object_id),
project_id integer
constraint bt_bugs_projects_fk
references bt_projects(project_id),
component_id integer
constraint bt_bugs_components_fk
references bt_components(component_id),
bug_number integer not null,
status varchar(50) not null
constraint bt_bugs_status_ck
check (status in ('open', 'resolved', 'closed'))
default 'open',
resolution varchar(50)
constraint bt_bugs_resolution_ck
check (resolution is null or
resolution in ('fixed','bydesign','wontfix','postponed','duplicate','norepro','needinfo')),
bug_type varchar(50) not null
constraint bt_bugs_bug_type_ck
check (bug_type in ('bug', 'suggestion','todo')),
severity integer not null
constraint bt_bugs_severity_fk
references bt_severity_codes(severity_id),
priority integer not null
constraint bt_bugs_priority_fk
references bt_priority_codes(priority_id),
user_agent varchar(500),
original_estimate_minutes integer,
latest_estimate_minutes integer,
elapsed_time_minutes integer,
found_in_version integer
constraint bt_bugs_found_in_version_fk
references bt_versions(version_id),
fix_for_version integer
constraint bt_bugs_fix_for_version_fk
references bt_versions(version_id),
fixed_in_version integer
constraint bt_bugs_fixed_in_version_fk
references bt_versions(version_id),
summary varchar(500) not null,
assignee integer
constraint bt_bug_assignee_fk
references users(user_id),
constraint bt_bugs_bug_number_un
unique (project_id, bug_number)
);
-- We do this in an inline function, so that we won't delete the _old table if the insert fails.
create function inline_0 ()
returns integer as '
begin
insert into bt_bugs select * from bt_bugs_old;
drop table bt_bugs_old;
return 0;
end;' language 'plpgsql';
select inline_0 ();
drop function inline_0 ();
--
-- bt_bug_actions: add 'needinfo' to resolution check constraint
--
drop index bt_bug_actions_pk;
alter table bt_bug_actions rename to bt_bug_actions_old;
create table bt_bug_actions (
action_id integer not null
constraint bt_bug_actions_pk
primary key,
bug_id integer not null
constraint bt_bug_actions_bug_fk
references bt_bugs(bug_id)
on delete cascade,
action varchar(50)
constraint bt_bug_actions_action_ck
check (action in ('open','edit','comment','reassign','resolve','reopen','close')),
resolution varchar(50)
constraint bt_bugs_actions_resolution_ck
check (resolution is null or
resolution in ('fixed','bydesign','wontfix','postponed','duplicate','norepro','needinfo')),
actor integer not null
constraint bt_bug_actions_actor_fk
references users(user_id),
action_date timestamptz not null
default current_timestamp,
comment text,
comment_format varchar(30) default 'plain' not null
constraint bt_bug_actions_comment_format_ck
check (comment_format in ('html', 'plain', 'pre'))
);
create function inline_0 ()
returns integer as '
begin
insert into bt_bug_actions (action_id, bug_id, action, resolution, actor, action_date, comment, comment_format)
select action_id, bug_id, action, resolution, actor, action_date, comment, comment_format from bt_bug_actions_old;
drop table bt_bug_actions_old;
return 0;
end;' language 'plpgsql';
select inline_0 ();
drop function inline_0 ();