aboutsummaryrefslogtreecommitdiff
path: root/src/exchangedb/exchange_do_reserve_purse.sql
diff options
context:
space:
mode:
authorÖzgür Kesim <oec-taler@kesim.org>2023-07-28 19:01:57 +0200
committerÖzgür Kesim <oec-taler@kesim.org>2023-07-28 19:01:57 +0200
commita1dae0199f3bc3e9f66fc1375c652c6f99b26b2c (patch)
treeae2be069b97117bf65eb681a58cf3d74cd3cd471 /src/exchangedb/exchange_do_reserve_purse.sql
parent8f9731e83009f13a8b4e172aec1252bc79c4dee1 (diff)
downloadexchange-a1dae0199f3bc3e9f66fc1375c652c6f99b26b2c.tar.gz
exchange-a1dae0199f3bc3e9f66fc1375c652c6f99b26b2c.tar.bz2
exchange-a1dae0199f3bc3e9f66fc1375c652c6f99b26b2c.zip
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.
Diffstat (limited to 'src/exchangedb/exchange_do_reserve_purse.sql')
-rw-r--r--src/exchangedb/exchange_do_reserve_purse.sql23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/exchangedb/exchange_do_reserve_purse.sql b/src/exchangedb/exchange_do_reserve_purse.sql
index 0476e60d1..abe5a749f 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.';