summaryrefslogtreecommitdiff
path: root/src/auditordb
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/auditordb
parent099884ee66fc642179c9ad799a61f0b1a6d8cdc9 (diff)
downloadexchange-d3fb16b38049d61ad5bb5271e43420421dd10d91.tar.gz
exchange-d3fb16b38049d61ad5bb5271e43420421dd10d91.tar.bz2
exchange-d3fb16b38049d61ad5bb5271e43420421dd10d91.zip
also cover drop/restart cases with psql logic
Diffstat (limited to 'src/auditordb')
-rw-r--r--src/auditordb/Makefile.am4
-rw-r--r--src/auditordb/drop0000.sql49
-rw-r--r--src/auditordb/plugin_auditordb_postgres.c61
-rw-r--r--src/auditordb/restart0000.sql47
4 files changed, 105 insertions, 56 deletions
diff --git a/src/auditordb/Makefile.am b/src/auditordb/Makefile.am
index 58aec5a84..1378c5496 100644
--- a/src/auditordb/Makefile.am
+++ b/src/auditordb/Makefile.am
@@ -15,7 +15,9 @@ sqldir = $(prefix)/share/taler/sql/auditor/
sql_DATA = \
0000.sql \
- 0001.sql
+ 0001.sql \
+ drop0000.sql \
+ restart0000.sql
EXTRA_DIST = \
auditordb-postgres.conf \
diff --git a/src/auditordb/drop0000.sql b/src/auditordb/drop0000.sql
new file mode 100644
index 000000000..2a2db9213
--- /dev/null
+++ b/src/auditordb/drop0000.sql
@@ -0,0 +1,49 @@
+--
+-- 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 auditor_predicted_result;
+DROP TABLE IF EXISTS auditor_historic_denomination_revenue;
+DROP TABLE IF EXISTS auditor_balance_summary;
+DROP TABLE IF EXISTS auditor_denomination_pending;
+DROP TABLE IF EXISTS auditor_reserve_balance;
+DROP TABLE IF EXISTS auditor_wire_fee_balance;
+DROP TABLE IF EXISTS auditor_reserves;
+DROP TABLE IF EXISTS auditor_progress_reserve;
+DROP TABLE IF EXISTS auditor_progress_aggregation;
+DROP TABLE IF EXISTS auditor_progress_deposit_confirmation;
+DROP TABLE IF EXISTS auditor_progress_coin;
+DROP TABLE IF EXISTS wire_auditor_progress;
+DROP TABLE IF EXISTS wire_auditor_account_progress;
+DROP TABLE IF EXISTS auditor_historic_reserve_summary CASCADE;
+DROP TABLE IF EXISTS auditor_denominations CASCADE;
+DROP TABLE IF EXISTS deposit_confirmations CASCADE;
+DROP TABLE IF EXISTS auditor_exchanges CASCADE;
+
+-- Drop versioning (0000.sql)
+DROP SCHEMA IF EXISTS _v CASCADE;
+
+-- And we're out of here...
+COMMIT;
diff --git a/src/auditordb/plugin_auditordb_postgres.c b/src/auditordb/plugin_auditordb_postgres.c
index 52488fd2c..0d552ff12 100644
--- a/src/auditordb/plugin_auditordb_postgres.c
+++ b/src/auditordb/plugin_auditordb_postgres.c
@@ -113,69 +113,20 @@ postgres_drop_tables (void *cls,
int drop_exchangelist)
{
struct PostgresClosure *pc = cls;
- struct GNUNET_PQ_ExecuteStatement es[] = {
- GNUNET_PQ_make_execute ("DELETE FROM auditor_predicted_result;"),
- GNUNET_PQ_make_execute (
- "DELETE FROM auditor_historic_denomination_revenue;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_balance_summary;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_denomination_pending;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_reserve_balance;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_wire_fee_balance;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_reserves;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_progress_reserve;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_progress_aggregation;"),
- GNUNET_PQ_make_execute (
- "DELETE FROM auditor_progress_deposit_confirmation;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_progress_coin;"),
- GNUNET_PQ_make_execute ("DELETE FROM wire_auditor_progress;"),
- GNUNET_PQ_make_execute ("DELETE FROM wire_auditor_account_progress;"),
- GNUNET_PQ_make_execute ("DELETE FROM auditor_historic_reserve_summary;"),
- GNUNET_PQ_EXECUTE_STATEMENT_END
- };
- struct GNUNET_PQ_ExecuteStatement esx[] = {
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_predicted_result;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS auditor_historic_denomination_revenue;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_balance_summary;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS auditor_denomination_pending;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_reserve_balance;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_wire_fee_balance;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_reserves;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_progress_reserve;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS auditor_progress_aggregation;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS auditor_progress_deposit_confirmation;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_progress_coin;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS wire_auditor_progress;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS wire_auditor_account_progress;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS auditor_historic_reserve_summary CASCADE;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS auditor_denominations CASCADE;"),
- GNUNET_PQ_make_execute (
- "DROP TABLE IF EXISTS deposit_confirmations CASCADE;"),
- GNUNET_PQ_make_execute ("DROP TABLE IF EXISTS auditor_exchanges CASCADE;"),
- GNUNET_PQ_make_execute ("DROP SCHEMA IF EXISTS _v CASCADE;"),
- GNUNET_PQ_EXECUTE_STATEMENT_END
- };
struct GNUNET_PQ_Context *conn;
- int ret;
+ char *exec_dir;
+ GNUNET_asprintf (&exec_dir,
+ (drop_exchangelist) ? "%sdrop" : "%srestart",
+ pc->sql_dir);
conn = GNUNET_PQ_connect (pc->connection_cfg_str,
+ exec_dir,
NULL,
- es,
NULL);
if (NULL == conn)
return GNUNET_SYSERR;
- ret = GNUNET_OK;
- if (drop_exchangelist)
- ret = GNUNET_PQ_exec_statements (conn,
- esx);
GNUNET_PQ_disconnect (conn);
- return ret;
+ return GNUNET_OK;
}
diff --git a/src/auditordb/restart0000.sql b/src/auditordb/restart0000.sql
new file mode 100644
index 000000000..1a141f78f
--- /dev/null
+++ b/src/auditordb/restart0000.sql
@@ -0,0 +1,47 @@
+--
+-- 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 restart the auditor state as done to RESTART
+-- an audit from scratch. It does NOT drop tables and also
+-- PRESERVES data that running the auditor would not recover,
+-- such as:
+-- * the list of audited exchanges
+-- * deposit confirmation reports the auditor received from merchants
+-- * schema versioning information
+--
+-- Unlike the other SQL files, it SHOULD be updated to reflect the
+-- latest requirements for dropping tables.
+
+DELETE FROM auditor_predicted_result;
+DELETE FROM auditor_historic_denomination_revenue;
+DELETE FROM auditor_balance_summary;
+DELETE FROM auditor_denomination_pending;
+DELETE FROM auditor_reserve_balance;
+DELETE FROM auditor_wire_fee_balance;
+DELETE FROM auditor_reserves;
+DELETE FROM auditor_progress_reserve;
+DELETE FROM auditor_progress_aggregation;
+DELETE FROM auditor_progress_deposit_confirmation;
+DELETE FROM auditor_progress_coin;
+DELETE FROM wire_auditor_progress;
+DELETE FROM wire_auditor_account_progress;
+DELETE FROM auditor_historic_reserve_summary;
+
+-- And we're out of here...
+COMMIT;