aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2020-01-17 12:22:11 +0100
committerChristian Grothoff <christian@grothoff.org>2020-01-17 12:25:11 +0100
commitd3fb16b38049d61ad5bb5271e43420421dd10d91 (patch)
treee027e3388ff56c7bea1e9b5c94ee10cf86a92584 /src/exchangedb
parent099884ee66fc642179c9ad799a61f0b1a6d8cdc9 (diff)
also cover drop/restart cases with psql logic
Diffstat (limited to 'src/exchangedb')
-rw-r--r--src/exchangedb/Makefile.am3
-rw-r--r--src/exchangedb/drop0000.sql50
-rw-r--r--src/exchangedb/exchangedb-postgres.conf1
-rw-r--r--src/exchangedb/plugin_exchangedb_postgres.c34
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);