[open-ils-commits] ***SPAM*** [GIT] Evergreen ILS branch master updated. 4be795262dc199453a4e632f19d8a5f8aa94d01c

Evergreen Git git at git.evergreen-ils.org
Tue Feb 18 13:01:37 EST 2014


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Evergreen ILS".

The branch, master has been updated
       via  4be795262dc199453a4e632f19d8a5f8aa94d01c (commit)
       via  b7f0b1da24b626c92d84245298b228d37cb6ca60 (commit)
      from  6d750a0023cc1197b460d2e254d1ba89c376f18a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 4be795262dc199453a4e632f19d8a5f8aa94d01c
Author: Mike Rylander <mrylander at gmail.com>
Date:   Tue Feb 18 13:01:08 2014 -0500

    Stamping upgrade script for supsersede/deprecate logic fixes
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 6c16e9b..d56b55e 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -91,7 +91,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 ('0859', :eg_version); -- bshum/miker
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0860', :eg_version); -- berick/miker
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.deprecate-supersede-check-repairs.sql b/Open-ILS/src/sql/Pg/upgrade/0860.schema.deprecate-supersede-check-repairs.sql
similarity index 96%
rename from Open-ILS/src/sql/Pg/upgrade/XXXX.schema.deprecate-supersede-check-repairs.sql
rename to Open-ILS/src/sql/Pg/upgrade/0860.schema.deprecate-supersede-check-repairs.sql
index 10326de..9302e9e 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.deprecate-supersede-check-repairs.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0860.schema.deprecate-supersede-check-repairs.sql
@@ -1,3 +1,7 @@
+BEGIN;
+
+-- oh, the irony
+SELECT evergreen.upgrade_deps_block_check('0860', :eg_version);
 
 CREATE OR REPLACE FUNCTION evergreen.array_overlap_check (/* field */) RETURNS TRIGGER AS $$
 DECLARE
@@ -56,3 +60,5 @@ Upgrade script % can not be applied:
 END;
 $$ LANGUAGE PLPGSQL;
 
+COMMIT;
+

commit b7f0b1da24b626c92d84245298b228d37cb6ca60
Author: Bill Erickson <berick at esilibrary.com>
Date:   Thu Dec 19 10:27:26 2013 -0500

    DB patch supersede/deprecate logic repairs; unit tests
    
    * Fix some thinkos in the various DB functions for calculating
      supersedes/deprecation logic.
    
    * Added a pgtap test
    
    Signed-off-by: Bill Erickson <berick at esilibrary.com>
    Signed-off-by: Mike Rylander <mrylander at gmail.com>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index 28a8b6c..6c16e9b 100644
--- a/Open-ILS/src/sql/Pg/002.schema.config.sql
+++ b/Open-ILS/src/sql/Pg/002.schema.config.sql
@@ -74,7 +74,7 @@ DECLARE
     fld     TEXT;
     cnt     INT;
 BEGIN
-    fld := TG_ARGV[1];
+    fld := TG_ARGV[0];
     EXECUTE 'SELECT COUNT(*) FROM '|| TG_TABLE_SCHEMA ||'.'|| TG_TABLE_NAME ||' WHERE '|| fld ||' && ($1).'|| fld INTO cnt USING NEW;
     IF cnt > 0 THEN
         RAISE EXCEPTION 'Cannot insert duplicate array into field % of table %', fld, TG_TABLE_SCHEMA ||'.'|| TG_TABLE_NAME;
@@ -853,7 +853,7 @@ $f$ LANGUAGE PLPGSQL;
 CREATE OR REPLACE FUNCTION evergreen.upgrade_list_applied_deprecates ( my_db_patch TEXT ) RETURNS SETOF evergreen.patch AS $$
     SELECT  DISTINCT l.version
       FROM  config.upgrade_log l
-            JOIN config.db_patch_dependencies d ON (l.version::TEXT[] && d.deprecates)
+            JOIN config.db_patch_dependencies d ON (l.version = ANY(d.deprecates))
       WHERE d.db_patch = $1
 $$ LANGUAGE SQL;
 
@@ -861,7 +861,7 @@ $$ LANGUAGE SQL;
 CREATE OR REPLACE FUNCTION evergreen.upgrade_list_applied_supersedes ( my_db_patch TEXT ) RETURNS SETOF evergreen.patch AS $$
     SELECT  DISTINCT l.version
       FROM  config.upgrade_log l
-            JOIN config.db_patch_dependencies d ON (l.version::TEXT[] && d.supersedes)
+            JOIN config.db_patch_dependencies d ON (l.version = ANY(d.supersedes))
       WHERE d.db_patch = $1
 $$ LANGUAGE SQL;
 
@@ -907,8 +907,8 @@ Upgrade script % can not be applied:
   deprecated by %
   superseded by %',
             my_db_patch,
-            ARRAY_AGG(evergreen.upgrade_list_applied_deprecates(my_db_patch)),
-            ARRAY_AGG(evergreen.upgrade_list_applied_supersedes(my_db_patch)),
+            (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_deprecates(my_db_patch)),
+            (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_supersedes(my_db_patch)),
             evergreen.upgrade_list_applied_deprecated(my_db_patch),
             evergreen.upgrade_list_applied_superseded(my_db_patch);
     END IF;
diff --git a/Open-ILS/src/sql/Pg/t/db_patch_dep_checks.pg b/Open-ILS/src/sql/Pg/t/db_patch_dep_checks.pg
new file mode 100644
index 0000000..57c5085
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/t/db_patch_dep_checks.pg
@@ -0,0 +1,36 @@
+BEGIN;
+
+SELECT plan(5);
+
+INSERT INTO config.db_patch_dependencies (db_patch, supersedes, deprecates)
+    VALUES
+        ('AAAE', '{AAAD}', '{}'),
+        ('AAAF', '{}', '{AAAC,AAAB}');
+
+-- AAAB is deprecated by AAAF
+SELECT is(evergreen.upgrade_list_applied_deprecated('AAAB'), 'AAAF', 'deprecated');
+
+-- AAAC is deprecated by AAAF
+SELECT is(evergreen.upgrade_list_applied_deprecated('AAAC'), 'AAAF', 'deprecated');
+
+-- AAAD is superseded by AAAE
+SELECT is(evergreen.upgrade_list_applied_superseded('AAAD'), 'AAAE', 'superseded');
+
+-- add some applied versions
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('AAAB', 'AAAA');
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('AAAC', 'AAAB');
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('AAAD', 'AAAC');
+
+-- AAAE supersedes AAAD
+SELECT is(
+    (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_supersedes('AAAE')),
+    '{AAAD}'
+);
+
+-- AAAF deprecates AAAB, AAAC
+SELECT is(
+    (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_deprecates('AAAF')),
+    '{AAAB,AAAC}'
+);
+
+ROLLBACK;
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.deprecate-supersede-check-repairs.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.deprecate-supersede-check-repairs.sql
new file mode 100644
index 0000000..10326de
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.deprecate-supersede-check-repairs.sql
@@ -0,0 +1,58 @@
+
+CREATE OR REPLACE FUNCTION evergreen.array_overlap_check (/* field */) RETURNS TRIGGER AS $$
+DECLARE
+    fld     TEXT;
+    cnt     INT;
+BEGIN
+    fld := TG_ARGV[0];
+    EXECUTE 'SELECT COUNT(*) FROM '|| TG_TABLE_SCHEMA ||'.'|| TG_TABLE_NAME ||' WHERE '|| fld ||' && ($1).'|| fld INTO cnt USING NEW;
+    IF cnt > 0 THEN
+        RAISE EXCEPTION 'Cannot insert duplicate array into field % of table %', fld, TG_TABLE_SCHEMA ||'.'|| TG_TABLE_NAME;
+    END IF;
+    RETURN NEW;
+END;
+$$ LANGUAGE PLPGSQL;
+
+
+CREATE OR REPLACE FUNCTION evergreen.upgrade_list_applied_deprecates ( my_db_patch TEXT ) RETURNS SETOF evergreen.patch AS $$
+    SELECT  DISTINCT l.version
+      FROM  config.upgrade_log l
+            JOIN config.db_patch_dependencies d ON (l.version = ANY(d.deprecates))
+      WHERE d.db_patch = $1
+$$ LANGUAGE SQL;
+
+-- List applied db patches that are superseded by (and block the application of) my_db_patch
+CREATE OR REPLACE FUNCTION evergreen.upgrade_list_applied_supersedes ( my_db_patch TEXT ) RETURNS SETOF evergreen.patch AS $$
+    SELECT  DISTINCT l.version
+      FROM  config.upgrade_log l
+            JOIN config.db_patch_dependencies d ON (l.version = ANY(d.supersedes))
+      WHERE d.db_patch = $1
+$$ LANGUAGE SQL;
+
+
+CREATE OR REPLACE FUNCTION evergreen.upgrade_deps_block_check ( my_db_patch TEXT, my_applied_to TEXT ) RETURNS BOOL AS $$
+DECLARE 
+    deprecates TEXT;
+    supersedes TEXT;
+BEGIN
+    IF NOT evergreen.upgrade_verify_no_dep_conflicts( my_db_patch ) THEN
+        SELECT  STRING_AGG(patch, ', ') INTO deprecates FROM evergreen.upgrade_list_applied_deprecates(my_db_patch);
+        SELECT  STRING_AGG(patch, ', ') INTO supersedes FROM evergreen.upgrade_list_applied_supersedes(my_db_patch);
+        RAISE EXCEPTION '
+Upgrade script % can not be applied:
+  applied deprecated scripts %
+  applied superseded scripts %
+  deprecated by %
+  superseded by %',
+            my_db_patch,
+            (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_deprecates(my_db_patch)),
+            (SELECT ARRAY_AGG(patch) FROM evergreen.upgrade_list_applied_supersedes(my_db_patch)),
+            evergreen.upgrade_list_applied_deprecated(my_db_patch),
+            evergreen.upgrade_list_applied_superseded(my_db_patch);
+    END IF;
+
+    INSERT INTO config.upgrade_log (version, applied_to) VALUES (my_db_patch, my_applied_to);
+    RETURN TRUE;
+END;
+$$ LANGUAGE PLPGSQL;
+

-----------------------------------------------------------------------

Summary of changes:
 Open-ILS/src/sql/Pg/002.schema.config.sql          |   12 ++--
 Open-ILS/src/sql/Pg/t/db_patch_dep_checks.pg       |   36 +++++++++++
 ...60.schema.deprecate-supersede-check-repairs.sql |   64 ++++++++++++++++++++
 3 files changed, 106 insertions(+), 6 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/t/db_patch_dep_checks.pg
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0860.schema.deprecate-supersede-check-repairs.sql


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list