finalize v3/v4 -> v2 exchange schema merger
This commit is contained in:
parent
0d0494ee91
commit
1c923855a3
@ -138,7 +138,7 @@ BEGIN
|
||||
'ALTER TABLE ' || table_name ||
|
||||
' ADD CONSTRAINT ' || table_name || '_foreign_reserve_pub'
|
||||
' FOREIGN KEY (reserve_pub)'
|
||||
' REFERENCES reserves(reserve_pub);' -- ON DELETE CASCADE;'
|
||||
' REFERENCES reserves(reserve_pub) ON DELETE CASCADE;'
|
||||
);
|
||||
END
|
||||
$$;
|
||||
@ -151,6 +151,7 @@ INSERT INTO exchange_tables
|
||||
,partitioned
|
||||
,by_range)
|
||||
VALUES
|
||||
('age_withdraw', 'exchange-0003', 'create', TRUE ,FALSE),
|
||||
('age_withdraw', 'exchange-0003', 'constrain',TRUE ,FALSE),
|
||||
('age_withdraw', 'exchange-0003', 'foreign', TRUE ,FALSE);
|
||||
('age_withdraw', 'exchange-0002', 'create', TRUE ,FALSE),
|
||||
('age_withdraw', 'exchange-0002', 'constrain',TRUE ,FALSE),
|
||||
('age_withdraw', 'exchange-0002', 'foreign', TRUE ,FALSE);
|
||||
|
||||
|
@ -137,12 +137,12 @@ INSERT INTO exchange_tables
|
||||
,by_range)
|
||||
VALUES
|
||||
('aml_history'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'create'
|
||||
,TRUE
|
||||
,FALSE),
|
||||
('aml_history'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'constrain'
|
||||
,TRUE
|
||||
,FALSE);
|
||||
|
@ -91,12 +91,12 @@ INSERT INTO exchange_tables
|
||||
,by_range)
|
||||
VALUES
|
||||
('aml_status'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'create'
|
||||
,TRUE
|
||||
,FALSE),
|
||||
('aml_status'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'constrain'
|
||||
,TRUE
|
||||
,FALSE);
|
||||
|
@ -55,12 +55,6 @@ BEGIN
|
||||
,table_name
|
||||
,partition_suffix
|
||||
);
|
||||
PERFORM comment_partitioned_column(
|
||||
'birth date of the user, in format YYYY-MM-DD where a value of 0 is used to indicate unknown (in official documents); NULL if the birth date was not collected by the provider; used for KYC-driven age restrictions'
|
||||
,'birthdate'
|
||||
,table_name
|
||||
,partition_suffix
|
||||
);
|
||||
PERFORM comment_partitioned_column(
|
||||
'time when the attributes were collected by the provider'
|
||||
,'collection_time'
|
||||
@ -144,12 +138,12 @@ INSERT INTO exchange_tables
|
||||
,by_range)
|
||||
VALUES
|
||||
('kyc_attributes'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'create'
|
||||
,TRUE
|
||||
,FALSE),
|
||||
('kyc_attributes'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'constrain'
|
||||
,TRUE
|
||||
,FALSE);
|
||||
|
@ -110,12 +110,12 @@ INSERT INTO exchange_tables
|
||||
,by_range)
|
||||
VALUES
|
||||
('purse_actions'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'create'
|
||||
,TRUE
|
||||
,FALSE),
|
||||
('purse_actions'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'master'
|
||||
,TRUE
|
||||
,FALSE);
|
||||
|
@ -94,17 +94,17 @@ INSERT INTO exchange_tables
|
||||
,by_range)
|
||||
VALUES
|
||||
('purse_deletion'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'create'
|
||||
,TRUE
|
||||
,FALSE),
|
||||
('purse_deletion'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'constrain'
|
||||
,TRUE
|
||||
,FALSE),
|
||||
('purse_requests_was_deleted'
|
||||
,'exchange-0003'
|
||||
,'exchange-0002'
|
||||
,'master'
|
||||
,TRUE
|
||||
,FALSE);
|
||||
|
@ -20,8 +20,6 @@ BEGIN;
|
||||
|
||||
SELECT _v.unregister_patch('exchange-0001');
|
||||
SELECT _v.unregister_patch('exchange-0002');
|
||||
SELECT _v.unregister_patch('exchange-0003');
|
||||
SELECT _v.unregister_patch('exchange-0004');
|
||||
|
||||
DROP SCHEMA exchange CASCADE;
|
||||
|
||||
|
@ -137,90 +137,10 @@ COMMENT ON FUNCTION comment_partitioned_column
|
||||
IS 'Generic function to create a comment on column of a table that is partitioned.';
|
||||
|
||||
|
||||
--------------------------------------------------------------
|
||||
-- Taler amounts and helper functiosn
|
||||
-------------------------------------------------------------
|
||||
|
||||
|
||||
CREATE PROCEDURE amount_normalize(
|
||||
IN amount taler_amount
|
||||
,OUT normalized taler_amount
|
||||
)
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
normalized.val = amount.val + amount.frac / 100000000;
|
||||
normalized.frac = amount.frac % 100000000;
|
||||
END $$;
|
||||
|
||||
COMMENT ON PROCEDURE amount_normalize
|
||||
IS 'Returns the normalized amount by adding to the .val the value of (.frac / 100000000) and removing the modulus 100000000 from .frac.';
|
||||
|
||||
CREATE PROCEDURE amount_add(
|
||||
IN a taler_amount
|
||||
,IN b taler_amount
|
||||
,OUT sum taler_amount
|
||||
)
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
sum = (a.val + b.val, a.frac + b.frac);
|
||||
CALL amount_normalize(sum ,sum);
|
||||
|
||||
IF (sum.val > (1<<52))
|
||||
THEN
|
||||
RAISE EXCEPTION 'addition overflow';
|
||||
END IF;
|
||||
END $$;
|
||||
|
||||
COMMENT ON PROCEDURE amount_add
|
||||
IS 'Returns the normalized sum of two amounts. It raises an exception when the resulting .val is larger than 2^52';
|
||||
|
||||
CREATE FUNCTION amount_left_minus_right(
|
||||
IN l taler_amount
|
||||
,IN r taler_amount
|
||||
,OUT diff taler_amount
|
||||
,OUT ok BOOLEAN
|
||||
)
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
|
||||
IF (l.val > r.val)
|
||||
THEN
|
||||
ok = TRUE;
|
||||
IF (l.frac >= r.frac)
|
||||
THEN
|
||||
diff.val = l.val - r.val;
|
||||
diff.frac = l.frac - r.frac;
|
||||
ELSE
|
||||
diff.val = l.val - r.val - 1;
|
||||
diff.frac = l.frac + 100000000 - r.frac;
|
||||
END IF;
|
||||
ELSE
|
||||
IF (l.val = r.val) AND (l.frac >= r.frac)
|
||||
THEN
|
||||
diff.val = 0;
|
||||
diff.frac = l.frac - r.frac;
|
||||
ok = TRUE;
|
||||
ELSE
|
||||
diff = (-1, -1);
|
||||
ok = FALSE;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
RETURN;
|
||||
END $$;
|
||||
|
||||
COMMENT ON FUNCTION amount_left_minus_right
|
||||
IS 'Subtracts the right amount from the left and returns the difference and TRUE, if the left amount is larger than the right, or an invalid amount and FALSE otherwise.';
|
||||
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
-- Main DB setup loop
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
|
||||
CREATE FUNCTION do_create_tables(
|
||||
num_partitions INTEGER
|
||||
-- NULL: no partitions, add foreign constraints
|
||||
|
@ -22,7 +22,8 @@ SET search_path TO exchange;
|
||||
CREATE TYPE taler_amount
|
||||
AS
|
||||
(val INT8
|
||||
,frac INT4);
|
||||
,frac INT4
|
||||
);
|
||||
COMMENT ON TYPE taler_amount
|
||||
IS 'Stores an amount, fraction is in units of 1/100000000 of the base value';
|
||||
|
||||
@ -95,5 +96,4 @@ COMMENT ON TYPE exchange_do_array_reserve_insert_return_type
|
||||
#include "0002-age_withdraw.sql"
|
||||
|
||||
|
||||
|
||||
COMMIT;
|
||||
|
@ -18,6 +18,7 @@ BEGIN;
|
||||
|
||||
SET search_path TO exchange;
|
||||
|
||||
#include "exchange_do_amount_specific.sql"
|
||||
#include "exchange_do_withdraw.sql"
|
||||
#include "exchange_do_batch_withdraw.sql"
|
||||
#include "exchange_do_batch_withdraw_insert.sql"
|
||||
|
Loading…
Reference in New Issue
Block a user