mirror of https://github.com/sipwise/db-schema.git
parent
0dc43cfd75
commit
030e8dbd75
@ -0,0 +1,5 @@
|
||||
use billing;
|
||||
|
||||
alter table contract_balances
|
||||
drop key balance_interval,
|
||||
add key contractid_idx (contract_id);
|
@ -0,0 +1,43 @@
|
||||
use billing;
|
||||
|
||||
delimiter ;;
|
||||
|
||||
create procedure del_dupes()
|
||||
begin
|
||||
declare done int default false;
|
||||
declare cid, c int;
|
||||
declare s, e datetime;
|
||||
declare x cursor for select contract_id, start, end, count(*) ct
|
||||
from contract_balances group by contract_id, start, end having ct > 1;
|
||||
declare continue handler for sqlstate '02000' set done = true;
|
||||
|
||||
open x;
|
||||
|
||||
rl: loop
|
||||
fetch x into cid, s, e, c;
|
||||
if done then
|
||||
leave rl;
|
||||
end if;
|
||||
set c = c - 1;
|
||||
delete from contract_balances where contract_id = cid and start = s
|
||||
and end = e and cash_balance = 0 and cash_balance_interval = 0 and
|
||||
free_time_balance = 0 and free_time_balance_interval = 0
|
||||
and invoice_id is null limit c;
|
||||
end loop;
|
||||
|
||||
close x;
|
||||
end;;
|
||||
|
||||
delimiter ;
|
||||
call del_dupes;
|
||||
drop procedure del_dupes;
|
||||
|
||||
|
||||
|
||||
-- If this throws an error, then the contracts_balances table contains entries
|
||||
-- that the above procedure could not delete, which are duplicate entries with
|
||||
-- non-zero balances. Manual cleanup is required.
|
||||
|
||||
alter table contract_balances
|
||||
add unique key balance_interval (contract_id, start, end),
|
||||
drop key contractid_idx;
|
Loading…
Reference in new issue