Stamping upgrade script for copy stats SP fix
authorMike Rylander <mrylander@gmail.com>
Wed, 17 Jul 2013 17:29:14 +0000 (13:29 -0400)
committerMike Rylander <mrylander@gmail.com>
Wed, 17 Jul 2013 17:29:14 +0000 (13:29 -0400)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Open-ILS/src/sql/Pg/002.schema.config.sql
Open-ILS/src/sql/Pg/upgrade/0811.function.copy_related_hold_stats.sql [new file with mode: 0644]
Open-ILS/src/sql/Pg/upgrade/XXXX.function.copy_related_hold_stats.sql [deleted file]

index f490fc8..68648b1 100644 (file)
@@ -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 ('0810', :eg_version); -- senator/miker
+INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0811', :eg_version); -- fparks/miker
 
 CREATE TABLE config.bib_source (
        id              SERIAL  PRIMARY KEY,
diff --git a/Open-ILS/src/sql/Pg/upgrade/0811.function.copy_related_hold_stats.sql b/Open-ILS/src/sql/Pg/upgrade/0811.function.copy_related_hold_stats.sql
new file mode 100644 (file)
index 0000000..81b7b93
--- /dev/null
@@ -0,0 +1,60 @@
+BEGIN;
+
+-- check whether patch can be applied
+SELECT evergreen.upgrade_deps_block_check('0811', :eg_version);
+
+DROP FUNCTION action.copy_related_hold_stats(integer);
+
+CREATE OR REPLACE FUNCTION action.copy_related_hold_stats(copy_id bigint)
+  RETURNS action.hold_stats AS
+$BODY$
+DECLARE
+    output          action.hold_stats%ROWTYPE;
+    hold_count      INT := 0;
+    copy_count      INT := 0;
+    available_count INT := 0;
+    hold_map_data   RECORD;
+BEGIN
+
+    output.hold_count := 0;
+    output.copy_count := 0;
+    output.available_count := 0;
+
+    SELECT  COUNT( DISTINCT m.hold ) INTO hold_count
+      FROM  action.hold_copy_map m
+            JOIN action.hold_request h ON (m.hold = h.id)
+      WHERE m.target_copy = copy_id
+            AND NOT h.frozen;
+
+    output.hold_count := hold_count;
+
+    IF output.hold_count > 0 THEN
+        FOR hold_map_data IN
+            SELECT  DISTINCT m.target_copy,
+                    acp.status
+              FROM  action.hold_copy_map m
+                    JOIN asset.copy acp ON (m.target_copy = acp.id)
+                    JOIN action.hold_request h ON (m.hold = h.id)
+              WHERE m.hold IN ( SELECT DISTINCT hold FROM action.hold_copy_map WHERE target_copy = copy_id ) AND NOT h.frozen
+        LOOP
+            output.copy_count := output.copy_count + 1;
+            IF hold_map_data.status IN (0,7,12) THEN
+                output.available_count := output.available_count + 1;
+            END IF;
+        END LOOP;
+        output.total_copy_ratio = output.copy_count::FLOAT / output.hold_count::FLOAT;
+        output.available_copy_ratio = output.available_count::FLOAT / output.hold_count::FLOAT;
+
+    END IF;
+
+    RETURN output;
+
+END;
+$BODY$
+  LANGUAGE plpgsql VOLATILE
+  COST 100;
+ALTER FUNCTION action.copy_related_hold_stats(bigint)
+  OWNER TO evergreen;
+
+COMMIT;
+
diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.copy_related_hold_stats.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.function.copy_related_hold_stats.sql
deleted file mode 100644 (file)
index a59b517..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-BEGIN;
-
--- check whether patch can be applied
-SELECT evergreen.upgrade_deps_block_check('XXXX', :eg_version);
-
-DROP FUNCTION action.copy_related_hold_stats(integer);
-
-CREATE OR REPLACE FUNCTION action.copy_related_hold_stats(copy_id bigint)
-  RETURNS action.hold_stats AS
-$BODY$
-DECLARE
-    output          action.hold_stats%ROWTYPE;
-    hold_count      INT := 0;
-    copy_count      INT := 0;
-    available_count INT := 0;
-    hold_map_data   RECORD;
-BEGIN
-
-    output.hold_count := 0;
-    output.copy_count := 0;
-    output.available_count := 0;
-
-    SELECT  COUNT( DISTINCT m.hold ) INTO hold_count
-      FROM  action.hold_copy_map m
-            JOIN action.hold_request h ON (m.hold = h.id)
-      WHERE m.target_copy = copy_id
-            AND NOT h.frozen;
-
-    output.hold_count := hold_count;
-
-    IF output.hold_count > 0 THEN
-        FOR hold_map_data IN
-            SELECT  DISTINCT m.target_copy,
-                    acp.status
-              FROM  action.hold_copy_map m
-                    JOIN asset.copy acp ON (m.target_copy = acp.id)
-                    JOIN action.hold_request h ON (m.hold = h.id)
-              WHERE m.hold IN ( SELECT DISTINCT hold FROM action.hold_copy_map WHERE target_copy = copy_id ) AND NOT h.frozen
-        LOOP
-            output.copy_count := output.copy_count + 1;
-            IF hold_map_data.status IN (0,7,12) THEN
-                output.available_count := output.available_count + 1;
-            END IF;
-        END LOOP;
-        output.total_copy_ratio = output.copy_count::FLOAT / output.hold_count::FLOAT;
-        output.available_copy_ratio = output.available_count::FLOAT / output.hold_count::FLOAT;
-
-    END IF;
-
-    RETURN output;
-
-END;
-$BODY$
-  LANGUAGE plpgsql VOLATILE
-  COST 100;
-ALTER FUNCTION action.copy_related_hold_stats(bigint)
-  OWNER TO evergreen;
-
-COMMIT;
-