/*drop schema if exists t cascade; create schema t; set schema 't';*/ SET client_min_messages = warning; \set ECHO none _create_roles --------------- 0 (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _reference_time ----------------- 0 (1 row) _grant_read ------------- (1 row) _reference_time ----------------- 0 (1 row) _reference_time ----------------- 0 (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _grant_read ------------- (1 row) _removepublic --------------- (1 row) psql:sql/model.sql:2105: INFO: market_status INITIALIZING->OPENED psql:sql/model.sql:2105: INFO: The market is now opened for clients fchangestatemarket -------------------- OPENED (1 row) RESET client_min_messages; -- set search_path='t'; \set ECHO all RESET client_min_messages; select '(1,2,3,4,5,6,7)'::yorder; yorder ----------------- (1,2,3,4,5,6,7) (1 row) select '(1,2,3,4,5,6,7)'::yorder='(1,5,6,7,8,9,10)'::yorder; --true ?column? ---------- t (1 row) select yorder_np('(1,2,3,4,5,6,7)'::yorder); -- 5 yorder_np ----------- 5 (1 row) select yorder_nr('(1,2,3,4,5,6,7)'::yorder); -- 3 yorder_nr ----------- 3 (1 row) select yorder_spos('(1,2,3,4,5,6,7)'::yorder); -- true yorder_spos ------------- t (1 row) select yorder_spos('(1,2,3,4,5,6,0)'::yorder); -- false yorder_spos ------------- f (1 row) select yorder_get(1,2,3,4,5,6,7); yorder_get ----------------- (1,2,3,4,5,6,7) (1 row) select yflow('[]'); yflow ------- [] (1 row) select yflow('[(1,2,3,4,5,6,7)]'); yflow ------------------------- [(1, 2, 3, 4, 5, 6, 7)] (1 row) -- select yflow_show('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); select yflow('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,6,1,1)]'); -- noloop yflow ------------------------------------------------------------------------------ [(100, 10, 3, 1, 4, 1, 1),(101, 11, 4, 1, 5, 1, 1),(102, 12, 5, 1, 6, 1, 1)] (1 row) -- select yflow_show('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); -- loop select yflow_status('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); --3 yflow_status -------------- 3 (1 row) -- select yflow_show('[(100,10,3,1,4,1,1),(101,11,4,1,5,8,8),(0,12,5,1,3,1,0)]'); -- loop lastignore select yflow_get('(1,2,3,4,5,6,7)'::yorder); yflow_get ------------------------- [(1, 2, 3, 4, 5, 6, 7)] (1 row) select yflow_follow(3,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,5,1,6,1,1)'::yorder); -- true yflow_follow -------------- t (1 row) select yflow_get('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,5,1,6,1,1)'::yorder); yflow_get ------------------------------------------------------------------------------ [(100, 10, 3, 1, 4, 1, 1),(101, 11, 4, 1, 5, 1, 1),(102, 12, 5, 1, 6, 1, 1)] (1 row) select yflow_follow(3,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,5,1,6,1,0)'::yorder); -- false,qtt=0 yflow_follow -------------- f (1 row) select yflow_follow(3,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,6,1,7,1,1)'::yorder); -- false,np!=nr yflow_follow -------------- f (1 row) select yflow_follow(2,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,5,1,6,1,1)'::yorder); -- false,maxlen reached yflow_follow -------------- f (1 row) select yflow_follow(3,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(100,12,5,1,6,1,1)'::yorder); -- false, order in flow yflow_follow -------------- f (1 row) select yflow_follow(3,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,5,1,3,1,1)'::yorder); -- true, cycle expected yflow_follow -------------- t (1 row) select yflow_follow(3,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow,'(102,12,5,1,4,1,1)'::yorder); -- false, cycle unexpected yflow_follow -------------- f (1 row) select yflow_follow(3,'(102,12,2,1,3,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow); -- true yflow_follow -------------- t (1 row) select yflow_get('(102,12,2,1,3,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow); yflow_get ------------------------------------------------------------------------------ [(102, 12, 2, 1, 3, 1, 1),(100, 10, 3, 1, 4, 1, 1),(101, 11, 4, 1, 5, 1, 1)] (1 row) select yflow_follow(3,'(102,12,2,1,3,1,0)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow); -- false,qtt=0 yflow_follow -------------- f (1 row) select yflow_follow(3,'(102,12,2,1,1000,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow); -- false np!=nr yflow_follow -------------- f (1 row) select yflow_follow(2,'(102,12,2,1,3,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow); -- false maxlen reached yflow_follow -------------- f (1 row) select yflow_follow(3,'(100,12,2,1,3,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1)]'::yflow); -- false order in flow yflow_follow -------------- f (1 row) select yflow_follow(3,'(102,12,2,1,3,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,2,1,1)]'::yflow); -- true, cycle expected yflow_follow -------------- t (1 row) select yflow_follow(3,'(102,12,4,1,3,1,1)'::yorder,'[(100,10,3,1,4,1,1),(101,11,4,1,2,1,1)]'::yflow); -- false, cycle unexpected yflow_follow -------------- f (1 row) -- all orders reduced select yflow_reduce('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]','[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); yflow_reduce ------------------------------------------------------------------------------ [(100, 10, 3, 1, 4, 1, 0),(101, 11, 4, 1, 5, 1, 0),(102, 12, 5, 1, 3, 1, 0)] (1 row) select yflow_reduce('[(100,10,3,1,4,1,10),(101,11,4,1,5,1,10),(102,12,5,1,3,1,10)]','[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); yflow_reduce ------------------------------------------------------------------------------ [(100, 10, 3, 1, 4, 1, 9),(101, 11, 4, 1, 5, 1, 9),(102, 12, 5, 1, 3, 1, 9)] (1 row) -- with lastignore (qtt_requ = 0) select yflow_reduce('[(100,10,3,1,4,1,10),(101,11,4,1,5,1,10),(0,12,5,1,3,1,1)]','[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(12345,12,5,0,3,1,1)]'); yflow_reduce ---------------------------------------------------------------------------- [(100, 10, 3, 1, 4, 1, 9),(101, 11, 4, 1, 5, 1, 9),(0, 12, 5, 1, 3, 1, 1)] (1 row) -- just some orders reduced select yflow_reduce('[(900,10,3,1,4,1,10),(101,11,4,1,5,1,10),(904,12,5,1,3,1,10)]','[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); yflow_reduce -------------------------------------------------------------------------------- [(900, 10, 3, 1, 4, 1, 10),(101, 11, 4, 1, 5, 1, 9),(904, 12, 5, 1, 3, 1, 10)] (1 row) -- empty flow is unchanged select yflow_reduce('[(900,10,3,1,4,1,10),(101,11,4,1,5,1,10),(904,12,5,1,3,1,0)]','[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]'); yflow_reduce -------------------------------------------------------------------------------- [(900, 10, 3, 1, 4, 1, 10),(101, 11, 4, 1, 5, 1, 10),(904, 12, 5, 1, 3, 1, 0)] (1 row)