-- -- This file is part of TALER -- Copyright (C) 2021 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 -- -- Everything in one big transaction BEGIN; -- Check patch versioning is in place. SELECT _v.register_patch('merchant-0002', NULL, NULL); -- need serial IDs on various tables for exchange-auditor replication ALTER TABLE merchant_instances ADD COLUMN auth_hash BYTEA CHECK(LENGTH(auth_hash)=64), ADD COLUMN auth_salt BYTEA CHECK(LENGTH(auth_salt)=32); COMMENT ON COLUMN merchant_instances.auth_hash IS 'hash used for merchant back office Authorization, NULL for no check'; COMMENT ON COLUMN merchant_instances.auth_salt IS 'salt to use when hashing Authorization header before comparing with auth_hash'; -- need to preserve payto_uri for extended reserve API (easier than to reconstruct) ALTER TABLE merchant_tip_reserve_keys ADD COLUMN payto_uri VARCHAR; COMMENT ON COLUMN merchant_tip_reserve_keys.payto_uri IS 'payto:// URI used to fund the reserve, may be NULL once reserve is funded'; -- need serial IDs on various tables for exchange-auditor replication ALTER TABLE merchant_transfer_signatures ADD COLUMN credit_amount_val INT8, ADD COLUMN credit_amount_frac INT4; COMMENT ON COLUMN merchant_transfers.credit_amount_val IS 'actual value of the (aggregated) wire transfer, excluding the wire fee, according to the exchange'; -- support different amounts claimed by exchange and merchant about wire transfers, -- add column to tell when this happens; but "believe" existing amounts match, as -- otherwise earlier version of the code would have failed hard. UPDATE merchant_transfer_signatures SET credit_amount_val=mt.credit_amount_val, credit_amount_frac=mt.credit_amount_frac FROM merchant_transfer_signatures mts INNER JOIN merchant_transfers mt USING(credit_serial); ALTER TABLE merchant_transfer_signatures ALTER COLUMN credit_amount_val SET NOT NULL, ALTER COLUMN credit_amount_frac SET NOT NULL; -- Complete transaction COMMIT;