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/auditordb | |
parent | 099884ee66fc642179c9ad799a61f0b1a6d8cdc9 (diff) |
also cover drop/restart cases with psql logic
Diffstat (limited to 'src/auditordb')
-rw-r--r-- | src/auditordb/Makefile.am | 4 | ||||
-rw-r--r-- | src/auditordb/drop0000.sql | 49 | ||||
-rw-r--r-- | src/auditordb/plugin_auditordb_postgres.c | 61 | ||||
-rw-r--r-- | src/auditordb/restart0000.sql | 47 |
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; |