From 22a296ba266ce2fe6b0d6dbb67d852aff16b57ce Mon Sep 17 00:00:00 2001 From: "D. Berge" Date: Tue, 19 Aug 2025 17:55:58 +0200 Subject: [PATCH] Add database upgrade file 41 --- .../upgrade41-v0.6.3-add-comparisons.sql | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 etc/db/upgrades/upgrade41-v0.6.3-add-comparisons.sql diff --git a/etc/db/upgrades/upgrade41-v0.6.3-add-comparisons.sql b/etc/db/upgrades/upgrade41-v0.6.3-add-comparisons.sql new file mode 100644 index 0000000..c55df4f --- /dev/null +++ b/etc/db/upgrades/upgrade41-v0.6.3-add-comparisons.sql @@ -0,0 +1,109 @@ +-- Add procedure to decimate old nav data +-- +-- New schema version: 0.6.3 +-- +-- ATTENTION: +-- +-- ENSURE YOU HAVE BACKED UP THE DATABASE BEFORE RUNNING THIS SCRIPT. +-- +-- +-- NOTE: This upgrade creates a new schema called `comparisons`. +-- NOTE: Each application starts a transaction, which must be committed +-- or rolled back. +-- +-- This update adds a `comparisons` table to a `comparisons` schema. +-- The `comparisons.comparisons` table holds 4D prospect comparison data. +-- +-- To apply, run as the dougal user: +-- +-- psql <>'db_schema' INTO current_db_version FROM public.info WHERE key = 'version'; + + IF current_db_version >= '0.6.3' THEN + RAISE EXCEPTION + USING MESSAGE='Patch already applied'; + END IF; + + IF current_db_version != '0.6.2' THEN + RAISE EXCEPTION + USING MESSAGE='Invalid database version: ' || current_db_version, + HINT='Ensure all previous patches have been applied.'; + END IF; + + CALL pg_temp.upgrade_database(); +END; +$outer$ LANGUAGE plpgsql; + +CALL pg_temp.upgrade(); + +CALL pg_temp.show_notice('Cleaning up'); +DROP PROCEDURE pg_temp.upgrade_database (); +DROP PROCEDURE pg_temp.upgrade (); + +CALL pg_temp.show_notice('Updating db_schema version'); +INSERT INTO public.info VALUES ('version', '{"db_schema": "0.6.3"}') +ON CONFLICT (key) DO UPDATE + SET value = public.info.value || '{"db_schema": "0.6.3"}' WHERE public.info.key = 'version'; + + +CALL pg_temp.show_notice('All done. You may now run "COMMIT;" to persist the changes'); +DROP PROCEDURE pg_temp.show_notice (notice text); + +-- +--NOTE Run `COMMIT;` now if all went well +--