gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-exchange] 01/02: also cover drop/restart cases with psql logic


From: gnunet
Subject: [taler-exchange] 01/02: also cover drop/restart cases with psql logic
Date: Fri, 17 Jan 2020 12:25:15 +0100

This is an automated email from the git hooks/post-receive script.

grothoff pushed a commit to branch master
in repository exchange.

commit d3fb16b38049d61ad5bb5271e43420421dd10d91
Author: Christian Grothoff <address@hidden>
AuthorDate: Fri Jan 17 12:22:11 2020 +0100

    also cover drop/restart cases with psql logic
---
 src/auditordb/Makefile.am                   |  4 +-
 src/auditordb/drop0000.sql                  | 49 +++++++++++++++++++++++
 src/auditordb/plugin_auditordb_postgres.c   | 61 +++--------------------------
 src/auditordb/restart0000.sql               | 47 ++++++++++++++++++++++
 src/exchangedb/Makefile.am                  |  3 +-
 src/exchangedb/drop0000.sql                 | 50 +++++++++++++++++++++++
 src/exchangedb/exchangedb-postgres.conf     |  1 +
 src/exchangedb/plugin_exchangedb_postgres.c | 34 +++-------------
 8 files changed, 164 insertions(+), 85 deletions(-)

diff --git a/src/auditordb/Makefile.am b/src/auditordb/Makefile.am
index 58aec5a8..1378c549 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 00000000..2a2db921
--- /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 52488fd2..0d552ff1 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 00000000..1a141f78
--- /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;
diff --git a/src/exchangedb/Makefile.am b/src/exchangedb/Makefile.am
index 40db0974..e7ac4d71 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 00000000..26e193ca
--- /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 40fe3de0..7d600586 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 afdebf92..80f91785 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);

-- 
To stop receiving notification emails like this one, please contact
address@hidden.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]