finalize v3/v4 -> v2 exchange schema merger

This commit is contained in:
Özgür Kesim 2023-07-28 14:29:25 +02:00
parent 0d0494ee91
commit 1c923855a3
Signed by: oec
GPG Key ID: 3D76A56D79EDD9D7
10 changed files with 19 additions and 105 deletions

View File

@ -138,7 +138,7 @@ BEGIN
'ALTER TABLE ' || table_name || 'ALTER TABLE ' || table_name ||
' ADD CONSTRAINT ' || table_name || '_foreign_reserve_pub' ' ADD CONSTRAINT ' || table_name || '_foreign_reserve_pub'
' FOREIGN KEY (reserve_pub)' ' FOREIGN KEY (reserve_pub)'
' REFERENCES reserves(reserve_pub);' -- ON DELETE CASCADE;' ' REFERENCES reserves(reserve_pub) ON DELETE CASCADE;'
); );
END END
$$; $$;
@ -151,6 +151,7 @@ INSERT INTO exchange_tables
,partitioned ,partitioned
,by_range) ,by_range)
VALUES VALUES
('age_withdraw', 'exchange-0003', 'create', TRUE ,FALSE), ('age_withdraw', 'exchange-0002', 'create', TRUE ,FALSE),
('age_withdraw', 'exchange-0003', 'constrain',TRUE ,FALSE), ('age_withdraw', 'exchange-0002', 'constrain',TRUE ,FALSE),
('age_withdraw', 'exchange-0003', 'foreign', TRUE ,FALSE); ('age_withdraw', 'exchange-0002', 'foreign', TRUE ,FALSE);

View File

@ -137,12 +137,12 @@ INSERT INTO exchange_tables
,by_range) ,by_range)
VALUES VALUES
('aml_history' ('aml_history'
,'exchange-0003' ,'exchange-0002'
,'create' ,'create'
,TRUE ,TRUE
,FALSE), ,FALSE),
('aml_history' ('aml_history'
,'exchange-0003' ,'exchange-0002'
,'constrain' ,'constrain'
,TRUE ,TRUE
,FALSE); ,FALSE);

View File

@ -91,12 +91,12 @@ INSERT INTO exchange_tables
,by_range) ,by_range)
VALUES VALUES
('aml_status' ('aml_status'
,'exchange-0003' ,'exchange-0002'
,'create' ,'create'
,TRUE ,TRUE
,FALSE), ,FALSE),
('aml_status' ('aml_status'
,'exchange-0003' ,'exchange-0002'
,'constrain' ,'constrain'
,TRUE ,TRUE
,FALSE); ,FALSE);

View File

@ -55,12 +55,6 @@ BEGIN
,table_name ,table_name
,partition_suffix ,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( PERFORM comment_partitioned_column(
'time when the attributes were collected by the provider' 'time when the attributes were collected by the provider'
,'collection_time' ,'collection_time'
@ -144,12 +138,12 @@ INSERT INTO exchange_tables
,by_range) ,by_range)
VALUES VALUES
('kyc_attributes' ('kyc_attributes'
,'exchange-0003' ,'exchange-0002'
,'create' ,'create'
,TRUE ,TRUE
,FALSE), ,FALSE),
('kyc_attributes' ('kyc_attributes'
,'exchange-0003' ,'exchange-0002'
,'constrain' ,'constrain'
,TRUE ,TRUE
,FALSE); ,FALSE);

View File

@ -110,12 +110,12 @@ INSERT INTO exchange_tables
,by_range) ,by_range)
VALUES VALUES
('purse_actions' ('purse_actions'
,'exchange-0003' ,'exchange-0002'
,'create' ,'create'
,TRUE ,TRUE
,FALSE), ,FALSE),
('purse_actions' ('purse_actions'
,'exchange-0003' ,'exchange-0002'
,'master' ,'master'
,TRUE ,TRUE
,FALSE); ,FALSE);

View File

@ -94,17 +94,17 @@ INSERT INTO exchange_tables
,by_range) ,by_range)
VALUES VALUES
('purse_deletion' ('purse_deletion'
,'exchange-0003' ,'exchange-0002'
,'create' ,'create'
,TRUE ,TRUE
,FALSE), ,FALSE),
('purse_deletion' ('purse_deletion'
,'exchange-0003' ,'exchange-0002'
,'constrain' ,'constrain'
,TRUE ,TRUE
,FALSE), ,FALSE),
('purse_requests_was_deleted' ('purse_requests_was_deleted'
,'exchange-0003' ,'exchange-0002'
,'master' ,'master'
,TRUE ,TRUE
,FALSE); ,FALSE);

View File

@ -20,8 +20,6 @@ BEGIN;
SELECT _v.unregister_patch('exchange-0001'); SELECT _v.unregister_patch('exchange-0001');
SELECT _v.unregister_patch('exchange-0002'); SELECT _v.unregister_patch('exchange-0002');
SELECT _v.unregister_patch('exchange-0003');
SELECT _v.unregister_patch('exchange-0004');
DROP SCHEMA exchange CASCADE; DROP SCHEMA exchange CASCADE;

View File

@ -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.'; 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 -- Main DB setup loop
--------------------------------------------------------------------------- ---------------------------------------------------------------------------
CREATE FUNCTION do_create_tables( CREATE FUNCTION do_create_tables(
num_partitions INTEGER num_partitions INTEGER
-- NULL: no partitions, add foreign constraints -- NULL: no partitions, add foreign constraints

View File

@ -22,7 +22,8 @@ SET search_path TO exchange;
CREATE TYPE taler_amount CREATE TYPE taler_amount
AS AS
(val INT8 (val INT8
,frac INT4); ,frac INT4
);
COMMENT ON TYPE taler_amount COMMENT ON TYPE taler_amount
IS 'Stores an amount, fraction is in units of 1/100000000 of the base value'; 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" #include "0002-age_withdraw.sql"
COMMIT; COMMIT;

View File

@ -18,6 +18,7 @@ BEGIN;
SET search_path TO exchange; SET search_path TO exchange;
#include "exchange_do_amount_specific.sql"
#include "exchange_do_withdraw.sql" #include "exchange_do_withdraw.sql"
#include "exchange_do_batch_withdraw.sql" #include "exchange_do_batch_withdraw.sql"
#include "exchange_do_batch_withdraw_insert.sql" #include "exchange_do_batch_withdraw_insert.sql"