diff options
Diffstat (limited to 'src/exchangedb')
-rw-r--r-- | src/exchangedb/0002-kyc_attributes.sql | 10 | ||||
-rw-r--r-- | src/exchangedb/0004-refunds.sql | 35 | ||||
-rw-r--r-- | src/exchangedb/Makefile.am | 16 | ||||
-rw-r--r-- | src/exchangedb/exchange-0004.sql.in | 24 |
4 files changed, 71 insertions, 14 deletions
diff --git a/src/exchangedb/0002-kyc_attributes.sql b/src/exchangedb/0002-kyc_attributes.sql index 897aff561..66f3fc315 100644 --- a/src/exchangedb/0002-kyc_attributes.sql +++ b/src/exchangedb/0002-kyc_attributes.sql @@ -107,16 +107,6 @@ BEGIN ' ADD CONSTRAINT ' || table_name || '_serial_key ' 'UNIQUE (kyc_attributes_serial_id)' ); - -- The legitimization_serial is a foreign key. - -- But, due to partitioning by h_payto, we can not simply reference - -- the serial id of the legitimization_processes. Thus, the following - -- is commented out. - -- EXECUTE FORMAT ( - -- 'ALTER TABLE ' || table_name || - -- ' ADD CONSTRAINT ' || table_name || '_foreign_legitimization_processes' - -- ' FOREIGN KEY (legitimization_serial) ' - -- ' REFERENCES legitimization_processes (legitimization_process_serial_id)' -- ON DELETE CASCADE - -- ); -- To search similar users (e.g. during AML checks) EXECUTE FORMAT ( 'CREATE INDEX ' || table_name || '_similarity_index ' diff --git a/src/exchangedb/0004-refunds.sql b/src/exchangedb/0004-refunds.sql new file mode 100644 index 000000000..eb9e7ad6e --- /dev/null +++ b/src/exchangedb/0004-refunds.sql @@ -0,0 +1,35 @@ + +CREATE FUNCTION constrain_table_refunds4 ( + IN partition_suffix TEXT DEFAULT NULL +) +RETURNS void +LANGUAGE plpgsql +AS $$ +DECLARE + table_name TEXT DEFAULT 'refunds'; +BEGIN + table_name = concat_ws('_', table_name, partition_suffix); + + EXECUTE FORMAT ( + 'ALTER TABLE ' || table_name || + ' DROP CONSTRAINT ' || table_name || '_pkey' + ); + EXECUTE FORMAT ( + 'ALTER TABLE ' || table_name || + ' ADD PRIMARY KEY (batch_deposit_serial_id, coin_pub, rtransaction_id) ' + ); +END +$$; + +INSERT INTO exchange_tables + (name + ,version + ,action + ,partitioned + ,by_range) + VALUES + ('refunds4' + ,'exchange-0004' + ,'constrain' + ,TRUE + ,FALSE); diff --git a/src/exchangedb/Makefile.am b/src/exchangedb/Makefile.am index 45070ac08..fd993f968 100644 --- a/src/exchangedb/Makefile.am +++ b/src/exchangedb/Makefile.am @@ -19,8 +19,10 @@ sqlinputs = \ procedures.sql.in \ 0002-*.sql \ 0003-*.sql \ + 0004-*.sql \ exchange-0002.sql.in \ - exchange-0003.sql.in + exchange-0003.sql.in \ + exchange-0004.sql.in sql_DATA = \ benchmark-0001.sql \ @@ -29,6 +31,7 @@ sql_DATA = \ exchange-0001.sql \ exchange-0002.sql \ exchange-0003.sql \ + exchange-0004.sql \ drop.sql \ procedures.sql @@ -44,20 +47,25 @@ CLEANFILES = \ procedures.sql procedures.sql: procedures.sql.in exchange_do_*.sql - chmod +w $@ || true + chmod +w $@ 2> /dev/null || true gcc -E -P -undef - < procedures.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ chmod ugo-w $@ exchange-0002.sql: exchange-0002.sql.in 0002-*.sql - chmod +w $@ || true + chmod +w $@ 2> /dev/null || true gcc -E -P -undef - < exchange-0002.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ chmod ugo-w $@ exchange-0003.sql: exchange-0003.sql.in 0003-*.sql - chmod +w $@ || true + chmod +w $@ 2> /dev/null || 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 $@ 2> /dev/null || true + gcc -E -P -undef - < exchange-0004.sql.in 2>/dev/null | sed -e "s/--.*//" | awk 'NF' - >$@ + chmod ugo-w $@ + check_SCRIPTS = \ test_idempotency.sh diff --git a/src/exchangedb/exchange-0004.sql.in b/src/exchangedb/exchange-0004.sql.in new file mode 100644 index 000000000..c966aedc5 --- /dev/null +++ b/src/exchangedb/exchange-0004.sql.in @@ -0,0 +1,24 @@ +-- +-- This file is part of TALER +-- Copyright (C) 2024 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-refunds.sql" + +COMMIT; |