From 5b4c21f89270d6cfa37089af24ec3e5b24836d3b Mon Sep 17 00:00:00 2001 From: Kirill Solomko Date: Mon, 9 May 2016 14:48:58 +0200 Subject: [PATCH] MT#19595 fix missing usr/dom/peer lnp rewrite rule set preferences Change-Id: If86047066099fde97c1dddbca43a7d695bcca99d (cherry picked from commit 79c8350e02efb6466cdf8aa74f0d9913413a5203) --- db_scripts/diff/15242.up | 112 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 db_scripts/diff/15242.up diff --git a/db_scripts/diff/15242.up b/db_scripts/diff/15242.up new file mode 100644 index 00000000..ca4b1ed0 --- /dev/null +++ b/db_scripts/diff/15242.up @@ -0,0 +1,112 @@ +use provisioning; +set autocommit=0; + +drop procedure if exists tmp_update_lnp_rwr_preferences; + +delimiter ;; +create procedure tmp_update_lnp_rwr_preferences() begin + declare done boolean default false; + declare a_caller_in, a_caller_lnp, a_callee_lnp, _id, _val, _set_id int(11) unsigned; + declare domain_cur cursor for + select p.domain_id, p.value + from voip_dom_preferences p + where p.attribute_id = a_caller_in + and not exists (select s.domain_id + from voip_dom_preferences s + where s.domain_id = p.domain_id + and s.attribute_id IN (a_caller_lnp, a_callee_lnp) + limit 1); + declare usr_cur cursor for + select p.subscriber_id, p.value + from voip_usr_preferences p + where p.attribute_id = a_caller_in + and not exists (select s.subscriber_id + from voip_usr_preferences s + where s.subscriber_id = p.subscriber_id + and s.attribute_id IN (a_caller_lnp, a_callee_lnp) + limit 1); + declare peer_cur cursor for + select p.peer_host_id, p.value + from voip_peer_preferences p + where p.attribute_id = a_caller_in + and not exists (select s.peer_host_id + from voip_peer_preferences s + where s.peer_host_id = p.peer_host_id + and s.attribute_id IN (a_caller_lnp, a_callee_lnp) + limit 1); + declare continue handler for not found set done := true; + + select id into a_caller_in from voip_preferences where attribute = 'rewrite_caller_in_dpid'; + select id into a_caller_lnp from voip_preferences where attribute = 'rewrite_caller_lnp_dpid'; + select id into a_callee_lnp from voip_preferences where attribute = 'rewrite_callee_lnp_dpid'; + + open domain_cur; + fix_loop: loop + fetch domain_cur into _id, _val; + if done then + leave fix_loop; + end if; + select id into _set_id + from voip_rewrite_rule_sets + where caller_in_dpid = _val; + insert into voip_dom_preferences (domain_id, attribute_id, value) + select _id, a_caller_lnp, rs.caller_lnp_dpid + from voip_rewrite_rule_sets rs + where id = _set_id; + insert into voip_dom_preferences (domain_id, attribute_id, value) + select _id, a_callee_lnp, rs.callee_lnp_dpid + from voip_rewrite_rule_sets rs + where id = _set_id; + end loop fix_loop; + close domain_cur; + + set done := false; + open usr_cur; + fix_loop: loop + fetch usr_cur into _id, _val; + if done then + leave fix_loop; + end if; + select id into _set_id + from voip_rewrite_rule_sets + where caller_in_dpid = _val; + insert into voip_usr_preferences (subscriber_id, attribute_id, value) + select _id, a_caller_lnp, rs.caller_lnp_dpid + from voip_rewrite_rule_sets rs + where id = _set_id; + insert into voip_usr_preferences (subscriber_id, attribute_id, value) + select _id, a_callee_lnp, rs.callee_lnp_dpid + from voip_rewrite_rule_sets rs + where id = _set_id; + end loop fix_loop; + close usr_cur; + + set done := false; + open peer_cur; + fix_loop: loop + fetch peer_cur into _id, _val; + if done then + leave fix_loop; + end if; + select id into _set_id + from voip_rewrite_rule_sets + where caller_in_dpid = _val; + insert into voip_peer_preferences (peer_host_id, attribute_id, value) + select _id, a_caller_lnp, rs.caller_lnp_dpid + from voip_rewrite_rule_sets rs + where id = _set_id; + insert into voip_peer_preferences (peer_host_id, attribute_id, value) + select _id, a_callee_lnp, rs.callee_lnp_dpid + from voip_rewrite_rule_sets rs + where id = _set_id; + end loop fix_loop; + close peer_cur; + +end;; +delimiter ; + +call tmp_update_lnp_rwr_preferences(); + +drop procedure tmp_update_lnp_rwr_preferences; + +commit;