Correcting an upgrade script.
authorscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 25 May 2010 17:53:43 +0000 (17:53 +0000)
committerscottmk <scottmk@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 25 May 2010 17:53:43 +0000 (17:53 +0000)
The value column in actor.org_unit_setting should be valid JSON.  In this
revised version the new value is jiggered to make it a string instead of a
number.  This conversion is a bit simplistic and can be defeated by various
kinds of improbable input.

M    Open-ILS/src/sql/Pg/upgrade/0274.data.org-setting-type-est-wait.sql

git-svn-id: svn://svn.open-ils.org/ILS/trunk@16496 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/sql/Pg/upgrade/0274.data.org-setting-type-est-wait.sql

index f1c02ad..85aef37 100644 (file)
@@ -11,7 +11,17 @@ WHERE name = 'circ.hold_estimate_wait_interval';
 
 UPDATE actor.org_unit_setting SET
        name = 'circ.holds.default_estimated_wait_interval',
 
 UPDATE actor.org_unit_setting SET
        name = 'circ.holds.default_estimated_wait_interval',
-       value = value || ' days'
+       --
+       -- The value column should be JSON.  The old value should be a number,
+       -- but it may or may not be quoted.  The following CASE behaves
+       -- differently depending on whether value is quoted.  It is simplistic,
+       -- and will be defeated by leading or trailing white space, or various
+       -- malformations.
+       --
+       value = CASE WHEN SUBSTR( value, 1, 1 ) = '"'
+                               THEN '"' || SUBSTR( value, 2, LENGTH(value) - 2 ) || ' days"'
+                               ELSE '"' || value || ' days"'
+                       END
 WHERE name = 'circ.hold_estimate_wait_interval';
 
 INSERT INTO config.org_unit_setting_type (
 WHERE name = 'circ.hold_estimate_wait_interval';
 
 INSERT INTO config.org_unit_setting_type (