51 lines
3.9 KiB
SQL
51 lines
3.9 KiB
SQL
-- SQL скрипт изменений требуемых в нашей боевой базе багзиллы при обновлении с 2.x до 3.х
|
||
-- Возможно, добавятся ещё новые кривости, но пока так.
|
||
set names utf8;
|
||
-- ДО ./checksetup.pl:
|
||
alter table components change wiki_url wiki_url1 varchar(255) not null;
|
||
-- ПОСЛЕ ./checksetup.pl:
|
||
alter table components drop wiki_url;
|
||
alter table components change wiki_url1 wiki_url varchar(255) not null;
|
||
-- Убираем старые юзерские настройки
|
||
create temporary table tmp2 as select user_id, 'post_bug_submit_action' AS setting_name, (case when setting_value='on' then 'next_bug' else 'same_bug' end) as setting_value from profile_setting where setting_name='go_to_next_bug';
|
||
replace into profile_setting (user_id, setting_name, setting_value) select * from tmp2;
|
||
drop table tmp2;
|
||
delete from profile_setting where setting_name in ('go_to_next_bug', 'remind_me_about_flags', 'create_bug_resolved', 'create_bug_assigned');
|
||
update profile_setting set setting_name='remind_me_about_flags' where setting_name='remind_me_about_requests';
|
||
delete from setting_value where name in ('go_to_next_bug', 'remind_me_about_requests', 'create_bug_resolved', 'create_bug_assigned');
|
||
delete from setting where name in ('go_to_next_bug', 'remind_me_about_requests', 'create_bug_resolved', 'create_bug_assigned');
|
||
-- Дальше ДОЛЖНО уже быть создано поле cf_agreement (договор) зависимое от продукта
|
||
-- Наполняем значениями поле "Договор"
|
||
insert into cf_agreement (value, sortkey, isactive, visibility_value_id)
|
||
select name, sortkey, act, (case when count(`name`) > 1 then NULL else `vis` end)
|
||
from (
|
||
select
|
||
(case when instr(name,' (') > 0 then substr(`name`,1,instr(name,' (')-1) else `name` end) as `name`,
|
||
sortkey,
|
||
1 as act,
|
||
product_id as vis
|
||
from agreements
|
||
where name not in ('!Без договора', '--', '---', '--- пусто', 'Unspec')
|
||
) as `t0`
|
||
group by (case when instr(name,' (') > 0 then substr(`name`,1,instr(name,' (')-1) else `name` end);
|
||
-- Устанавливаем правильные sortkey, такие, чтобы ограниченные значения были вверху,
|
||
create temporary table tmp1 (id int not null auto_increment primary key, sortkey int not null default 0);
|
||
insert into tmp1 (sortkey) select distinct sortkey from cf_agreement where visibility_value_id IS NOT NULL order by sortkey;
|
||
update cf_agreement set sortkey=5+5*(select tmp1.id from tmp1 where tmp1.sortkey=cf_agreement.sortkey) where visibility_value_id IS NOT NULL;
|
||
drop table tmp1;
|
||
-- А неограниченные - внизу
|
||
create temporary table tmp1 (id int not null auto_increment primary key, sortkey int not null default 0);
|
||
insert into tmp1 (sortkey) select distinct sortkey from cf_agreement where visibility_value_id IS NULL order by sortkey;
|
||
update cf_agreement set sortkey=200+5*(select tmp1.id from tmp1 where tmp1.sortkey=cf_agreement.sortkey) where visibility_value_id IS NULL;
|
||
drop table tmp1;
|
||
-- А --- между ними
|
||
update cf_agreement set sortkey=195 where value='---';
|
||
-- Записываем значения договора для всех багов
|
||
update bugs, agreements, cf_agreement
|
||
set bugs.cf_agreement=(case when instr(agreements.name,' (') > 0 then substr(agreements.`name`,1,instr(agreements.name,' (')-1) else agreements.`name` end)
|
||
where bugs.agreement_id=agreements.id
|
||
and agreements.name not in ('!Без договора', '--', '---', '--- пусто', 'Unspec');
|
||
-- Удаляем старое поле "agreement" из fielddefs
|
||
update bugs_activity set fieldid=(select fielddefs.id from fielddefs where fielddefs.name='cf_agreement') where fieldid=(select fielddefs.id from fielddefs where fielddefs.name='agreement');
|
||
delete from fielddefs where name='agreement';
|