diff options
author | Christian Grothoff <christian@grothoff.org> | 2020-01-17 12:22:11 +0100 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2020-01-17 12:25:11 +0100 |
commit | d3fb16b38049d61ad5bb5271e43420421dd10d91 (patch) | |
tree | e027e3388ff56c7bea1e9b5c94ee10cf86a92584 /src/exchangedb | |
parent | 099884ee66fc642179c9ad799a61f0b1a6d8cdc9 (diff) |
also cover drop/restart cases with psql logic
Diffstat (limited to 'src/exchangedb')
-rw-r--r-- | src/exchangedb/Makefile.am | 3 | ||||
-rw-r--r-- | src/exchangedb/drop0000.sql | 50 | ||||
-rw-r--r-- | src/exchangedb/exchangedb-postgres.conf | 1 | ||||
-rw-r--r-- | src/exchangedb/plugin_exchangedb_postgres.c | 34 |
4 files changed, 59 insertions, 29 deletions
diff --git a/src/exchangedb/Makefile.am b/src/exchangedb/Makefile.am index 40db09749..e7ac4d719 100644 --- a/src/exchangedb/Makefile.am +++ b/src/exchangedb/Makefile.am @@ -16,7 +16,8 @@ sqldir = $(prefix)/share/taler/sql/exchange/ sql_DATA = \ 0000.sql \ - 0001.sql + 0001.sql \ + drop0000.sql EXTRA_DIST = \ exchangedb.conf \ diff --git a/src/exchangedb/drop0000.sql b/src/exchangedb/drop0000.sql new file mode 100644 index 000000000..26e193ca6 --- /dev/null +++ b/src/exchangedb/drop0000.sql @@ -0,0 +1,50 @@ +-- +-- This file is part of TALER +-- Copyright (C) 2014--2020 Taler Systems SA +-- +-- TALER is free software; you can redistribute it and/or modify it under the +-- terms of the GNU General Public License as published by the Free Software +-- Foundation; either version 3, or (at your option) any later version. +-- +-- TALER is distributed in the hope that it will be useful, but WITHOUT ANY +-- WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +-- A PARTICULAR PURPOSE. See the GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License along with +-- TALER; see the file COPYING. If not, see <http://www.gnu.org/licenses/> +-- + +-- Everything in one big transaction +BEGIN; + +-- This script DROPs all of the tables we create, including the +-- versioning schema! +-- +-- Unlike the other SQL files, it SHOULD be updated to reflect the +-- latest requirements for dropping tables. + +-- Drops for 0001.sql +DROP TABLE IF EXISTS prewire CASCADE; +DROP TABLE IF EXISTS payback CASCADE; +DROP TABLE IF EXISTS payback_refresh CASCADE; +DROP TABLE IF EXISTS aggregation_tracking CASCADE; +DROP TABLE IF EXISTS wire_out CASCADE; +DROP TABLE IF EXISTS wire_fee CASCADE; +DROP TABLE IF EXISTS deposits CASCADE; +DROP TABLE IF EXISTS refunds CASCADE; +DROP TABLE IF EXISTS refresh_commitments CASCADE; +DROP TABLE IF EXISTS refresh_revealed_coins CASCADE; +DROP TABLE IF EXISTS refresh_transfer_keys CASCADE; +DROP TABLE IF EXISTS known_coins CASCADE; +DROP TABLE IF EXISTS reserves_close CASCADE; +DROP TABLE IF EXISTS reserves_out CASCADE; +DROP TABLE IF EXISTS reserves_in CASCADE; +DROP TABLE IF EXISTS reserves CASCADE; +DROP TABLE IF EXISTS denomination_revocations CASCADE; +DROP TABLE IF EXISTS denominations CASCADE; + +-- Drop versioning (0000.sql) +DROP SCHEMA IF EXISTS _v CASCADE; + +-- And we're out of here... +COMMIT; diff --git a/src/exchangedb/exchangedb-postgres.conf b/src/exchangedb/exchangedb-postgres.conf index 40fe3de0e..7d600586f 100644 --- a/src/exchangedb/exchangedb-postgres.conf +++ b/src/exchangedb/exchangedb-postgres.conf @@ -2,4 +2,5 @@ CONFIG = "postgres:///taler" # Where are the SQL files to setup our tables? +# Important: this MUST end with a "/"! SQL_DIR = $DATADIR/sql/exchange/ diff --git a/src/exchangedb/plugin_exchangedb_postgres.c b/src/exchangedb/plugin_exchangedb_postgres.c index afdebf927..80f91785c 100644 --- a/src/exchangedb/plugin_exchangedb_postgres.c +++ b/src/exchangedb/plugin_exchangedb_postgres.c @@ -147,39 +147,17 @@ static int postgres_drop_tables (void *cls) { struct PostgresClosure *pc = cls; - struct GNUNET_PQ_ExecuteStatement es[] = { - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS prewire CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS payback CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS payback_refresh CASCADE;"), - GNUNET_PQ_make_execute ( - "DROP TABLE IF EXISTS aggregation_tracking CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS wire_out CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS wire_fee CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS deposits CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS refunds CASCADE;"), - GNUNET_PQ_make_execute ( - "DROP TABLE IF EXISTS refresh_commitments CASCADE;"), - GNUNET_PQ_make_execute ( - "DROP TABLE IF EXISTS refresh_revealed_coins CASCADE;"), - GNUNET_PQ_make_execute ( - "DROP TABLE IF EXISTS refresh_transfer_keys CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS known_coins CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS reserves_close CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS reserves_out CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS reserves_in CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS reserves CASCADE;"), - GNUNET_PQ_make_execute ( - "DROP TABLE IF EXISTS denomination_revocations CASCADE;"), - GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS denominations CASCADE;"), - GNUNET_PQ_make_execute ("DROP SCHEMA IF EXISTS _v CASCADE;"), - GNUNET_PQ_EXECUTE_STATEMENT_END - }; struct GNUNET_PQ_Context *conn; + char *drop_dir; + GNUNET_asprintf (&drop_dir, + "%sdrop", + pc->sql_dir); conn = GNUNET_PQ_connect (pc->connection_cfg_str, + drop_dir, NULL, - es, NULL); + GNUNET_free (drop_dir); if (NULL == conn) return GNUNET_SYSERR; GNUNET_PQ_disconnect (conn); |