reset role; SET log_error_verbosity = terse; SET client_min_messages = notice; -- all orders removed CREATE FUNCTION swallow_orders() RETURNS int AS $$ DECLARE _i int; _uuid text; _vo vorder%rowtype; BEGIN _i := 0; FOR _uuid IN SELECT m.uuid FROM torder m LOOP _vo := fremoveorder(_uuid); _i := _i + 1; END LOOP; RETURN _i; END; $$ LANGUAGE PLPGSQL; -- all mvts removed CREATE FUNCTION swallow_agreements() RETURNS int AS $$ DECLARE _i int; _uuid text; _CHECK_QUALITY_OWNERSHIP int := fgetconst('CHECK_QUALITY_OWNERSHIP'); BEGIN _i := 0; FOR _uuid IN SELECT m.uuid FROM tmvt m, tquality q WHERE m.nat=q.id AND ((q.depository=session_user) OR (_CHECK_QUALITY_OWNERSHIP = 0)) GROUP BY m.uuid LOOP _i := _i + fremovemvt(_uuid); END LOOP; RETURN _i; END; $$ LANGUAGE PLPGSQL; select swallow_orders(); swallow_orders ---------------- 2 (1 row) select swallow_agreements(); swallow_agreements -------------------- 10 (1 row) set role admin; select * from fchangestatemarket(true); _market_session | _market_status -----------------+---------------- 1 | STOPPING (1 row) select * from fchangestatemarket(true); NOTICE: Connexions by clients are forbidden. The role admin has exclusive access to the market. _market_session | _market_status -----------------+---------------- 1 | CLOSED (1 row) select * from fchangestatemarket(true); NOTICE: A new market session is created. Run the command: VACUUM FULL ANALYZE before changing the market state to OPENED. _market_session | _market_status -----------------+---------------- 2 | STARTING (1 row) select * from fchangestatemarket(true); _market_session | _market_status -----------------+---------------- 2 | OPENED (1 row) select id,market_session,market_status from vmarket; id | market_session | market_status ----+----------------+--------------- 5 | 2 | OPENED (1 row) set role client; select finsertorder('u','b',1000,1000,'a'); finsertorder -------------------------------- (1,2-1,1,5,1000,4,1000,0,0,[]) (1 row) select finsertorder('v','c',1000,1000,'b'); finsertorder -------------------------------- (2,2-2,2,4,1000,6,1000,0,0,[]) (1 row) select qtt_in,qtt_out from fgetquote('w','a',1000,0,'c'); qtt_in | qtt_out --------+--------- 1000 | 1000 (1 row) select finsertorder('w','a',1000,1000,'c'); finsertorder ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (3,2-3,3,6,1000,5,1000,1000,1000,"[[{""id"":1, ""own"":1, ""nr"":5, ""qtt_requ"":1000, ""np"":4, ""qtt_prov"":1000, ""qtt"":1000, ""flowr"":1000 },{""id"":2, ""own"":2, ""nr"":4, ""qtt_requ"":1000, ""np"":6, ""qtt_prov"":1000, ""qtt"":1000, ""flowr"":1000 },{""id"":3, ""own"":3, ""nr"":6, ""qtt_requ"":1000, ""np"":5, ""qtt_prov"":1000, ""qtt"":1000, ""flowr"":1000 }]+ ]") (1 row) select id,uuid,nb,oruuid,grp,provider,quality,qtt,receiver from vmvt order by uuid; id | uuid | nb | oruuid | grp | provider | quality | qtt | receiver ----+------+----+--------+-----+----------+---------+------+---------- 1 | 2-1 | 3 | 2-3 | 2-1 | w | a | 1000 | u 2 | 2-2 | 3 | 2-1 | 2-1 | u | b | 1000 | v 3 | 2-3 | 3 | 2-2 | 2-1 | v | c | 1000 | w (3 rows) select fremovemvt('2-1'); fremovemvt ------------ 1 (1 row) select fremovemvt('2-2'); fremovemvt ------------ 1 (1 row) select fremovemvt('2-3'); fremovemvt ------------ 1 (1 row) select finsertorder('u','b',2000,1000,'a'); finsertorder -------------------------------- (4,2-4,1,5,1000,4,2000,0,0,[]) (1 row) select finsertorder('v','c',2000,1000,'b'); finsertorder -------------------------------- (5,2-5,2,4,1000,6,2000,0,0,[]) (1 row) select qtt_in,qtt_out from fgetquote('w','a',500,0,'c'); qtt_in | qtt_out --------+--------- 2000 | 500 (1 row) --select finsertorder('w','a',500,2000,'c'); select qtt_in,qtt_out from fgetquote('w','a',500,2000,'c'); qtt_in | qtt_out --------+--------- 2000 | 500 (1 row) select qtt_in,qtt_out from fexecquote('w',1); qtt_in | qtt_out --------+--------- 2000 | 500 (1 row) select id,uuid,nb,oruuid,grp,provider,quality,qtt,receiver from vmvt order by uuid; id | uuid | nb | oruuid | grp | provider | quality | qtt | receiver ----+------+----+--------+-----+----------+---------+------+---------- 4 | 2-4 | 3 | 2-6 | 2-4 | w | a | 500 | u 5 | 2-5 | 3 | 2-4 | 2-4 | u | b | 1000 | v 6 | 2-6 | 3 | 2-5 | 2-4 | v | c | 2000 | w (3 rows) select fremovemvt('2-4'); fremovemvt ------------ 1 (1 row) select fremovemvt('2-5'); fremovemvt ------------ 1 (1 row) select fremovemvt('2-6'); fremovemvt ------------ 1 (1 row) select fgetquote('w','a',500,0,'b'); fgetquote ----------------------------------------------------------------------------------------------- (0,3,4,0,5,500,1000,500,"{""[(4, 1, 5, 1000, 4, 2000, 1000),(0, 3, 4, 0, 5, 500, 500)]""}",,) (1 row) select finsertorder('w','a',500,1000,'b'); finsertorder --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- (7,2-7,3,4,1000,5,500,1000,500,"[[{""id"":4, ""own"":1, ""nr"":5, ""qtt_requ"":1000, ""np"":4, ""qtt_prov"":2000, ""qtt"":1000, ""flowr"":1000 },{""id"":7, ""own"":3, ""nr"":4, ""qtt_requ"":1000, ""np"":5, ""qtt_prov"":500, ""qtt"":500, ""flowr"":500 }]+ ]") (1 row) set role admin; select * from fchangestatemarket(true); _market_session | _market_status -----------------+---------------- 2 | STOPPING (1 row) select id,market_session,market_status from vmarket; id | market_session | market_status ----+----------------+--------------- 6 | 2 | STOPPING (1 row) -- market is closed set role client; select fremovemvt('2-7'); fremovemvt ------------ 1 (1 row) select fremovemvt('2-8'); fremovemvt ------------ 1 (1 row) set role admin; select * from fgetstats(true); _name | cnt -----------------------------+----- number of qualities | 9 number of owners | 7 number of quotes | 0 number of orders | 24 number of movements | 26 number of quotes removed | 5 number of orders removed | 24 number of movements removed | 26 number of agreements | 10 number of orders rejected | 0 agreements with 2 partners | 4 agreements with 3 partners | 6 (12 rows) select * from fgeterrs() where cnt != 0; _name | cnt -------+----- (0 rows) select * from fchangestatemarket(true); NOTICE: Connexions by clients are forbidden. The role admin has exclusive access to the market. _market_session | _market_status -----------------+---------------- 2 | CLOSED (1 row) select * from fchangestatemarket(true); NOTICE: A new market session is created. Run the command: VACUUM FULL ANALYZE before changing the market state to OPENED. _market_session | _market_status -----------------+---------------- 3 | STARTING (1 row) select * from fchangestatemarket(true); _market_session | _market_status -----------------+---------------- 3 | OPENED (1 row) select id,market_session,market_status from vmarket; id | market_session | market_status ----+----------------+--------------- 9 | 3 | OPENED (1 row) -- merket is opened select * from fgetstats(true); _name | cnt -----------------------------+----- number of qualities | 9 number of owners | 7 number of quotes | 0 number of orders | 24 number of movements | 26 number of quotes removed | 5 number of orders removed | 24 number of movements removed | 26 number of agreements | 10 number of orders rejected | 0 agreements with 2 partners | 4 agreements with 3 partners | 6 (12 rows)