diff --git a/migration/18.04/1804.sql b/migration/18.04/1804.sql index 4586a55b0ca608f0c837fdcd9a060670b3a73952..8d4801b839c2bcb414cabefc0c1ee0d2cf1abba4 100644 --- a/migration/18.04/1804.sql +++ b/migration/18.04/1804.sql @@ -675,14 +675,22 @@ DO $$ BEGIN SELECT users.id, usergroups.id, groupbasket.basket_id, TRUE FROM users, usergroups, groupbasket, usergroup_content WHERE usergroup_content.primary_group = 'Y' AND groupbasket.group_id = usergroup_content.group_id AND users.user_id = usergroup_content.user_id AND usergroups.group_id = usergroup_content.group_id ORDER BY users.id; - insert into users_baskets_preferences (user_serial_id, group_serial_id, basket_id, display) - select users.id, usergroups.id, user_baskets_secondary.basket_id, TRUE from users, usergroups, user_baskets_secondary - where users.user_id = user_baskets_secondary.user_id and usergroups.group_id = user_baskets_secondary.group_id - order by users.id; - INSERT INTO users_baskets_preferences (user_serial_id, group_serial_id, basket_id, display) - SELECT u.id, g.id, 'IndexingBasket', TRUE FROM users as u INNER JOIN usergroup_content AS c ON u.user_id=c.user_id INNER JOIN usergroups AS g ON g.group_id=c.group_id - WHERE (u.user_id,g.group_id) IN (SELECT user_id, group_id FROM usergroup_content WHERE primary_group = 'N'); - DROP TABLE IF EXISTS user_baskets_secondary; + + BEGIN + INSERT INTO users_baskets_preferences (user_serial_id, group_serial_id, basket_id, display) + SELECT users.id, usergroups.id, user_baskets_secondary.basket_id, TRUE from users, usergroups, user_baskets_secondary + WHERE users.user_id = user_baskets_secondary.user_id and usergroups.group_id = user_baskets_secondary.group_id + ORDER BY users.id; + EXCEPTION WHEN unique_violation THEN + END; + + BEGIN + INSERT INTO users_baskets_preferences (user_serial_id, group_serial_id, basket_id, display) + SELECT u.id, g.id, 'IndexingBasket', TRUE FROM users as u INNER JOIN usergroup_content AS c ON u.user_id=c.user_id INNER JOIN usergroups AS g ON g.group_id=c.group_id + WHERE (u.user_id,g.group_id) IN (SELECT user_id, group_id FROM usergroup_content WHERE primary_group = 'N'); + EXCEPTION WHEN unique_violation THEN + END; + END IF; END$$;