You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
db-schema/db_scripts/diff/10180.up

25 lines
1.1 KiB

# Remove duplicated rules on the same group. Triggers should do the rest for lcr_rule.
use provisioning;
#make sure that the repeated have caller_prefix '' instead of null or won't be detected
UPDATE voip_peer_rules SET caller_pattern='' WHERE caller_pattern IS NULL;
#Can't use ALTER IGNORE in Percona https://bugs.launchpad.net/percona-xtradb/+bug/604439
#ALTER IGNORE TABLE voip_peer_rules ADD UNIQUE KEY `idx1temp` (`group_id`, `callee_prefix`, `callee_pattern`, `caller_pattern`);
#ALTER TABLE voip_peer_rules DROP KEY `idx1temp`;
#Remove duplicated that could be added via ossbss. Removed keys via triggers will be added later
CREATE TABLE newtemp LIKE voip_peer_rules;
ALTER TABLE newtemp ADD UNIQUE KEY `idx1temp` (`group_id`, `callee_prefix`, `callee_pattern`, `caller_pattern`);
INSERT IGNORE INTO newtemp SELECT * FROM voip_peer_rules;
DELETE FROM voip_peer_rules;
INSERT INTO voip_peer_rules SELECT * FROM newtemp;
DROP table newtemp;
# Now we can create the unique key without duplicates
use kamailio;
ALTER TABLE lcr_rule ADD UNIQUE KEY `lcr_id_prefix_from_uri_idx` (`lcr_id`,`prefix`,`from_uri`, `request_uri`, `group_id`);