[open-ils-commits] r19933 - branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade (miker)

svn at svn.open-ils.org svn at svn.open-ils.org
Sat Apr 2 13:14:04 EDT 2011


Author: miker
Date: 2011-04-02 13:14:00 -0400 (Sat, 02 Apr 2011)
New Revision: 19933

Modified:
   branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0506.schema.tree-ish_function_row_estimates.sql
Log:
Adjust upgrade for 2.0

Modified: branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0506.schema.tree-ish_function_row_estimates.sql
===================================================================
--- branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0506.schema.tree-ish_function_row_estimates.sql	2011-04-02 17:10:21 UTC (rev 19932)
+++ branches/rel_2_0/Open-ILS/src/sql/Pg/upgrade/0506.schema.tree-ish_function_row_estimates.sql	2011-04-02 17:14:00 UTC (rev 19933)
@@ -4,22 +4,60 @@
 
 ALTER FUNCTION actor.org_unit_descendants( INT, INT ) ROWS 1;
 ALTER FUNCTION actor.org_unit_descendants( INT ) ROWS 1;
-ALTER FUNCTION actor.org_unit_descendants_distance( INT )  ROWS 1;
 ALTER FUNCTION actor.org_unit_ancestors( INT )  ROWS 1;
-ALTER FUNCTION actor.org_unit_ancestors_distance( INT )  ROWS 1;
 ALTER FUNCTION actor.org_unit_full_path ( INT )  ROWS 2;
 ALTER FUNCTION actor.org_unit_full_path ( INT, INT ) ROWS 2;
 ALTER FUNCTION actor.org_unit_combined_ancestors ( INT, INT ) ROWS 1;
 ALTER FUNCTION actor.org_unit_common_ancestors ( INT, INT ) ROWS 1;
 ALTER FUNCTION actor.org_unit_ancestor_setting( TEXT, INT ) ROWS 1;
 ALTER FUNCTION permission.grp_ancestors ( INT ) ROWS 1;
-ALTER FUNCTION permission.grp_ancestors_distance( INT ) ROWS 1;
-ALTER FUNCTION permission.grp_descendants_distance( INT ) ROWS 1;
 ALTER FUNCTION permission.usr_perms ( INT ) ROWS 10;
 ALTER FUNCTION permission.usr_has_perm_at_nd ( INT, TEXT) ROWS 1;
 ALTER FUNCTION permission.usr_has_perm_at_all_nd ( INT, TEXT ) ROWS 1;
 ALTER FUNCTION permission.usr_has_perm_at ( INT, TEXT ) ROWS 1;
 ALTER FUNCTION permission.usr_has_perm_at_all ( INT, TEXT ) 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 (
+            SELECT $1, 0
+        UNION
+            SELECT pgt.parent, gad.distance+1
+            FROM permission.grp_tree pgt JOIN grp_ancestors_distance gad ON (pgt.id = gad.id)
+            WHERE pgt.parent IS NOT NULL
+    )
+    SELECT * FROM grp_ancestors_distance;
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION permission.grp_descendants_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
+    WITH RECURSIVE grp_descendants_distance(id, distance) AS (
+            SELECT $1, 0
+        UNION
+            SELECT pgt.id, gdd.distance+1
+            FROM permission.grp_tree pgt JOIN grp_descendants_distance gdd ON (pgt.parent = gdd.id)
+    )
+    SELECT * FROM grp_descendants_distance;
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION actor.org_unit_descendants_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
+    WITH RECURSIVE org_unit_descendants_distance(id, distance) AS (
+            SELECT $1, 0
+        UNION
+            SELECT ou.id, oudd.distance+1
+            FROM actor.org_unit ou JOIN org_unit_descendants_distance oudd ON (ou.parent_ou = oudd.id)
+    )
+    SELECT * FROM org_unit_descendants_distance;
+$$ LANGUAGE SQL STABLE ROWS 1;
+
+CREATE OR REPLACE FUNCTION actor.org_unit_ancestors_distance( INT ) RETURNS TABLE (id INT, distance INT) AS $$
+    WITH RECURSIVE org_unit_ancestors_distance(id, distance) AS (
+            SELECT $1, 0
+        UNION
+            SELECT ou.parent_ou, ouad.distance+1
+            FROM actor.org_unit ou JOIN org_unit_ancestors_distance ouad ON (ou.id = ouad.id)
+            WHERE ou.parent_ou IS NOT NULL
+    )
+    SELECT * FROM org_unit_ancestors_distance;
+$$ LANGUAGE SQL STABLE ROWS 1;
+
 COMMIT;
 



More information about the open-ils-commits mailing list