From: Ben Shum Date: Mon, 11 Mar 2013 21:40:11 +0000 (-0400) Subject: Stamping upgrade for relaxing rank_ou sorting X-Git-Tag: sprint4-merge-nov22~3336 X-Git-Url: https://git.evergreen-ils.org/?p=working%2FEvergreen.git;a=commitdiff_plain;h=b42fa9068868c55b744cf9141627955ea90773d4 Stamping upgrade for relaxing rank_ou sorting Signed-off-by: Ben Shum --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index ea34dd52cb..9ad2ba51f7 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -90,7 +90,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 ('0767', :eg_version); -- senator/miker +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0768', :eg_version); -- berick/bshum CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/0768.schema.relax_rank_ou.sql b/Open-ILS/src/sql/Pg/upgrade/0768.schema.relax_rank_ou.sql new file mode 100644 index 0000000000..afb2d8a04c --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0768.schema.relax_rank_ou.sql @@ -0,0 +1,31 @@ +BEGIN; + +SELECT evergreen.upgrade_deps_block_check('0768', :eg_version); + +CREATE OR REPLACE FUNCTION evergreen.rank_ou(lib INT, search_lib INT, pref_lib INT DEFAULT NULL) +RETURNS INTEGER AS $$ + SELECT COALESCE( + + -- lib matches search_lib + (SELECT CASE WHEN $1 = $2 THEN -20000 END), + + -- lib matches pref_lib + (SELECT CASE WHEN $1 = $3 THEN -10000 END), + + + -- pref_lib is a child of search_lib and lib is a child of pref lib. + (SELECT distance - 5000 + FROM actor.org_unit_descendants_distance($3) + WHERE id = $1 AND $3 IN ( + SELECT id FROM actor.org_unit_descendants($2))), + + -- lib is a child of search_lib + (SELECT distance FROM actor.org_unit_descendants_distance($2) WHERE id = $1), + + -- all others pay cash + 1000 + ); +$$ LANGUAGE SQL STABLE; + +COMMIT; + diff --git a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.relax_rank_ou.sql b/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.relax_rank_ou.sql deleted file mode 100644 index 626d40b869..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/XXXX.schema.relax_rank_ou.sql +++ /dev/null @@ -1,29 +0,0 @@ -BEGIN; - -CREATE OR REPLACE FUNCTION evergreen.rank_ou(lib INT, search_lib INT, pref_lib INT DEFAULT NULL) -RETURNS INTEGER AS $$ - SELECT COALESCE( - - -- lib matches search_lib - (SELECT CASE WHEN $1 = $2 THEN -20000 END), - - -- lib matches pref_lib - (SELECT CASE WHEN $1 = $3 THEN -10000 END), - - - -- pref_lib is a child of search_lib and lib is a child of pref lib. - (SELECT distance - 5000 - FROM actor.org_unit_descendants_distance($3) - WHERE id = $1 AND $3 IN ( - SELECT id FROM actor.org_unit_descendants($2))), - - -- lib is a child of search_lib - (SELECT distance FROM actor.org_unit_descendants_distance($2) WHERE id = $1), - - -- all others pay cash - 1000 - ); -$$ LANGUAGE SQL STABLE; - -COMMIT; -