drop.sql (1830B)
1 -- 2 -- This file is part of TALER 3 -- Copyright (C) 2014--2021 Taler Systems SA 4 -- 5 -- TALER is free software; you can redistribute it and/or modify it under the 6 -- terms of the GNU General Public License as published by the Free Software 7 -- Foundation; either version 3, or (at your option) any later version. 8 -- 9 -- TALER is distributed in the hope that it will be useful, but WITHOUT ANY 10 -- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 -- A PARTICULAR PURPOSE. See the GNU General Public License for more details. 12 -- 13 -- You should have received a copy of the GNU General Public License along with 14 -- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 -- 16 17 -- This script DROPs all of the tables we create. 18 19 -- Release the locks for each instance before dropping the next one. Keeping 20 -- every instance's tables locked until the end exhausts PostgreSQL's shared 21 -- lock table even with only a few dozen instances. An interrupted reset can 22 -- be rerun; keep the global schema and version records until this loop ends. 23 DO $$ 24 DECLARE 25 r RECORD; 26 BEGIN 27 FOR r IN 28 SELECT nspname 29 FROM pg_namespace 30 WHERE nspname ~ '^merchant_instance_[0-9]+$' 31 ORDER BY nspname 32 LOOP 33 EXECUTE format('DROP SCHEMA %I CASCADE', r.nspname); 34 COMMIT; 35 END LOOP; 36 END 37 $$; 38 39 BEGIN; 40 41 -- On a database that was never initialized there is no versioning 42 -- schema yet, and referencing _v.patches would abort the whole script 43 -- before the DROPs below ever run. 44 DO $$ 45 BEGIN 46 IF EXISTS (SELECT 1 47 FROM pg_namespace 48 WHERE nspname = '_v') 49 THEN 50 PERFORM _v.unregister_patch (patch_name) 51 FROM _v.patches 52 WHERE starts_with (patch_name,'merchant-'); 53 END IF; 54 END 55 $$; 56 57 58 DROP SCHEMA IF EXISTS merchant CASCADE; 59 60 -- And we're out of here... 61 COMMIT;