From d3fb16b38049d61ad5bb5271e43420421dd10d91 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 17 Jan 2020 12:22:11 +0100 Subject: also cover drop/restart cases with psql logic --- src/exchangedb/Makefile.am | 3 +- src/exchangedb/drop0000.sql | 50 +++++++++++++++++++++++++++++ src/exchangedb/exchangedb-postgres.conf | 1 + src/exchangedb/plugin_exchangedb_postgres.c | 34 ++++---------------- 4 files changed, 59 insertions(+), 29 deletions(-) create mode 100644 src/exchangedb/drop0000.sql (limited to 'src/exchangedb') 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 +-- + +-- 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); -- cgit v1.2.3