\i sql/model.sql \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) _market_session | _market_status -----------------+---------------- 1 | OPENED (1 row) RESET client_min_messages; RESET log_error_verbosity; SET client_min_messages = notice; SET log_error_verbosity = terse; 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) select yflows_array_to_json(array[yflow('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,6,1,1)]'),yflow('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,6,1,1)]')]); yflows_array_to_json --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [ + [{"id":100, "own":10, "nr":3, "qtt_requ":1, "np":4, "qtt_prov":1, "qtt":1, "flowr":0 },{"id":101, "own":11, "nr":4, "qtt_requ":1, "np":5, "qtt_prov":1, "qtt":1, "flowr":0 },{"id":102, "own":12, "nr":5, "qtt_requ":1, "np":6, "qtt_prov":1, "qtt":1, "flowr":0 }]+ , + [{"id":100, "own":10, "nr":3, "qtt_requ":1, "np":4, "qtt_prov":1, "qtt":1, "flowr":0 },{"id":101, "own":11, "nr":4, "qtt_requ":1, "np":5, "qtt_prov":1, "qtt":1, "flowr":0 },{"id":102, "own":12, "nr":5, "qtt_requ":1, "np":6, "qtt_prov":1, "qtt":1, "flowr":0 }]+ ] + (1 row) select yflow_iterid(yflow('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,3,1,1)]')); -- draft yflow_iterid -------------- 100 101 102 (3 rows) -- select yflow_show('[(100,10,3,1,4,1,1),(101,11,4,1,5,1,1),(102,12,5,1,6,1,1),(103,13,6,1,7,1,1),(104,14,7,1,8,1,1),(105,15,8,1,9,1,1),(106,16,9,1,10,1,1),(107,17,10,1,11,1,1),(108,18,11,1,12,1,1),(109,19,12,1,13,1,1),(110,20,13,1,14,1,1),(111,21,14,1,15,1,1),(112,22,15,1,16,1,1),(113,23,16,1,17,1,1),(114,24,17,1,18,1,1),(115,25,18,1,3,1,1)');