From: Jason Stephenson Date: Sat, 6 May 2017 18:16:57 +0000 (-0400) Subject: LP#1378829 Stamp Upgrade Script & Add Release Note X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=bfa994b3f9d0f39d03852316ed2ee6d7269ae25a;p=evergreen%2Fpines.git LP#1378829 Stamp Upgrade Script & Add Release Note Signed-off-by: Jason Stephenson --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 2655c17c0b..2ef324869b 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -90,7 +90,7 @@ CREATE TRIGGER no_overlapping_deps BEFORE INSERT OR UPDATE ON config.db_patch_dependencies FOR EACH ROW EXECUTE PROCEDURE evergreen.array_overlap_check ('deprecates'); -INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1036', :eg_version); -- mmorgan/bshum +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('1037', :eg_version); -- jeff/dyrcona CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/1037.data.fix_long_overdue_perm.sql b/Open-ILS/src/sql/Pg/upgrade/1037.data.fix_long_overdue_perm.sql new file mode 100644 index 0000000000..9a9cdd627b --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/1037.data.fix_long_overdue_perm.sql @@ -0,0 +1,101 @@ +-- Evergreen DB patch XXXX.data.fix_long_overdue_perm.sql +-- +-- Update permission 549 to have a "code" value that matches what +-- the Perl code references +-- +BEGIN; + + +-- check whether patch can be applied +SELECT evergreen.upgrade_deps_block_check('1037', :eg_version); -- jeff + +-- For some time now, the database seed data / upgrade scripts have created +-- a permission with id 549 and code COPY_STATUS_LONGOVERDUE.override, while +-- the Perl code references a permission with code +-- COPY_STATUS_LONG_OVERDUE.override +-- +-- Below, we attempt to handle at least three possible database states: +-- +-- 1) no corrective action has been taken, permission exists with id 549 and +-- code COPY_STATUS_LONGOVERDUE.override +-- +-- 2) permission with id 549 has already been updated to have code +-- COPY_STATUS_LONG_OVERDUE.override +-- +-- 3) new permission with unknown id and code COPY_STATUS_LONG_OVERDUE.override +-- has been added, and potentially assigned to users/groups +-- +-- In the case of 3, users and groups may have been assigned both perm id 549 +-- and the local permission of unknown id. +-- +-- The desired end result is that we should have a permission.perm_list +-- entry with id 549 and code COPY_STATUS_LONG_OVERDUE.override, +-- any locally-created permission with that same code but a different id +-- is deleted, and any users or groups that had been granted that locally-created +-- permission (by id) have been granted permission id 549 if not already granted. +-- +-- If for some reason the permission at id 549 has an unexpected value for "code", +-- the end result of this upgrade script should be a no-op. + +-- grant permission 549 to any group that +-- has a potentially locally-added perm +-- with code COPY_STATUS_LONG_OVERDUE.override +WITH new_grp_perms AS ( +SELECT grp, 549 AS perm, depth, grantable +FROM permission.grp_perm_map pgpm +JOIN permission.perm_list ppl ON ppl.id = pgpm.perm +WHERE ppl.code = 'COPY_STATUS_LONG_OVERDUE.override' +-- short circuit if perm id 549 exists and doesn't have the expected code +AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override') +-- don't try to assign perm 549 if already assigned +AND NOT EXISTS (SELECT 1 FROM permission.grp_perm_map pgpm2 WHERE pgpm2.grp = pgpm.grp AND pgpm2.perm = 549) +) +INSERT INTO permission.grp_perm_map +(grp, perm, depth, grantable) +SELECT grp, perm, depth, grantable +FROM new_grp_perms; + +-- grant permission 549 to any user that +-- has a potentially locally-added perm +-- with code COPY_STATUS_LONG_OVERDUE.override +WITH new_usr_perms AS ( +SELECT usr, 549 AS perm, depth, grantable +FROM permission.usr_perm_map pupm +JOIN permission.perm_list ppl ON ppl.id = pupm.perm +WHERE ppl.code = 'COPY_STATUS_LONG_OVERDUE.override' +-- short circuit if perm id 549 exists and doesn't have the expected code +AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override') +-- don't try to assign perm 549 if already assigned +AND NOT EXISTS (SELECT 1 FROM permission.usr_perm_map pupm2 WHERE pupm2.usr = pupm.usr AND pupm2.perm = 549) +) +INSERT INTO permission.usr_perm_map +(usr, perm, depth, grantable) +SELECT usr, perm, depth, grantable +FROM new_usr_perms; + +-- delete any group assignments of the locally-added perm +DELETE FROM permission.grp_perm_map +WHERE perm = (SELECT id FROM permission.perm_list WHERE code = 'COPY_STATUS_LONG_OVERDUE.override' AND id <> 549) +-- short circuit if perm id 549 exists and doesn't have the expected code +AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override'); + +-- delete any user assignments of the locally-added perm +DELETE FROM permission.usr_perm_map +WHERE perm = (SELECT id FROM permission.perm_list WHERE code = 'COPY_STATUS_LONG_OVERDUE.override' AND id <> 549) +-- short circuit if perm id 549 exists and doesn't have the expected code +AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override'); + +-- delete the locally-added perm, if any +DELETE FROM permission.perm_list +WHERE code = 'COPY_STATUS_LONG_OVERDUE.override' +AND id <> 549 +-- short circuit if perm id 549 exists and doesn't have the expected code +AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override'); + +-- update perm id 549 to the correct code, if not already +UPDATE permission.perm_list +SET code = 'COPY_STATUS_LONG_OVERDUE.override' +WHERE id = 549 +AND code = 'COPY_STATUS_LONGOVERDUE.override'; + +COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.fix_long_overdue_perm.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.data.fix_long_overdue_perm.sql deleted file mode 100644 index 795f328c4f..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.data.fix_long_overdue_perm.sql +++ /dev/null @@ -1,101 +0,0 @@ --- Evergreen DB patch XXXX.data.fix_long_overdue_perm.sql --- --- Update permission 549 to have a "code" value that matches what --- the Perl code references --- -BEGIN; - - --- check whether patch can be applied -SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version); -- jeff - --- For some time now, the database seed data / upgrade scripts have created --- a permission with id 549 and code COPY_STATUS_LONGOVERDUE.override, while --- the Perl code references a permission with code --- COPY_STATUS_LONG_OVERDUE.override --- --- Below, we attempt to handle at least three possible database states: --- --- 1) no corrective action has been taken, permission exists with id 549 and --- code COPY_STATUS_LONGOVERDUE.override --- --- 2) permission with id 549 has already been updated to have code --- COPY_STATUS_LONG_OVERDUE.override --- --- 3) new permission with unknown id and code COPY_STATUS_LONG_OVERDUE.override --- has been added, and potentially assigned to users/groups --- --- In the case of 3, users and groups may have been assigned both perm id 549 --- and the local permission of unknown id. --- --- The desired end result is that we should have a permission.perm_list --- entry with id 549 and code COPY_STATUS_LONG_OVERDUE.override, --- any locally-created permission with that same code but a different id --- is deleted, and any users or groups that had been granted that locally-created --- permission (by id) have been granted permission id 549 if not already granted. --- --- If for some reason the permission at id 549 has an unexpected value for "code", --- the end result of this upgrade script should be a no-op. - --- grant permission 549 to any group that --- has a potentially locally-added perm --- with code COPY_STATUS_LONG_OVERDUE.override -WITH new_grp_perms AS ( -SELECT grp, 549 AS perm, depth, grantable -FROM permission.grp_perm_map pgpm -JOIN permission.perm_list ppl ON ppl.id = pgpm.perm -WHERE ppl.code = 'COPY_STATUS_LONG_OVERDUE.override' --- short circuit if perm id 549 exists and doesn't have the expected code -AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override') --- don't try to assign perm 549 if already assigned -AND NOT EXISTS (SELECT 1 FROM permission.grp_perm_map pgpm2 WHERE pgpm2.grp = pgpm.grp AND pgpm2.perm = 549) -) -INSERT INTO permission.grp_perm_map -(grp, perm, depth, grantable) -SELECT grp, perm, depth, grantable -FROM new_grp_perms; - --- grant permission 549 to any user that --- has a potentially locally-added perm --- with code COPY_STATUS_LONG_OVERDUE.override -WITH new_usr_perms AS ( -SELECT usr, 549 AS perm, depth, grantable -FROM permission.usr_perm_map pupm -JOIN permission.perm_list ppl ON ppl.id = pupm.perm -WHERE ppl.code = 'COPY_STATUS_LONG_OVERDUE.override' --- short circuit if perm id 549 exists and doesn't have the expected code -AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override') --- don't try to assign perm 549 if already assigned -AND NOT EXISTS (SELECT 1 FROM permission.usr_perm_map pupm2 WHERE pupm2.usr = pupm.usr AND pupm2.perm = 549) -) -INSERT INTO permission.usr_perm_map -(usr, perm, depth, grantable) -SELECT usr, perm, depth, grantable -FROM new_usr_perms; - --- delete any group assignments of the locally-added perm -DELETE FROM permission.grp_perm_map -WHERE perm = (SELECT id FROM permission.perm_list WHERE code = 'COPY_STATUS_LONG_OVERDUE.override' AND id <> 549) --- short circuit if perm id 549 exists and doesn't have the expected code -AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override'); - --- delete any user assignments of the locally-added perm -DELETE FROM permission.usr_perm_map -WHERE perm = (SELECT id FROM permission.perm_list WHERE code = 'COPY_STATUS_LONG_OVERDUE.override' AND id <> 549) --- short circuit if perm id 549 exists and doesn't have the expected code -AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override'); - --- delete the locally-added perm, if any -DELETE FROM permission.perm_list -WHERE code = 'COPY_STATUS_LONG_OVERDUE.override' -AND id <> 549 --- short circuit if perm id 549 exists and doesn't have the expected code -AND EXISTS (SELECT 1 FROM permission.perm_list ppl WHERE ppl.id = 549 and ppl.code = 'COPY_STATUS_LONGOVERDUE.override'); - --- update perm id 549 to the correct code, if not already -UPDATE permission.perm_list -SET code = 'COPY_STATUS_LONG_OVERDUE.override' -WHERE id = 549 -AND code = 'COPY_STATUS_LONGOVERDUE.override'; - -COMMIT; diff --git a/docs/RELEASE_NOTES_NEXT/Administration/fix_copy_status_long_overdue_override_permission_typo.adoc b/docs/RELEASE_NOTES_NEXT/Administration/fix_copy_status_long_overdue_override_permission_typo.adoc new file mode 100644 index 0000000000..396cfb7fb9 --- /dev/null +++ b/docs/RELEASE_NOTES_NEXT/Administration/fix_copy_status_long_overdue_override_permission_typo.adoc @@ -0,0 +1,7 @@ +Fix COPY_STATUS_LONGOVERDUE.override Permission Typo +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The existing permission was incorrectly created with a code of +COPY_STATUS_LONGOVERDUE.override, while the event thrown requires a +permission with a code of COPY_STATUS_LONG_OVERDUE.override. This +update changes the permission code to match what the event requires. +