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 ||
|
'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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user