a bit more protection for non-cached values; beware the null depth in the two-param...
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 23 Jun 2010 19:14:39 +0000 (19:14 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 23 Jun 2010 19:14:39 +0000 (19:14 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@16793 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/sql/Pg/pgmemcache-ou_tree_traversal_cache.sql

index 111e356..5f70e37 100644 (file)
@@ -20,7 +20,14 @@ BEGIN;
 
 
 CREATE OR REPLACE FUNCTION actor.org_unit_descendants ( INT, INT ) RETURNS SETOF actor.org_unit AS $$
-    SELECT  * FROM  actor.org_unit_descendants( (actor.org_unit_ancestor_at_depth($1,$2)).id );
+    SELECT  *
+      FROM  actor.org_unit_descendants(
+                CASE WHEN $2 IS NOT NULL THEN
+                    (actor.org_unit_ancestor_at_depth($1,$2)).id
+                ELSE 
+                    $1
+                END
+    );
 $$ LANGUAGE SQL STABLE;
 
 CREATE OR REPLACE FUNCTION actor.noncached_org_unit_descendants ( org INT ) RETURNS SETOF actor.org_unit AS $$
@@ -54,7 +61,7 @@ BEGIN
         -- RAISE NOTICE 'Getting perm from cache';
         EXECUTE $$SELECT memcache_get('oils_orgcache_$$ || org || $$') AS x;$$ INTO cached_value;
 
-        IF cached_value.x IS NOT NULL THEN
+        IF cached_value.x IS NOT NULL AND cached_value.x <> '' THEN
             FOR curr_org IN
                 SELECT  *
                   FROM  actor.org_unit