From: Mike Rylander Date: Wed, 17 Jul 2013 17:29:14 +0000 (-0400) Subject: Stamping upgrade script for copy stats SP fix X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=23aaa8d3e29d59eab60e75ca7070e0a9f885fe76;p=evergreen%2Fequinox.git Stamping upgrade script for copy stats SP fix Signed-off-by: Mike Rylander --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 0ee1c3763c..f99a03acfd 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -87,7 +87,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 index 0000000000..81b7b93203 --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0811.function.copy_related_hold_stats.sql @@ -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 index a59b517f56..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.function.copy_related_hold_stats.sql +++ /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; -