combine v3 and v4 of exchange schema into v2 due to major incompatible tuple change forthcoming

This commit is contained in:
Christian Grothoff 2023-07-28 12:27:46 +02:00
parent c93ce9ea2e
commit d083536786
No known key found for this signature in database
GPG Key ID: 939E6BE1E29FC3CC
14 changed files with 22 additions and 123 deletions

View File

@ -29,7 +29,6 @@ BEGIN
',h_payto BYTEA PRIMARY KEY CHECK (LENGTH(h_payto)=32)' ',h_payto BYTEA PRIMARY KEY CHECK (LENGTH(h_payto)=32)'
',kyc_prox BYTEA NOT NULL CHECK (LENGTH(kyc_prox)=32)' ',kyc_prox BYTEA NOT NULL CHECK (LENGTH(kyc_prox)=32)'
',provider VARCHAR NOT NULL' ',provider VARCHAR NOT NULL'
',birthdate VARCHAR'
',collection_time INT8 NOT NULL' ',collection_time INT8 NOT NULL'
',expiration_time INT8 NOT NULL' ',expiration_time INT8 NOT NULL'
',encrypted_attributes BYTEA NOT NULL' ',encrypted_attributes BYTEA NOT NULL'

View File

@ -19,6 +19,9 @@ CREATE TABLE wire_accounts
,master_sig BYTEA CHECK (LENGTH(master_sig)=64) ,master_sig BYTEA CHECK (LENGTH(master_sig)=64)
,is_active BOOLEAN NOT NULL ,is_active BOOLEAN NOT NULL
,last_change INT8 NOT NULL ,last_change INT8 NOT NULL
,conversion_url VARCHAR DEFAULT (NULL)
,debit_restrictions VARCHAR DEFAULT (NULL)
,credit_restrictions VARCHAR DEFAULT (NULL)
); );
COMMENT ON TABLE wire_accounts COMMENT ON TABLE wire_accounts
IS 'Table with current and historic bank accounts of the exchange. Entries never expire as we need to remember the last_change column indefinitely.'; IS 'Table with current and historic bank accounts of the exchange. Entries never expire as we need to remember the last_change column indefinitely.';
@ -30,5 +33,13 @@ COMMENT ON COLUMN wire_accounts.is_active
IS 'true if we are currently supporting the use of this account.'; IS 'true if we are currently supporting the use of this account.';
COMMENT ON COLUMN wire_accounts.last_change COMMENT ON COLUMN wire_accounts.last_change
IS 'Latest time when active status changed. Used to detect replays of old messages.'; IS 'Latest time when active status changed. Used to detect replays of old messages.';
COMMENT ON COLUMN wire_accounts.conversion_url
IS 'URL of a currency conversion service if conversion is needed when this account is used; NULL if there is no conversion.';
COMMENT ON COLUMN wire_accounts.debit_restrictions
IS 'JSON array describing restrictions imposed when debiting this account. Empty for no restrictions, NULL if account was migrated from previous database revision or account is disabled.';
COMMENT ON COLUMN wire_accounts.credit_restrictions
IS 'JSON array describing restrictions imposed when crediting this account. Empty for no restrictions, NULL if account was migrated from previous database revision or account is disabled.';
-- "wire_accounts" has no sequence because it is a 'mutable' table -- "wire_accounts" has no sequence because it is a 'mutable' table
-- and is of no concern to the auditor -- and is of no concern to the auditor

View File

@ -1,44 +0,0 @@
--
-- This file is part of TALER
-- Copyright (C) 2023 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/>
--
CREATE OR REPLACE FUNCTION master_table_kyc_attributes_V2()
RETURNS VOID
LANGUAGE plpgsql
AS $$
DECLARE
table_name VARCHAR DEFAULT 'kyc_attributes';
BEGIN
EXECUTE FORMAT (
'ALTER TABLE ' || table_name ||
' DROP COLUMN birthdate;'
);
END $$;
COMMENT ON FUNCTION master_table_kyc_attributes_V2
IS 'Removes birthdate column from the kyc_attributes table';
INSERT INTO exchange_tables
(name
,version
,action
,partitioned
,by_range)
VALUES
('kyc_attributes_V2'
,'exchange-0004'
,'master'
,TRUE
,FALSE);

View File

@ -1,26 +0,0 @@
--
-- This file is part of TALER
-- Copyright (C) 2023 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/>
--
ALTER TABLE wire_accounts
ADD COLUMN conversion_url VARCHAR DEFAULT (NULL),
ADD COLUMN debit_restrictions VARCHAR DEFAULT (NULL),
ADD COLUMN credit_restrictions VARCHAR DEFAULT (NULL);
COMMENT ON COLUMN wire_accounts.conversion_url
IS 'URL of a currency conversion service if conversion is needed when this account is used; NULL if there is no conversion.';
COMMENT ON COLUMN wire_accounts.debit_restrictions
IS 'JSON array describing restrictions imposed when debiting this account. Empty for no restrictions, NULL if account was migrated from previous database revision or account is disabled.';
COMMENT ON COLUMN wire_accounts.credit_restrictions
IS 'JSON array describing restrictions imposed when crediting this account. Empty for no restrictions, NULL if account was migrated from previous database revision or account is disabled.';

View File

@ -18,19 +18,13 @@ sqlinputs = \
exchange_do_*.sql \ exchange_do_*.sql \
procedures.sql.in \ procedures.sql.in \
0002-*.sql \ 0002-*.sql \
exchange-0002.sql.in \ exchange-0002.sql.in
0003-*.sql \
exchange-0003.sql.in \
0004-*.sql \
exchange-0004.sql.in
sql_DATA = \ sql_DATA = \
benchmark-0001.sql \ benchmark-0001.sql \
versioning.sql \ versioning.sql \
exchange-0001.sql \ exchange-0001.sql \
exchange-0002.sql \ exchange-0002.sql \
exchange-0003.sql \
exchange-0004.sql \
drop.sql \ drop.sql \
procedures.sql procedures.sql
@ -41,9 +35,7 @@ BUILT_SOURCES = \
procedures.sql procedures.sql
CLEANFILES = \ CLEANFILES = \
exchange-0002.sql \ exchange-0002.sql
exchange-0003.sql \
exchange-0004.sql
procedures.sql: procedures.sql.in exchange_do_*.sql procedures.sql: procedures.sql.in exchange_do_*.sql
chmod +w $@ || true chmod +w $@ || true
@ -55,16 +47,6 @@ exchange-0002.sql: exchange-0002.sql.in 0002-*.sql
gcc -E -P -undef - < exchange-0002.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ gcc -E -P -undef - < exchange-0002.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@
chmod ugo-w $@ chmod ugo-w $@
exchange-0003.sql: exchange-0003.sql.in 0003-*.sql
chmod +w $@ || true
gcc -E -P -undef - < exchange-0003.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@
chmod ugo-w $@
exchange-0004.sql: exchange-0004.sql.in 0004-*.sql
chmod +w $@ || true
gcc -E -P -undef - < exchange-0004.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@
chmod ugo-w $@
check_SCRIPTS = \ check_SCRIPTS = \
test_idempotency.sh test_idempotency.sh

View File

@ -86,5 +86,14 @@ COMMENT ON TYPE exchange_do_array_reserve_insert_return_type
#include "0002-revolving_work_shards.sql" #include "0002-revolving_work_shards.sql"
#include "0002-partners.sql" #include "0002-partners.sql"
#include "0002-partner_accounts.sql" #include "0002-partner_accounts.sql"
#include "0002-purse_actions.sql"
#include "0002-purse_deletion.sql"
#include "0002-kyc_attributes.sql"
#include "0002-aml_status.sql"
#include "0002-aml_staff.sql"
#include "0002-aml_history.sql"
#include "0002-age_withdraw.sql"
COMMIT; COMMIT;

View File

@ -19,13 +19,6 @@ BEGIN;
SELECT _v.register_patch('exchange-0003', NULL, NULL); SELECT _v.register_patch('exchange-0003', NULL, NULL);
SET search_path TO exchange; SET search_path TO exchange;
#include "0003-purse_actions.sql"
#include "0003-purse_deletion.sql"
#include "0003-kyc_attributes.sql"
#include "0003-aml_status.sql"
#include "0003-aml_staff.sql"
#include "0003-aml_history.sql"
#include "0003-age_withdraw.sql"
COMMIT; COMMIT;

View File

@ -1,25 +0,0 @@
--
-- This file is part of TALER
-- Copyright (C) 2023 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/>
--
BEGIN;
SELECT _v.register_patch('exchange-0004', NULL, NULL);
SET search_path TO exchange;
#include "0004-kyc_attributes.sql"
#include "0004-wire_accounts.sql"
COMMIT;