merchant

Merchant backend to process payments, run by merchants
Log | Files | Refs | Submodules | README | LICENSE

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;