From: Dan Scott Date: Fri, 16 Dec 2011 19:00:24 +0000 (-0500) Subject: LP# 902667 - Wrap upgrade script for Dewey sorting X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=722e91ea874551fd00856241d3083da23fffd534;p=evergreen%2Fmasslnc.git LP# 902667 - Wrap upgrade script for Dewey sorting Signed-off-by: Dan Scott --- diff --git a/Open-ILS/src/sql/Pg/002.schema.config.sql b/Open-ILS/src/sql/Pg/002.schema.config.sql index 15a1cae9ae..1573edb5d0 100644 --- a/Open-ILS/src/sql/Pg/002.schema.config.sql +++ b/Open-ILS/src/sql/Pg/002.schema.config.sql @@ -86,7 +86,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 ('0657', :eg_version); -- berick/tsbere +INSERT INTO config.upgrade_log (version, applied_to) VALUES ('0658', :eg_version); -- jamesrf/dbs CREATE TABLE config.bib_source ( id SERIAL PRIMARY KEY, diff --git a/Open-ILS/src/sql/Pg/upgrade/0658.schema.acn_dewey_sort_fix.sql b/Open-ILS/src/sql/Pg/upgrade/0658.schema.acn_dewey_sort_fix.sql new file mode 100644 index 0000000000..21ca1e2a4b --- /dev/null +++ b/Open-ILS/src/sql/Pg/upgrade/0658.schema.acn_dewey_sort_fix.sql @@ -0,0 +1,48 @@ +-- Evergreen DB patch 0658.schema.acn_dewey_sort_fix.sql +-- +-- Fixes Dewey call number sorting (per LP# 902667) +-- +BEGIN; + +-- check whether patch can be applied +SELECT evergreen.upgrade_deps_block_check('0658', :eg_version); + +CREATE OR REPLACE FUNCTION asset.label_normalizer_dewey(TEXT) RETURNS TEXT AS $func$ + # Derived from the Koha C4::ClassSortRoutine::Dewey module + # Copyright (C) 2007 LibLime + # Licensed under the GPL v2 or later + + use strict; + use warnings; + + my $init = uc(shift); + $init =~ s/^\s+//; + $init =~ s/\s+$//; + $init =~ s!/!!g; + $init =~ s/^([\p{IsAlpha}]+)/$1 /; + my @tokens = split /\.|\s+/, $init; + my $digit_group_count = 0; + for (my $i = 0; $i <= $#tokens; $i++) { + if ($tokens[$i] =~ /^\d+$/) { + $digit_group_count++; + if (2 == $digit_group_count) { + $tokens[$i] = sprintf("%-15.15s", $tokens[$i]); + $tokens[$i] =~ tr/ /0/; + } + } + } + # Pad the first digit_group if there was only one + if (1 == $digit_group_count) { + $tokens[0] .= '_000000000000000' + } + my $key = join("_", @tokens); + $key =~ s/[^\p{IsAlnum}_]//g; + + return $key; + +$func$ LANGUAGE PLPERLU; + +-- regenerate sort keys for any dewey call numbers +UPDATE asset.call_number SET id = id WHERE label_class = 2; + +COMMIT; diff --git a/Open-ILS/src/sql/Pg/upgrade/xxxx.dewey-sort-fix.sql b/Open-ILS/src/sql/Pg/upgrade/xxxx.dewey-sort-fix.sql deleted file mode 100644 index 310bb2f16e..0000000000 --- a/Open-ILS/src/sql/Pg/upgrade/xxxx.dewey-sort-fix.sql +++ /dev/null @@ -1,43 +0,0 @@ -BEGIN; - -INSERT INTO config.upgrade_log (version) VALUES ('xxxx'); - -CREATE OR REPLACE FUNCTION asset.label_normalizer_dewey(TEXT) RETURNS TEXT AS $func$ - # Derived from the Koha C4::ClassSortRoutine::Dewey module - # Copyright (C) 2007 LibLime - # Licensed under the GPL v2 or later - - use strict; - use warnings; - - my $init = uc(shift); - $init =~ s/^\s+//; - $init =~ s/\s+$//; - $init =~ s!/!!g; - $init =~ s/^([\p{IsAlpha}]+)/$1 /; - my @tokens = split /\.|\s+/, $init; - my $digit_group_count = 0; - for (my $i = 0; $i <= $#tokens; $i++) { - if ($tokens[$i] =~ /^\d+$/) { - $digit_group_count++; - if (2 == $digit_group_count) { - $tokens[$i] = sprintf("%-15.15s", $tokens[$i]); - $tokens[$i] =~ tr/ /0/; - } - } - } - # Pad the first digit_group if there was only one - if (1 == $digit_group_count) { - $tokens[0] .= '_000000000000000' - } - my $key = join("_", @tokens); - $key =~ s/[^\p{IsAlnum}_]//g; - - return $key; - -$func$ LANGUAGE PLPERLU; - --- regenerate sort keys for any dewey call numbers -UPDATE asset.call_number SET id = id WHERE label_class = 2; - -COMMIT;