also cover drop/restart cases with psql logic
This commit is contained in:
parent
099884ee66
commit
d3fb16b380
@ -15,7 +15,9 @@ sqldir = $(prefix)/share/taler/sql/auditor/
|
|||||||
|
|
||||||
sql_DATA = \
|
sql_DATA = \
|
||||||
0000.sql \
|
0000.sql \
|
||||||
0001.sql
|
0001.sql \
|
||||||
|
drop0000.sql \
|
||||||
|
restart0000.sql
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
auditordb-postgres.conf \
|
auditordb-postgres.conf \
|
||||||
|
49
src/auditordb/drop0000.sql
Normal file
49
src/auditordb/drop0000.sql
Normal file
@ -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;
|
@ -113,69 +113,20 @@ postgres_drop_tables (void *cls,
|
|||||||
int drop_exchangelist)
|
int drop_exchangelist)
|
||||||
{
|
{
|
||||||
struct PostgresClosure *pc = cls;
|
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;
|
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,
|
conn = GNUNET_PQ_connect (pc->connection_cfg_str,
|
||||||
|
exec_dir,
|
||||||
NULL,
|
NULL,
|
||||||
es,
|
|
||||||
NULL);
|
NULL);
|
||||||
if (NULL == conn)
|
if (NULL == conn)
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
ret = GNUNET_OK;
|
|
||||||
if (drop_exchangelist)
|
|
||||||
ret = GNUNET_PQ_exec_statements (conn,
|
|
||||||
esx);
|
|
||||||
GNUNET_PQ_disconnect (conn);
|
GNUNET_PQ_disconnect (conn);
|
||||||
return ret;
|
return GNUNET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
47
src/auditordb/restart0000.sql
Normal file
47
src/auditordb/restart0000.sql
Normal file
@ -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;
|
@ -16,7 +16,8 @@ sqldir = $(prefix)/share/taler/sql/exchange/
|
|||||||
|
|
||||||
sql_DATA = \
|
sql_DATA = \
|
||||||
0000.sql \
|
0000.sql \
|
||||||
0001.sql
|
0001.sql \
|
||||||
|
drop0000.sql
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
exchangedb.conf \
|
exchangedb.conf \
|
||||||
|
50
src/exchangedb/drop0000.sql
Normal file
50
src/exchangedb/drop0000.sql
Normal file
@ -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;
|
@ -2,4 +2,5 @@
|
|||||||
CONFIG = "postgres:///taler"
|
CONFIG = "postgres:///taler"
|
||||||
|
|
||||||
# Where are the SQL files to setup our tables?
|
# Where are the SQL files to setup our tables?
|
||||||
|
# Important: this MUST end with a "/"!
|
||||||
SQL_DIR = $DATADIR/sql/exchange/
|
SQL_DIR = $DATADIR/sql/exchange/
|
||||||
|
@ -147,39 +147,17 @@ static int
|
|||||||
postgres_drop_tables (void *cls)
|
postgres_drop_tables (void *cls)
|
||||||
{
|
{
|
||||||
struct PostgresClosure *pc = 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;
|
struct GNUNET_PQ_Context *conn;
|
||||||
|
char *drop_dir;
|
||||||
|
|
||||||
|
GNUNET_asprintf (&drop_dir,
|
||||||
|
"%sdrop",
|
||||||
|
pc->sql_dir);
|
||||||
conn = GNUNET_PQ_connect (pc->connection_cfg_str,
|
conn = GNUNET_PQ_connect (pc->connection_cfg_str,
|
||||||
|
drop_dir,
|
||||||
NULL,
|
NULL,
|
||||||
es,
|
|
||||||
NULL);
|
NULL);
|
||||||
|
GNUNET_free (drop_dir);
|
||||||
if (NULL == conn)
|
if (NULL == conn)
|
||||||
return GNUNET_SYSERR;
|
return GNUNET_SYSERR;
|
||||||
GNUNET_PQ_disconnect (conn);
|
GNUNET_PQ_disconnect (conn);
|
||||||
|
Loading…
Reference in New Issue
Block a user