From a1dae0199f3bc3e9f66fc1375c652c6f99b26b2c Mon Sep 17 00:00:00 2001 From: Özgür Kesim Date: Fri, 28 Jul 2023 19:01:57 +0200 Subject: FAILING attempt to make echange.reserve use taler_amount Fails with > TALER_PREFIX=/usr/local ./test-exchangedb-postgres 2023-07-28T19:02:25.150845+0200 /home/oec/projects/taler/exchange/src/exchangedb/.libs/test-exchangedb-postgres-2559159 WARNING Could not run PSQL on file /usr/local/share/taler//sql/exchange/drop.sql: psql exit code was 3 2023-07-28T19:02:32.488085+0200 pq-2559159 ERROR Query `call_withdraw' failed with result: invalid input syntax for type bigint: "(1,1000)"/(null)/ERROR: invalid input syntax for type bigint: "(1,1000)" CONTEXT: PL/pgSQL function exchange_do_withdraw(bytea,taler_amount,bytea,bytea,bytea,bytea,bytea,bigint,bigint,boolean) line 23 at SQL statement /PGRES_FATAL_ERROR/ERROR: invalid input syntax for type bigint: "(1,1000)" CONTEXT: PL/pgSQL function exchange_do_withdraw(bytea,taler_amount,bytea,bytea,bytea,bytea,bytea,bigint,bigint,boolean) line 23 at SQL statement 2023-07-28T19:02:32.488146+0200 /home/oec/projects/taler/exchange/src/exchangedb/.libs/test-exchangedb-postgres-2559159 ERROR Assertion failed at test_exchangedb.c:1428. --- src/exchangedb/exchange_do_reserve_purse.sql | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src/exchangedb/exchange_do_reserve_purse.sql') diff --git a/src/exchangedb/exchange_do_reserve_purse.sql b/src/exchangedb/exchange_do_reserve_purse.sql index 0476e60d..abe5a749 100644 --- a/src/exchangedb/exchange_do_reserve_purse.sql +++ b/src/exchangedb/exchange_do_reserve_purse.sql @@ -22,8 +22,7 @@ CREATE OR REPLACE FUNCTION exchange_do_reserve_purse( IN in_reserve_gc INT8, IN in_reserve_sig BYTEA, IN in_reserve_quota BOOLEAN, - IN in_purse_fee_val INT8, - IN in_purse_fee_frac INT4, + IN in_purse_fee taler_amount, IN in_reserve_pub BYTEA, IN in_wallet_h_payto BYTEA, OUT out_no_funds BOOLEAN, @@ -101,8 +100,8 @@ ELSE -- UPDATE reserves balance (and check if balance is enough to pay the fee) IF (out_no_reserve) THEN - IF ( (0 != in_purse_fee_val) OR - (0 != in_purse_fee_frac) ) + IF ( (0 != in_purse_fee.val) OR + (0 != in_purse_fee.frac) ) THEN out_no_funds=TRUE; RETURN; @@ -118,22 +117,22 @@ ELSE ELSE UPDATE exchange.reserves SET - current_balance_frac=current_balance_frac-in_purse_fee_frac + current_balance.frac=current_balance.frac-in_purse_fee.frac + CASE - WHEN current_balance_frac < in_purse_fee_frac + WHEN current_balance.frac < in_purse_fee.frac THEN 100000000 ELSE 0 END, - current_balance_val=current_balance_val-in_purse_fee_val + current_balance.val=current_balance.val-in_purse_fee.val - CASE - WHEN current_balance_frac < in_purse_fee_frac + WHEN current_balance.frac < in_purse_fee.frac THEN 1 ELSE 0 END WHERE reserve_pub=in_reserve_pub - AND ( (current_balance_val > in_purse_fee_val) OR - ( (current_balance_frac >= in_purse_fee_frac) AND - (current_balance_val >= in_purse_fee_val) ) ); + AND ( (current_balance.val > in_purse_fee.val) OR + ( (current_balance.frac >= in_purse_fee.frac) AND + (current_balance.val >= in_purse_fee.val) ) ); IF NOT FOUND THEN out_no_funds=TRUE; @@ -159,5 +158,5 @@ INSERT INTO exchange.account_merges END $$; -COMMENT ON FUNCTION exchange_do_reserve_purse(BYTEA, BYTEA, INT8, INT8, INT8, BYTEA, BOOLEAN, INT8, INT4, BYTEA, BYTEA) +COMMENT ON FUNCTION exchange_do_reserve_purse(BYTEA, BYTEA, INT8, INT8, INT8, BYTEA, BOOLEAN, taler_amount, BYTEA, BYTEA) IS 'Create a purse for a reserve.'; -- cgit v1.2.3