[open-ils-commits] [GIT] Evergreen ILS branch master updated. 463f5358841f1ec668290ad598dc0e83b9e8fc90

Evergreen Git git at git.evergreen-ils.org
Wed May 4 13:00:02 EDT 2016


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  463f5358841f1ec668290ad598dc0e83b9e8fc90 (commit)
       via  5a4a6518b5ba10ab3b14bc0bd9530d47096fb29c (commit)
       via  452c4de9ed109717b216154fccd031aeb6e02007 (commit)
      from  6a8a4f077b5739d4732789386abc2148864512b3 (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 463f5358841f1ec668290ad598dc0e83b9e8fc90
Author: Ben Shum <ben at evergreener.net>
Date:   Wed May 4 12:59:01 2016 -0400

    LP#1568046: Stamping upgrade script for changes to permission.grp_ancestors
    
    Signed-off-by: Ben Shum <ben at evergreener.net>

diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql
index fc8f13e..cad3b82 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 ('0978', :eg_version); -- gmcharlt/miker
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0979', :eg_version); -- miker/dyrcona/bshum
 
 CREATE TABLE config.bib_source (
 	id		SERIAL	PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql b/Open-ILS/src/sql/Pg/upgrade/0979.function.grp-tree-functions-via-cte.sql
similarity index 97%
rename from Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
rename to Open-ILS/src/sql/Pg/upgrade/0979.function.grp-tree-functions-via-cte.sql
index 28dc061..82263bb 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/0979.function.grp-tree-functions-via-cte.sql
@@ -1,5 +1,7 @@
 BEGIN;
 
+SELECT evergreen.upgrade_deps_block_check('0979', :eg_version);
+
 -- Replace connectby from the tablefunc extension with CTEs
 
 

commit 5a4a6518b5ba10ab3b14bc0bd9530d47096fb29c
Author: Jason Stephenson <jstephenson at mvlcstaff.org>
Date:   Fri Apr 8 15:30:32 2016 -0400

    LP#1568046: Fix some mistakes in previous commit.
    
    Looks like a few thinkos crept in from it being dashed off in a hurry.
    
    Signed-off-by: Jason Stephenson <jstephenson at mvlcstaff.org>
    Signed-off-by: Ben Shum <ben at evergreener.net>

diff --git a/Open-ILS/src/sql/Pg/006.schema.permissions.sql b/Open-ILS/src/sql/Pg/006.schema.permissions.sql
index 9c310fe..c351ba8 100644
--- a/Open-ILS/src/sql/Pg/006.schema.permissions.sql
+++ b/Open-ILS/src/sql/Pg/006.schema.permissions.sql
@@ -124,12 +124,12 @@ $$ LANGUAGE SQL STABLE ROWS 1;
 CREATE OR REPLACE FUNCTION permission.grp_descendants( INT ) RETURNS SETOF permission.grp_tree AS $$
     WITH RECURSIVE descendant_depth AS (
         SELECT  gr.id,
-                gr.parent,
+                gr.parent
           FROM  permission.grp_tree gr
           WHERE gr.id = $1
             UNION ALL
         SELECT  gr.id,
-                gr.parent,
+                gr.parent
           FROM  permission.grp_tree gr
                 JOIN descendant_depth dd ON (dd.id = gr.parent)
     ) SELECT gr.* FROM permission.grp_tree gr JOIN descendant_depth USING (id);
@@ -137,26 +137,26 @@ $$ LANGUAGE SQL ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_tree_full_path ( INT ) RETURNS SETOF permission.grp_tree AS $$
         SELECT  *
-          FROM  permission.grp_tree_ancestors($1)
+          FROM  permission.grp_ancestors($1)
                         UNION
         SELECT  *
-          FROM  permission.grp_tree_descendants($1);
+          FROM  permission.grp_descendants($1);
 $$ LANGUAGE SQL STABLE ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_tree_combined_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
         SELECT  *
-          FROM  permission.grp_tree_ancestors($1)
+          FROM  permission.grp_ancestors($1)
                         UNION
         SELECT  *
-          FROM  permission.grp_tree_ancestors($2);
+          FROM  permission.grp_ancestors($2);
 $$ LANGUAGE SQL STABLE ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_tree_common_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
         SELECT  *
-          FROM  permission.grp_tree_ancestors($1)
+          FROM  permission.grp_ancestors($1)
                         INTERSECT
         SELECT  *
-          FROM  permission.grp_tree_ancestors($2);
+          FROM  permission.grp_ancestors($2);
 $$ LANGUAGE SQL STABLE ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.usr_perms ( INT ) RETURNS SETOF permission.usr_perm_map AS $$
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
index 7646e99..28dc061 100644
--- a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
@@ -19,12 +19,12 @@ $$ LANGUAGE SQL ROWS 1;
 CREATE OR REPLACE FUNCTION permission.grp_descendants( INT ) RETURNS SETOF permission.grp_tree AS $$
     WITH RECURSIVE descendant_depth AS (
         SELECT  gr.id,
-                gr.parent,
+                gr.parent
           FROM  permission.grp_tree gr
           WHERE gr.id = $1
             UNION ALL
         SELECT  gr.id,
-                gr.parent,
+                gr.parent
           FROM  permission.grp_tree gr
                 JOIN descendant_depth dd ON (dd.id = gr.parent)
     ) SELECT gr.* FROM permission.grp_tree gr JOIN descendant_depth USING (id);
@@ -34,26 +34,26 @@ $$ LANGUAGE SQL ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_tree_full_path ( INT ) RETURNS SETOF permission.grp_tree AS $$
         SELECT  *
-          FROM  permission.grp_tree_ancestors($1)
+          FROM  permission.grp_ancestors($1)
                         UNION
         SELECT  *
-          FROM  permission.grp_tree_descendants($1);
+          FROM  permission.grp_descendants($1);
 $$ LANGUAGE SQL STABLE ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_tree_combined_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
         SELECT  *
-          FROM  permission.grp_tree_ancestors($1)
+          FROM  permission.grp_ancestors($1)
                         UNION
         SELECT  *
-          FROM  permission.grp_tree_ancestors($2);
+          FROM  permission.grp_ancestors($2);
 $$ LANGUAGE SQL STABLE ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_tree_common_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
         SELECT  *
-          FROM  permission.grp_tree_ancestors($1)
+          FROM  permission.grp_ancestors($1)
                         INTERSECT
         SELECT  *
-          FROM  permission.grp_tree_ancestors($2);
+          FROM  permission.grp_ancestors($2);
 $$ LANGUAGE SQL STABLE ROWS 1;
 
 COMMIT;

commit 452c4de9ed109717b216154fccd031aeb6e02007
Author: Mike Rylander <mrylander at gmail.com>
Date:   Fri Apr 8 14:49:10 2016 -0400

    LP#1568046: Use CTE instead of connectby for group tree queries
    
    Signed-off-by: Mike Rylander <mrylander at gmail.com>
    Signed-off-by: Jason Stephenson <jstephenson at mvlcstaff.org>
    Signed-off-by: Ben Shum <ben at evergreener.net>

diff --git a/Open-ILS/src/sql/Pg/006.schema.permissions.sql b/Open-ILS/src/sql/Pg/006.schema.permissions.sql
index 27d5a42..9c310fe 100644
--- a/Open-ILS/src/sql/Pg/006.schema.permissions.sql
+++ b/Open-ILS/src/sql/Pg/006.schema.permissions.sql
@@ -89,17 +89,16 @@ CREATE TABLE permission.usr_grp_map (
 		CONSTRAINT usr_grp_once UNIQUE (usr,grp)
 );
 
-CREATE OR REPLACE FUNCTION permission.grp_ancestors ( INT ) RETURNS SETOF permission.grp_tree AS $$
-	SELECT	a.*
-	FROM	connectby('permission.grp_tree'::text,'parent'::text,'id'::text,'name'::text,$1::text,100,'.'::text)
-			AS t(keyid text, parent_keyid text, level int, branch text,pos int)
-		JOIN permission.grp_tree a ON a.id::text = t.keyid::text
-	ORDER BY
-		CASE WHEN a.parent IS NULL
-			THEN 0
-			ELSE 1
-		END, a.name;
-$$ LANGUAGE SQL STABLE ROWS 1;
+CREATE OR REPLACE FUNCTION permission.grp_ancestors( INT ) RETURNS SETOF permission.grp_tree AS $$
+    WITH RECURSIVE grp_ancestors_distance(id, distance) AS (
+            SELECT $1, 0
+        UNION
+            SELECT ou.parent, ouad.distance+1
+            FROM permission.grp_tree ou JOIN grp_ancestors_distance ouad ON (ou.id = ouad.id)
+            WHERE ou.parent IS NOT NULL
+    )
+    SELECT ou.* FROM permission.grp_tree ou JOIN grp_ancestors_distance ouad USING (id) ORDER BY ouad.distance DESC;
+$$ LANGUAGE SQL ROWS 1;
 
 CREATE OR REPLACE FUNCTION permission.grp_ancestors_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
     WITH RECURSIVE grp_ancestors_distance(id, distance) AS (
@@ -122,6 +121,44 @@ CREATE OR REPLACE FUNCTION permission.grp_descendants_distance( INT ) RETURNS TA
     SELECT * FROM grp_descendants_distance;
 $$ LANGUAGE SQL STABLE ROWS 1;
 
+CREATE OR REPLACE FUNCTION permission.grp_descendants( INT ) RETURNS SETOF permission.grp_tree AS $$
+    WITH RECURSIVE descendant_depth AS (
+        SELECT  gr.id,
+                gr.parent,
+          FROM  permission.grp_tree gr
+          WHERE gr.id = $1
+            UNION ALL
+        SELECT  gr.id,
+                gr.parent,
+          FROM  permission.grp_tree gr
+                JOIN descendant_depth dd ON (dd.id = gr.parent)
+    ) SELECT gr.* FROM permission.grp_tree gr JOIN descendant_depth USING (id);
+$$ LANGUAGE SQL ROWS 1;
+
+CREATE OR REPLACE FUNCTION permission.grp_tree_full_path ( INT ) RETURNS SETOF permission.grp_tree AS $$
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($1)
+                        UNION
+        SELECT  *
+          FROM  permission.grp_tree_descendants($1);
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION permission.grp_tree_combined_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($1)
+                        UNION
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($2);
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION permission.grp_tree_common_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($1)
+                        INTERSECT
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($2);
+$$ LANGUAGE SQL STABLE ROWS 1;
+
 CREATE OR REPLACE FUNCTION permission.usr_perms ( INT ) RETURNS SETOF permission.usr_perm_map AS $$
 	SELECT	DISTINCT ON (usr,perm) *
 	  FROM	(
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
new file mode 100644
index 0000000..7646e99
--- /dev/null
+++ b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.grp-tree-functions-via-cte.sql
@@ -0,0 +1,60 @@
+BEGIN;
+
+-- Replace connectby from the tablefunc extension with CTEs
+
+
+CREATE OR REPLACE FUNCTION permission.grp_ancestors( INT ) RETURNS SETOF permission.grp_tree AS $$
+    WITH RECURSIVE grp_ancestors_distance(id, distance) AS (
+            SELECT $1, 0
+        UNION
+            SELECT ou.parent, ouad.distance+1
+            FROM permission.grp_tree ou JOIN grp_ancestors_distance ouad ON (ou.id = ouad.id)
+            WHERE ou.parent IS NOT NULL
+    )
+    SELECT ou.* FROM permission.grp_tree ou JOIN grp_ancestors_distance ouad USING (id) ORDER BY ouad.distance DESC;
+$$ LANGUAGE SQL ROWS 1;
+
+-- Add a utility function to find descendant groups.
+
+CREATE OR REPLACE FUNCTION permission.grp_descendants( INT ) RETURNS SETOF permission.grp_tree AS $$
+    WITH RECURSIVE descendant_depth AS (
+        SELECT  gr.id,
+                gr.parent,
+          FROM  permission.grp_tree gr
+          WHERE gr.id = $1
+            UNION ALL
+        SELECT  gr.id,
+                gr.parent,
+          FROM  permission.grp_tree gr
+                JOIN descendant_depth dd ON (dd.id = gr.parent)
+    ) SELECT gr.* FROM permission.grp_tree gr JOIN descendant_depth USING (id);
+$$ LANGUAGE SQL ROWS 1;
+
+-- Add utility functions to work with permission groups as general tree-ish sets.
+
+CREATE OR REPLACE FUNCTION permission.grp_tree_full_path ( INT ) RETURNS SETOF permission.grp_tree AS $$
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($1)
+                        UNION
+        SELECT  *
+          FROM  permission.grp_tree_descendants($1);
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION permission.grp_tree_combined_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($1)
+                        UNION
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($2);
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION permission.grp_tree_common_ancestors ( INT, INT ) RETURNS SETOF permission.grp_tree AS $$
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($1)
+                        INTERSECT
+        SELECT  *
+          FROM  permission.grp_tree_ancestors($2);
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+COMMIT;
+

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

Summary of changes:
 Open-ILS/src/sql/Pg/002.schema.config.sql          |    2 +-
 Open-ILS/src/sql/Pg/006.schema.permissions.sql     |   59 +++++++++++++++----
 .../0979.function.grp-tree-functions-via-cte.sql   |   62 ++++++++++++++++++++
 3 files changed, 111 insertions(+), 12 deletions(-)
 create mode 100644 Open-ILS/src/sql/Pg/upgrade/0979.function.grp-tree-functions-via-cte.sql


hooks/post-receive
-- 
Evergreen ILS


More information about the open-ils-commits mailing list