id: htsql-regression-tests tests: - id: setup tests: [] - include: test/regress/functions.yaml output: id: functions,-datatypes-and-operators tests: - id: function-tests tests: - uri: /{1|0} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..... | -+-------+- | (1|0) | -+-------+- | true | (1 row) ----- /{(1|0)}/ - uri: /{!(1|0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........ | -+----------+- | (!(1|0)) | -+----------+- | false | (1 row) ----- /{(!(1|0))}/ - uri: /{2+2} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..... | -+-------+- | (2+2) | -+-------+- | 4 | (1 row) ----- /{(2+2)}/ - uri: /{10 div 3, 10 mod 3} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................... | -+-------------------------+- | (10 div 3) | (10 mod 3) | -+------------+------------+- | 3 | 1 | (1 row) ----- /{(10 div 3),(10 mod 3)}/ - uri: /{(2*5) div (2+3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................. | -+-------------------+- | ((2*5) div (2+3)) | -+-------------------+- | 2 | (1 row) ----- /{((2*5) div (2+3))}/ - uri: /{div(10,3), mod(10,3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................... | -+-------------------------+- | div(10, 3) | mod(10, 3) | -+------------+------------+- | 3 | 1 | (1 row) ----- /{div(10,3),mod(10,3)}/ - uri: /{100 div 10, 2 "+" 2, 6 bitwise_or 8, 123.345 round 1, 'htsql'{1 substr 3}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..................................................................................... | -+---------------------------------------------------------------------------------------+- | (100 div 10) | (2 + 2) | (6 bitwise_or 8) | (123.345 round 1) | 'htsql'{(1 substr 3)} | -+--------------+---------+------------------+-------------------+-----------------------+- | 10 | 4 | 14 | 123.3 | tsq | (1 row) ----- /{(100 div 10),(2 "+" 2),(6 bitwise_or 8),(123.345 round 1),'htsql'{(1 substr 3)}}/ - uri: /{null()==null()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................ | -+------------------+- | (null()==null()) | -+------------------+- | true | (1 row) ----- /{(null()==null())}/ - uri: /{2+null()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......... | -+------------+- | (2+null()) | -+------------+- | | (1 row) ----- /{(2+null())}/ - uri: /{'hi'+null()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............. | -+---------------+- | ('hi'+null()) | -+---------------+- | | (1 row) ----- /{('hi'+null())}/ - uri: /{string('2')+2=4,2+string('2')=4,string('2')+string('2')='22'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................ | -+------------------------------------------------------------------------------+- | ((string('2')+2)=4) | ((2+string('2'))=4) | ((string('2')+string('2'))='22') | -+---------------------+---------------------+----------------------------------+- | true | true | true | (1 row) ----- /{((string('2')+2)=4),((2+string('2'))=4),((string('2')+string('2'))='22')}/ - uri: /{string('2')*2=4,2*string('2')=4,string('2') div 2=1} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................... | -+---------------------------------------------------------------------+- | ((string('2')*2)=4) | ((2*string('2'))=4) | ((string('2') div 2)=1) | -+---------------------+---------------------+-------------------------+- | true | true | true | (1 row) ----- /{((string('2')*2)=4),((2*string('2'))=4),((string('2') div 2)=1)}/ - uri: /{+string('2')=-string('-2')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................ | -+----------------------------------+- | ((+string('2'))=(-string('-2'))) | -+----------------------------------+- | true | (1 row) ----- /{((+string('2'))=(-string('-2')))}/ - uri: /{true()&false()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................ | -+------------------+- | (true()&false()) | -+------------------+- | false | (1 row) ----- /{(true()&false())}/ - uri: /{false()|true()|false()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................ | -+--------------------------+- | (false()|true()|false()) | -+--------------------------+- | true | (1 row) ----- /{(false()|true()|false())}/ - uri: /{1&'false'&true()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................. | -+--------------------+- | (1&'false'&true()) | -+--------------------+- | false | (1 row) ----- /{(1&'false'&true())}/ - uri: /{false()->false(),false()->true(), true()->false(),true()->true()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................. | -+-------------------------------------------------------------------------------+- | (false()->false()) | (false()->true()) | (true()->false()) | (true()->true()) | -+--------------------+-------------------+-------------------+------------------+- | true | true | false | true | (1 row) ----- /{(false()->false()),(false()->true()),(true()->false()),(true()->true())}/ - uri: /{true()|true()->false(),true()|(true()->false()), (true()|true())->false()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................................... | -+--------------------------------------------------------------------------------------+- | (true()|(true()->false())) | (true()|(true()->false())) | ((true()|true())->false()) | -+----------------------------+----------------------------+----------------------------+- | true | true | false | (1 row) ----- /{(true()|(true()->false())),(true()|(true()->false())),((true()|true())->false())}/ - uri: /{false()->true()&false(),(false()->true())&false(), false()->(true()&false())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................................................................... | -+-----------------------------------------------------------------------------------------+- | ((false()->true())&false()) | ((false()->true())&false()) | (false()->(true()&false())) | -+-----------------------------+-----------------------------+-----------------------------+- | false | false | true | (1 row) ----- /{((false()->true())&false()),((false()->true())&false()),(false()->(true()&false()))}/ - uri: /{!true()->!false(),(!true())->(!false()), !(true()->!false())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................................... | -+-----------------------------------------------------------------------------+- | ((!true())->(!false())) | ((!true())->(!false())) | (!(true()->(!false()))) | -+-------------------------+-------------------------+-------------------------+- | true | true | false | (1 row) ----- /{((!true())->(!false())),((!true())->(!false())),(!(true()->(!false())))}/ - uri: /{!true()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ......... | -+-----------+- | (!true()) | -+-----------+- | false | (1 row) ----- /{(!true())}/ - uri: /{string(true()),string(false()),string(boolean(null()))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......................................................... | -+------------------------------------------------------------+- | string(true()) | string(false()) | string(boolean(null())) | -+----------------+-----------------+-------------------------+- | true | false | | (1 row) ----- /{string(true()),string(false()),string(boolean(null()))}/ - uri: /{'foo'='bar'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............. | -+---------------+- | ('foo'='bar') | -+---------------+- | false | (1 row) ----- /{('foo'='bar')}/ - uri: /{2+2!=5} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......... | -+------------+- | ((2+2)!=5) | -+------------+- | true | (1 row) ----- /{((2+2)!=5)}/ - uri: /{'x'='X'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ......... | -+-----------+- | ('x'='X') | -+-----------+- | false | (1 row) ----- /{('x'='X')}/ - uri: /{1<2,2<=1} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .............. | -+----------------+- | (1<2) | (2<=1) | -+-------+--------+- | true | false | (1 row) ----- /{(1<2),(2<=1)}/ - uri: /{(-1)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .... | -+------+- | (-1) | -+------+- | -1 | (1 row) ----- /{(-1)}/ - uri: /{is_null(null()),is_null(3),is_null('x')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................... | -+---------------------------------------------+- | is_null(null()) | is_null(3) | is_null('x') | -+-----------------+------------+--------------+- | true | false | false | (1 row) ----- /{is_null(null()),is_null(3),is_null('x')}/ - uri: /{is_true(true()),is_true(false()),is_true(null())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................... | -+------------------------------------------------------+- | is_true(true()) | is_true(false()) | is_true(null()) | -+-----------------+------------------+-----------------+- | true | false | false | (1 row) ----- /{is_true(true()),is_true(false()),is_true(null())}/ - uri: /{is_false(true()),is_false(false()),is_false(null())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................................... | -+---------------------------------------------------------+- | is_false(true()) | is_false(false()) | is_false(null()) | -+------------------+-------------------+------------------+- | false | true | false | (1 row) ----- /{is_false(true()),is_false(false()),is_false(null())}/ - uri: /{coalesce(1, null(), '2', '3')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................. | -+-------------------------------+- | coalesce(1, null(), '2', '3') | -+-------------------------------+- | 1 | (1 row) ----- /{coalesce(1,null(),'2','3')}/ - uri: /{number(string('123.456')),integer(string('123'))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................. | -+----------------------------------------------------+- | number(string('123.456')) | integer(string('123')) | -+---------------------------+------------------------+- | 123.456 | 123 | (1 row) ----- /{number(string('123.456')),integer(string('123'))}/ - uri: /{integer(true()),integer(false())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................. | -+------------------------------------+- | integer(true()) | integer(false()) | -+-----------------+------------------+- | 1 | 0 | (1 row) ----- /{integer(true()),integer(false())}/ - uri: /types{integer(sql92_num_3_2), integer(sql92_integer)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | types | -+-------------------------------------------------+- | integer(sql92_num_3_2) | integer(sql92_integer) | -+------------------------+------------------------+- | 1 | 123 | (1 row) ----- /types{integer(sql92_num_3_2),integer(sql92_integer)}/ - uri: /types{decimal(sql92_num_3_2), decimal(sql92_integer), decimal(sql92_float)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | types | -+----------------------------------------------------------------------------------------------------------------------------------------+- | decimal(sql92_num_3_2) | decimal(sql92_integer) | decimal(sql92_float) | -+------------------------+------------------------+--------------------------------------------------------------------------------------+- | 1.23 | 123 | 123400000000000000000000000000000000000000000000000000000000000000000000000000000000 | (1 row) ----- /types{decimal(sql92_num_3_2),decimal(sql92_integer),decimal(sql92_float)}/ - uri: /types{float(sql92_num_3_2), float(sql92_integer), float(sql92_float)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | types | -+------------------------------------------------------------------+- | float(sql92_num_3_2) | float(sql92_integer) | float(sql92_float) | -+----------------------+----------------------+--------------------+- | 1.23 | 123.0 | 1.234e+83 | (1 row) ----- /types{float(sql92_num_3_2),float(sql92_integer),float(sql92_float)}/ - uri: /{abs(-17.4),ceil(-42.8)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................ | -+------------------------------+- | abs((-17.4)) | ceil((-42.8)) | -+--------------+---------------+- | 17.4 | -42 | (1 row) ----- /{abs((-17.4)),ceil((-42.8))}/ - uri: /{degrees(0.5),exp(1.0),floor(-42.8),ln(2.0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................................ | -+--------------------------------------------------------------------------+- | degrees(0.5) | exp(1.0) | floor((-42.8)) | ln(2.0) | -+---------------+--------------------+----------------+--------------------+- | 28.6478897565 | 2.7182818284590452 | -43 | 0.6931471805599453 | (1 row) ----- /{degrees(0.5),exp(1.0),floor((-42.8)),ln(2.0)}/ - uri: /{log10(100.0),log(2.0,64.0),pi(),(9.0^3.0),radians(45.0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................................... | -+-------------------------------------------------------------------------------------------------+- | log10(100.0) | log(2.0, 64.0) | pi() | (9.0^3.0) | radians(45.0) | -+--------------------+--------------------+---------------+----------------------+----------------+- | 2.0000000000000000 | 6.0000000000000000 | 3.14159265359 | 729.0000000000000000 | 0.785398163397 | (1 row) ----- /{log10(100.0),log(2.0,64.0),pi(),(9.0^3.0),radians(45.0)}/ - uri: /{round(42.4),round(42.4382,2),sign(-8.4),sqrt(2.0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................. | -+--------------------------------------------------------------------+- | round(42.4) | round(42.4382, 2) | sign((-8.4)) | sqrt(2.0) | -+-------------+-------------------+--------------+-------------------+- | 42 | 42.44 | -1 | 1.414213562373095 | (1 row) ----- /{round(42.4),round(42.4382,2),sign((-8.4)),sqrt(2.0)}/ - uri: /{trunc(42.8),trunc(42.4382,2)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................... | -+---------------------------------+- | trunc(42.8) | trunc(42.4382, 2) | -+-------------+-------------------+- | 42 | 42.43 | (1 row) ----- /{trunc(42.8),trunc(42.4382,2)}/ - uri: /{acos(1),asin(1),atan(0),atan2(1,10)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................... | -+-----------------------------------------------------+- | acos(1) | asin(1) | atan(0) | atan2(1, 10) | -+---------+---------------+---------+-----------------+- | 0.0 | 1.57079632679 | 0.0 | 0.0996686524912 | (1 row) ----- /{acos(1),asin(1),atan(0),atan2(1,10)}/ - uri: /{cos(pi()*0.9),sin(pi()*0.9),cot(pi()*0.4),tan(pi()*0.4)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..................................................................... | -+-----------------------------------------------------------------------+- | cos((pi()*0.9)) | sin((pi()*0.9)) | cot((pi()*0.4)) | tan((pi()*0.4)) | -+-----------------+-----------------+-----------------+-----------------+- | -0.951056516295 | 0.309016994375 | 0.324919696233 | 3.07768353718 | (1 row) ----- /{cos((pi()*0.9)),sin((pi()*0.9)),cot((pi()*0.4)),tan((pi()*0.4))}/ - uri: /{'ht'+'sql',('htsql').length()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................... | -+---------------------------------+- | ('ht'+'sql') | 'htsql'.length() | -+--------------+------------------+- | htsql | 5 | (1 row) ----- /{('ht'+'sql'),'htsql'.length()}/ - uri: /{'htsql'[2],'htsql'[1:4],'htsql'[2:], 'htsql'[:2],'htsql'[:]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................. | -+--------------------------------------------------------------------+- | 'htsql'[2] | 'htsql'[1:4] | 'htsql'[2:] | 'htsql'[:2] | 'htsql'[:] | -+------------+--------------+-------------+-------------+------------+- | s | tsq | sql | ht | htsql | (1 row) ----- /{'htsql'[2],'htsql'[1:4],'htsql'[2:],'htsql'[:2],'htsql'[:]}/ - uri: /{'XXX-YY-ZZZZ'[-4:], 'XXX-YY-ZZZZ'[-7:-5], 'XXX-YY-ZZZZ'[:-5], 'XXX-YY-ZZZZ'[4:-5]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .............................................................................................. | -+------------------------------------------------------------------------------------------------+- | 'XXX-YY-ZZZZ'[(-4):] | 'XXX-YY-ZZZZ'[(-7):(-5)] | 'XXX-YY-ZZZZ'[:(-5)] | 'XXX-YY-ZZZZ'[4:(-5)] | -+----------------------+--------------------------+----------------------+-----------------------+- | ZZZZ | YY | XXX-YY | YY | (1 row) ----- /{'XXX-YY-ZZZZ'[(-4):],'XXX-YY-ZZZZ'[(-7):(-5)],'XXX-YY-ZZZZ'[:(-5)],'XXX-YY-ZZZZ'[4:(-5)]}/ - uri: /{'htsql'.at(2),'htsql'.slice(1,4),'htsql'.tail(3), 'htsql'.head(2)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................................................... | -+-------------------------------------------------------------------------+- | 'htsql'.at(2) | 'htsql'.slice(1, 4) | 'htsql'.tail(3) | 'htsql'.head(2) | -+---------------+---------------------+-----------------+-----------------+- | s | tsq | sql | ht | (1 row) ----- /{'htsql'.at(2),'htsql'.slice(1,4),'htsql'.tail(3),'htsql'.head(2)}/ - uri: /{'XXX-YY-ZZZZ'.tail(-7), 'XXX-YY-ZZZZ'.slice(-7,-5), 'XXX-YY-ZZZZ'.head(-5), 'XXX-YY-ZZZZ'.slice(4,-5)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................................................................... | -+----------------------------------------------------------------------------------------------------------------------+- | 'XXX-YY-ZZZZ'.tail((-7)) | 'XXX-YY-ZZZZ'.slice((-7), (-5)) | 'XXX-YY-ZZZZ'.head((-5)) | 'XXX-YY-ZZZZ'.slice(4, (-5)) | -+--------------------------+---------------------------------+--------------------------+------------------------------+- | ZZZZ | YY | XXX-YY | YY | (1 row) ----- /{'XXX-YY-ZZZZ'.tail((-7)),'XXX-YY-ZZZZ'.slice((-7),(-5)),'XXX-YY-ZZZZ'.head((-5)),'XXX-YY-ZZZZ'.slice(4,(-5))}/ - uri: /{'12345'.head(1),'12345'.tail(1), '12345'.head(5),'12345'.tail(5), '12345'.head(-1),'12345'.tail(-1)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................................................... | -+-----------------------------------------------------------------------------------------------------------------+- | '12345'.head(1) | '12345'.tail(1) | '12345'.head(5) | '12345'.tail(5) | '12345'.head((-1)) | '12345'.tail((-1)) | -+-----------------+-----------------+-----------------+-----------------+--------------------+--------------------+- | 1 | 5 | 12345 | 12345 | 1234 | 2345 | (1 row) ----- /{'12345'.head(1),'12345'.tail(1),'12345'.head(5),'12345'.tail(5),'12345'.head((-1)),'12345'.tail((-1))}/ - uri: /{array(1,2,3,4,5).at(0), array(1,2,3,4,5).at(-1), array(1,2,3,4,5).at(2)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................................................................... | -+-----------------------------------------------------------------------------------------+- | array(1, 2, 3, 4, 5).at(0) | array(1, 2, 3, 4, 5).at((-1)) | array(1, 2, 3, 4, 5).at(2) | -+----------------------------+-------------------------------+----------------------------+- | 1 | 5 | 3 | (1 row) ----- /{array(1,2,3,4,5).at(0),array(1,2,3,4,5).at((-1)),array(1,2,3,4,5).at(2)}/ - uri: /{array(1,2,3,4,5).slice(1,-1), array(1,2,3,4,5).slice(-4,4), array(1,2,3,4,5).head(2), array(1,2,3,4,5).tail(3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................................................................................................................... | -+-----------------------------------------------------------------------------------------------------------------------------------------+- | array(1, 2, 3, 4, 5).slice(1, (-1)) | array(1, 2, 3, 4, 5).slice((-4), 4) | array(1, 2, 3, 4, 5).head(2) | array(1, 2, 3, 4, 5).tail(3) | -+-------------------------------------+-------------------------------------+------------------------------+------------------------------+- | [2, 3, 4] | [2, 3, 4] | [1, 2] | [3, 4, 5] | (1 row) ----- /{array(1,2,3,4,5).slice(1,(-1)),array(1,2,3,4,5).slice((-4),4),array(1,2,3,4,5).head(2),array(1,2,3,4,5).tail(3)}/ - uri: /{'ABCDE'=~'b.d','abcde'=~~'b.d','ABCDE'!=~'b..d','ABCDE'!=~~'b.d'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .............................................................................. | -+--------------------------------------------------------------------------------+- | ('ABCDE'=~'b.d') | ('abcde'=~~'b.d') | ('ABCDE'!=~'b..d') | ('ABCDE'!=~~'b.d') | -+------------------+-------------------+--------------------+--------------------+- | true | true | true | true | (1 row) ----- /{('ABCDE'=~'b.d'),('abcde'=~~'b.d'),('ABCDE'!=~'b..d'),('ABCDE'!=~~'b.d')}/ - uri: /{'<\\__%25%25__//>'~'\\','<\\__%25%25__//>'!~'\\\', '<\\__%25%25__//>'~'__','<\\__%25%25__//>'!~'___', '<\\__%25%25__//>'~'%25%25','<\\__%25%25__//>'!~'%25%25%25'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..................................................................................................................................................................................... | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | ('<\\__%25%25__//>'~'\\') | ('<\\__%25%25__//>'!~'\\\') | ('<\\__%25%25__//>'~'__') | ('<\\__%25%25__//>'!~'___') | ('<\\__%25%25__//>'~'%25%25') | ('<\\__%25%25__//>'!~'%25%25%25') | -+---------------------------+-----------------------------+---------------------------+-----------------------------+-------------------------------+-----------------------------------+- | true | true | true | true | true | true | (1 row) ----- /{('<\\__%25%25__//>'~'\\'),('<\\__%25%25__//>'!~'\\\'),('<\\__%25%25__//>'~'__'),('<\\__%25%25__//>'!~'___'),('<\\__%25%25__//>'~'%25%25'),('<\\__%25%25__//>'!~'%25%25%25')}/ - uri: /{'ABCDE'~'bcd','ABCDE'!~'b.d','ABCDE'~~'BCD','ABCDE'!~~'bcd'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ......................................................................... | -+---------------------------------------------------------------------------+- | ('ABCDE'~'bcd') | ('ABCDE'!~'b.d') | ('ABCDE'~~'BCD') | ('ABCDE'!~~'bcd') | -+-----------------+------------------+------------------+-------------------+- | true | true | true | true | (1 row) ----- /{('ABCDE'~'bcd'),('ABCDE'!~'b.d'),('ABCDE'~~'BCD'),('ABCDE'!~~'bcd')}/ - uri: /{'ABCDE'^~'abc','ABCDE'!^~'cde','ABCDE'^~~'ABC','ABCDE'!^~~'abc'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................. | -+-------------------------------------------------------------------------------+- | ('ABCDE'^~'abc') | ('ABCDE'!^~'cde') | ('ABCDE'^~~'ABC') | ('ABCDE'!^~~'abc') | -+------------------+-------------------+-------------------+--------------------+- | true | true | true | true | (1 row) ----- /{('ABCDE'^~'abc'),('ABCDE'!^~'cde'),('ABCDE'^~~'ABC'),('ABCDE'!^~~'abc')}/ - uri: /{'ABCDE'$~'cde','ABCDE'!$~'abc','ABCDE'$~~'CDE','ABCDE'!$~~'cde'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................. | -+-------------------------------------------------------------------------------+- | ('ABCDE'$~'cde') | ('ABCDE'!$~'abc') | ('ABCDE'$~~'CDE') | ('ABCDE'!$~~'cde') | -+------------------+-------------------+-------------------+--------------------+- | true | true | true | true | (1 row) ----- /{('ABCDE'$~'cde'),('ABCDE'!$~'abc'),('ABCDE'$~~'CDE'),('ABCDE'!$~~'cde')}/ - uri: /{'htsql'.substr(2), 'htsql'.substr(1,3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................ | -+------------------------------------------+- | 'htsql'.substr(2) | 'htsql'.substr(1, 3) | -+-------------------+----------------------+- | sql | tsq | (1 row) ----- /{'htsql'.substr(2),'htsql'.substr(1,3)}/ - uri: /{'htsql'.substr(-3), 'htsql'.substr(-2,1)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .............................................. | -+------------------------------------------------+- | 'htsql'.substr((-3)) | 'htsql'.substr((-2), 1) | -+----------------------+-------------------------+- | sql | q | (1 row) ----- /{'htsql'.substr((-3)),'htsql'.substr((-2),1)}/ - uri: /{'http'.overlay('sql',2),'postgresql'.overlay('ht',0,7)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................... | -+-------------------------------------------------------------+- | 'http'.overlay('sql', 2) | 'postgresql'.overlay('ht', 0, 7) | -+--------------------------+----------------------------------+- | htsql | htsql | (1 row) ----- /{'http'.overlay('sql',2),'postgresql'.overlay('ht',0,7)}/ - uri: /{'http'.overlay('sql',-2),'sql'.overlay('ht',-3,0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......................................................... | -+------------------------------------------------------------+- | 'http'.overlay('sql', (-2)) | 'sql'.overlay('ht', (-3), 0) | -+-----------------------------+------------------------------+- | htsql | htsql | (1 row) ----- /{'http'.overlay('sql',(-2)),'sql'.overlay('ht',(-3),0)}/ - uri: /{'htsql'.repeat(3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................. | -+-------------------+- | 'htsql'.repeat(3) | -+-------------------+- | htsqlhtsqlhtsql | (1 row) ----- /{'htsql'.repeat(3)}/ - uri: /{'HtSql'.lower(),'HtSql'.upper()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................. | -+-----------------------------------+- | 'HtSql'.lower() | 'HtSql'.upper() | -+-----------------+-----------------+- | htsql | HTSQL | (1 row) ----- /{'HtSql'.lower(),'HtSql'.upper()}/ - uri: /{' htsql'.ltrim(),'xxhtsql'.ltrim('x'), 'htsql '.rtrim(),'htsqlyy'.rtrim('y'), ' htsql '.trim(),'xxhtsqlyy'.trim('xy')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................................................................................. | -+-----------------------------------------------------------------------------------------------------------------------------------+- | ' htsql'.ltrim() | 'xxhtsql'.ltrim('x') | 'htsql '.rtrim() | 'htsqlyy'.rtrim('y') | ' htsql '.trim() | 'xxhtsqlyy'.trim('xy') | -+-------------------+----------------------+-------------------+----------------------+--------------------+------------------------+- | htsql | htsql | htsql | htsql | htsql | htsql | (1 row) ----- /{' htsql'.ltrim(),'xxhtsql'.ltrim('x'),'htsql '.rtrim(),'htsqlyy'.rtrim('y'),' htsql '.trim(),'xxhtsqlyy'.trim('xy')}/ - uri: /{'123'.lpad(5,'0'),'456'.rpad(6,'0')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................... | -+-----------------------------------------+- | '123'.lpad(5, '0') | '456'.rpad(6, '0') | -+--------------------+--------------------+- | 00123 | 456000 | (1 row) ----- /{'123'.lpad(5,'0'),'456'.rpad(6,'0')}/ - uri: /{'python'.translate('hnopy','slqh')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................... | -+-------------------------------------+- | 'python'.translate('hnopy', 'slqh') | -+-------------------------------------+- | htsql | (1 row) ----- /{'python'.translate('hnopy','slqh')}/ - uri: /{'2.3.5.7.11.13.17'.split('.'),'Paul B. Bergerson'.split(' '), 'package::module::class::method'.split('::')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................................................. | -+---------------------------------------------------------------------------------------------------------------+- | '2.3.5.7.11.13.17'.split('.') | 'Paul B. Bergerson'.split(' ') | 'package::module::class::method'.split('::') | -+-------------------------------+--------------------------------+----------------------------------------------+- | [2, 3, 5, 7, 11, 13, 17] | [Paul, B., Bergerson] | [package, module, class, method] | (1 row) ----- /{'2.3.5.7.11.13.17'.split('.'),'Paul B. Bergerson'.split(' '),'package::module::class::method'.split('::')}/ - uri: /{array(2,4,8,16).join(','),'/'+array('path','to','script').join('/')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................ | -+------------------------------------------------------------------------------+- | array(2, 4, 8, 16).join(',') | ('/'+array('path', 'to', 'script').join('/')) | -+------------------------------+-----------------------------------------------+- | 2,4,8,16 | /path/to/script | (1 row) ----- /{array(2,4,8,16).join(','),('/'+array('path','to','script').join('/'))}/ - uri: /{'htsql'.contains('sql'),'htsql'.contains('http')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................. | -+----------------------------------------------------+- | 'htsql'.contains('sql') | 'htsql'.contains('http') | -+-------------------------+--------------------------+- | true | false | (1 row) ----- /{'htsql'.contains('sql'),'htsql'.contains('http')}/ - uri: /{'htsql'.position('sql'),'htsql'.position('http')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................. | -+----------------------------------------------------+- | 'htsql'.position('sql') | 'htsql'.position('http') | -+-------------------------+--------------------------+- | 2 | -1 | (1 row) ----- /{'htsql'.position('sql'),'htsql'.position('http')}/ - uri: /{'XSLT'.replace('XS','ht').replace('LT','sql')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................... | -+-------------------------------------------------+- | 'XSLT'.replace('XS', 'ht').replace('LT', 'sql') | -+-------------------------------------------------+- | htsql | (1 row) ----- /{'XSLT'.replace('XS','ht').replace('LT','sql')}/ - uri: /{'htsql'.match('t.q'),'htsql'.match('q.t')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................... | -+---------------------------------------------+- | 'htsql'.match('t.q') | 'htsql'.match('q.t') | -+----------------------+----------------------+- | tsq | | (1 row) ----- /{'htsql'.match('t.q'),'htsql'.match('q.t')}/ - uri: /{'postgresql'.substitute('^.{7}','ht'),'operator'.substitute('(o|e|a)','[\1]')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................................. | -+-----------------------------------------------------------------------------------+- | 'postgresql'.substitute('^.{7}', 'ht') | 'operator'.substitute('(o|e|a)', '[\1]') | -+----------------------------------------+------------------------------------------+- | htsql | "[o]p[e]r[a]t[o]r" | (1 row) ----- /{'postgresql'.substitute('^.{7}','ht'),'operator'.substitute('(o|e|a)','[\1]')}/ - uri: /{'quoted label'.label(),'unquoted-label'.label(),'-''-'.label()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................. | -+--------------------------------------------------------------------+- | 'quoted label'.label() | 'unquoted-label'.label() | '-''-'.label() | -+------------------------+--------------------------+----------------+- | 'quoted label' | unquoted-label | '-''-' | (1 row) ----- /{'quoted label'.label(),'unquoted-label'.label(),'-''-'.label()}/ - uri: /{(123).label(),(123.45).label()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................ | -+------------------------------+- | 123.label() | 123.45.label() | -+-------------+----------------+- | 123 | '123.45' | (1 row) ----- /{123.label(),123.45.label()}/ - uri: /{date('2007-07-18'),date(date('2007-07-18')), string(date('2007-07-18')),date(2007,7,18)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .............................................................................................. | -+------------------------------------------------------------------------------------------------+- | date('2007-07-18') | date(date('2007-07-18')) | string(date('2007-07-18')) | date(2007, 7, 18) | -+--------------------+--------------------------+----------------------------+-------------------+- | 2007-07-18 | 2007-07-18 | 2007-07-18 | 2007-07-18 | (1 row) ----- /{date('2007-07-18'),date(date('2007-07-18')),string(date('2007-07-18')),date(2007,7,18)}/ - uri: /{time('00:28'),time(time('12:28:57')), string(time('12:28:57.12Z')),time(12,29,0.56)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......................................................................................... | -+--------------------------------------------------------------------------------------------+- | time('00:28') | time(time('12:28:57')) | string(time('12:28:57.12Z')) | time(12, 29, 0.56) | -+---------------+------------------------+------------------------------+--------------------+- | 00:28:00 | 12:28:57 | 12:28:57.12 | 12:29:00.560000 | (1 row) ----- /{time('00:28'),time(time('12:28:57')),string(time('12:28:57.12Z')),time(12,29,0.56)}/ - uri: /{timetz('00:28'),timetz(time('12:28:57')),time(timetz('12:28:57+3')), string(timetz('12:28:57.12-02:00')),timetz(12,29,0.56), timetz(12,29,0,-5,0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................................................................................................................. | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | timetz('00:28') | timetz(time('12:28:57')) | time(timetz('12:28:57+3')) | string(timetz('12:28:57.12-02:00')) | timetz(12, 29, 0.56) | timetz(12, 29, 0, (-5), 0) | -+-----------------+--------------------------+----------------------------+-------------------------------------+-----------------------+----------------------------+- | 00:28:00-08:00 | 12:28:57-08:00 | 12:28:57 | 12:28:57.12-02 | 12:29:00.560000-08:00 | 12:29:00-05:00 | (1 row) ----- /{timetz('00:28'),timetz(time('12:28:57')),time(timetz('12:28:57+3')),string(timetz('12:28:57.12-02:00')),timetz(12,29,0.56),timetz(12,29,0,(-5),0)}/ - uri: /{datetime('2007-07-18'),datetime('2007-07-18 12:28:57')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................ | -+----------------------------------------------------------+- | datetime('2007-07-18') | datetime('2007-07-18 12:28:57') | -+------------------------+---------------------------------+- | 2007-07-18 00:00:00 | 2007-07-18 12:28:57 | (1 row) ----- /{datetime('2007-07-18'),datetime('2007-07-18 12:28:57')}/ - uri: /{date(datetime('2007-07-18 12:28:57')), time(datetime('2007-07-18 12:28:57')), string(datetime('2007-07-18T12:28:57'))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....................................................................................................................... | -+-------------------------------------------------------------------------------------------------------------------------+- | date(datetime('2007-07-18 12:28:57')) | time(datetime('2007-07-18 12:28:57')) | string(datetime('2007-07-18T12:28:57')) | -+---------------------------------------+---------------------------------------+-----------------------------------------+- | 2007-07-18 | 12:28:57 | 2007-07-18 12:28:57 | (1 row) ----- /{date(datetime('2007-07-18 12:28:57')),time(datetime('2007-07-18 12:28:57')),string(datetime('2007-07-18T12:28:57'))}/ - uri: /{datetime(2007,07,18,12,28,57.2)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................... | -+--------------------------------------+- | datetime(2007, 07, 18, 12, 28, 57.2) | -+--------------------------------------+- | 2007-07-18 12:28:57.200000 | (1 row) ----- /{datetime(2007,07,18,12,28,57.2)}/ - uri: /{timedelta('00:28'),timedelta('90 12:28:57'),timedelta('-7')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................... | -+-----------------------------------------------------------------+- | timedelta('00:28') | timedelta('90 12:28:57') | timedelta('-7') | -+--------------------+--------------------------+-----------------+- | 00:28:00 | 90 12:28:57 | -7 | (1 row) ----- /{timedelta('00:28'),timedelta('90 12:28:57'),timedelta('-7')}/ - uri: /{string(timedelta('1000 12:28:07.12'))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..................................... | -+---------------------------------------+- | string(timedelta('1000 12:28:07.12')) | -+---------------------------------------+- | 1000 12:28:07.12 | (1 row) ----- /{string(timedelta('1000 12:28:07.12'))}/ - uri: /{timedelta(25,12,29,0.56)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................... | -+-----------------------------+- | timedelta(25, 12, 29, 0.56) | -+-----------------------------+- | 25 12:29:00.560000 | (1 row) ----- /{timedelta(25,12,29,0.56)}/ - uri: /{date('2007-01-21'){year,month,day}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .............................................................................. | -+--------------------------------------------------------------------------------+- | date('2007-01-21'){year} | date('2007-01-21'){month} | date('2007-01-21'){day} | -+--------------------------+---------------------------+-------------------------+- | 2007.0 | 1.0 | 21.0 | (1 row) ----- /{date('2007-01-21'){year,month,day}}/ - uri: /{datetime('2007-01-21 12:55:29.15'){year,month,day,hour,minute,second}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................................................................................................................................................................................................................... | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | datetime('2007-01-21 12:55:29.15'){year} | datetime('2007-01-21 12:55:29.15'){month} | datetime('2007-01-21 12:55:29.15'){day} | datetime('2007-01-21 12:55:29.15'){hour} | datetime('2007-01-21 12:55:29.15'){minute} | datetime('2007-01-21 12:55:29.15'){second} | -+------------------------------------------+-------------------------------------------+-----------------------------------------+------------------------------------------+--------------------------------------------+--------------------------------------------+- | 2007.0 | 1.0 | 21.0 | 12.0 | 55.0 | 29.15 | (1 row) ----- /{datetime('2007-01-21 12:55:29.15'){year,month,day,hour,minute,second}}/ - uri: /{timedelta('5 12:15:08'){day,hour,minute,second}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................................................................................ | -+----------------------------------------------------------------------------------------------------------------------------------+- | timedelta('5 12:15:08'){day} | timedelta('5 12:15:08'){hour} | timedelta('5 12:15:08'){minute} | timedelta('5 12:15:08'){second} | -+------------------------------+-------------------------------+---------------------------------+---------------------------------+- | 5.0 | 12.0 | 15.0 | 8.0 | (1 row) ----- /{timedelta('5 12:15:08'){day,hour,minute,second}}/ - uri: /{+timedelta('5 12:15'),-timedelta('-10')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................. | -+-----------------------------------------------+- | (+timedelta('5 12:15')) | (-timedelta('-10')) | -+-------------------------+---------------------+- | 5 12:15:00 | 10 | (1 row) ----- /{(+timedelta('5 12:15')),(-timedelta('-10'))}/ - uri: /{date('2007-07-23')+7,7+date('2007-07-23')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................... | -+-------------------------------------------------+- | (date('2007-07-23')+7) | (7+date('2007-07-23')) | -+------------------------+------------------------+- | 2007-07-30 | 2007-07-30 | (1 row) ----- /{(date('2007-07-23')+7),(7+date('2007-07-23'))}/ - uri: /{timedelta('3')+timedelta('12:15'),timedelta('3')+time('12:15')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................................... | -+----------------------------------------------------------------------+- | (timedelta('3')+timedelta('12:15')) | (timedelta('3')+time('12:15')) | -+-------------------------------------+--------------------------------+- | 3 12:15:00 | 3 12:15:00 | (1 row) ----- /{(timedelta('3')+timedelta('12:15')),(timedelta('3')+time('12:15'))}/ - uri: /{datetime('2007-07-23 19:39')+timedelta('2 12:00'), date('2007-07-23')+time('12:39')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................................................ | -+------------------------------------------------------------------------------------------+- | (datetime('2007-07-23 19:39')+timedelta('2 12:00')) | (date('2007-07-23')+time('12:39')) | -+-----------------------------------------------------+------------------------------------+- | 2007-07-26 07:39:00 | 2007-07-23 12:39:00 | (1 row) ----- /{(datetime('2007-07-23 19:39')+timedelta('2 12:00')),(date('2007-07-23')+time('12:39'))}/ - uri: /{date('2007-07-30')-date('2007-07-23'),date('2007-07-30')-7} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................ | -+------------------------------------------------------------------+- | (date('2007-07-30')-date('2007-07-23')) | (date('2007-07-30')-7) | -+-----------------------------------------+------------------------+- | 7 | 2007-07-23 | (1 row) ----- /{(date('2007-07-30')-date('2007-07-23')),(date('2007-07-30')-7)}/ - uri: /{timedelta('3')-timedelta('12:15'),time('05:00')-time('03:15')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................... | -+---------------------------------------------------------------------+- | (timedelta('3')-timedelta('12:15')) | (time('05:00')-time('03:15')) | -+-------------------------------------+-------------------------------+- | 2 11:45:00 | 01:45:00 | (1 row) ----- /{(timedelta('3')-timedelta('12:15')),(time('05:00')-time('03:15'))}/ - uri: /{datetime('2007-07-23 19:39')-date('2007-07-23')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................. | -+---------------------------------------------------+- | (datetime('2007-07-23 19:39')-date('2007-07-23')) | -+---------------------------------------------------+- | 19:39:00 | (1 row) ----- /{(datetime('2007-07-23 19:39')-date('2007-07-23'))}/ - uri: /{datetime('2007-07-23 19:39')-timedelta('10'), datetime('2007-07-23 19:39')-time('20:00')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................................................. | -+-----------------------------------------------------------------------------------------------+- | (datetime('2007-07-23 19:39')-timedelta('10')) | (datetime('2007-07-23 19:39')-time('20:00')) | -+------------------------------------------------+----------------------------------------------+- | 2007-07-13 19:39:00 | 2007-07-22 23:39:00 | (1 row) ----- /{(datetime('2007-07-23 19:39')-timedelta('10')),(datetime('2007-07-23 19:39')-time('20:00'))}/ - uri: /{(-1.5)*timedelta('-3'),time('12:15')*3} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................ | -+----------------------------------------------+- | ((-1.5)*timedelta('-3')) | (time('12:15')*3) | -+--------------------------+-------------------+- | 4 12:00:00 | 1 12:45:00 | (1 row) ----- /{((-1.5)*timedelta('-3')),(time('12:15')*3)}/ - uri: /{timedelta('3') div 2} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ...................... | -+------------------------+- | (timedelta('3') div 2) | -+------------------------+- | 1 12:00:00 | (1 row) ----- /{(timedelta('3') div 2)}/ - uri: /{datetimetz('2007-07-18'),datetimetz('2007-07-18 12:28:57+5')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................... | -+-----------------------------------------------------------------+- | datetimetz('2007-07-18') | datetimetz('2007-07-18 12:28:57+5') | -+---------------------------+-------------------------------------+- | 2007-07-18 00:00:00-08:00 | 2007-07-17 23:28:57-08:00 | (1 row) ----- /{datetimetz('2007-07-18'),datetimetz('2007-07-18 12:28:57+5')}/ - uri: /{date(datetimetz('2007-07-18 12:28:57+5')), timetz(datetimetz('2007-07-18 12:28:57+5')), string(datetimetz('2007-07-18T12:28:57+05:00'))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ......................................................................................................................................... | -+-------------------------------------------------------------------------------------------------------------------------------------------+- | date(datetimetz('2007-07-18 12:28:57+5')) | timetz(datetimetz('2007-07-18 12:28:57+5')) | string(datetimetz('2007-07-18T12:28:57+05:00')) | -+-------------------------------------------+---------------------------------------------+-------------------------------------------------+- | 2007-07-17 | 23:28:57-08:00 | 2007-07-17 23:28:57-08 | (1 row) ----- /{date(datetimetz('2007-07-18 12:28:57+5')),timetz(datetimetz('2007-07-18 12:28:57+5')),string(datetimetz('2007-07-18T12:28:57+05:00'))}/ - uri: /{datetimetz(2007,07,18,12,28,57.2,-3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................ | -+----------------------------------------------+- | datetimetz(2007, 07, 18, 12, 28, 57.2, (-3)) | -+----------------------------------------------+- | 2007-07-18 07:28:57.200000-08:00 | (1 row) ----- /{datetimetz(2007,07,18,12,28,57.2,(-3))}/ - uri: /{datetimetz('2007-01-21 12:55:29.15-02:30'){tz_hour,tz_minute}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................................................................... | -+-------------------------------------------------------------------------------------------------------------+- | datetimetz('2007-01-21 12:55:29.15-02:30'){tz_hour} | datetimetz('2007-01-21 12:55:29.15-02:30'){tz_minute} | -+-----------------------------------------------------+-------------------------------------------------------+- | -8.0 | 0.0 | (1 row) ----- /{datetimetz('2007-01-21 12:55:29.15-02:30'){tz_hour,tz_minute}}/ - uri: /{string('\a\b\c\d\e')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................... | -+----------------------+- | string('\a\b\c\d\e') | -+----------------------+- | \a\b\c\d\e | (1 row) ----- /{string('\a\b\c\d\e')}/ - uri: /{array(1),array(true(),false()),array('one','two','three')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................ | -+------------------------------------------------------------------+- | array(1) | array(true(), false()) | array('one', 'two', 'three') | -+----------+------------------------+------------------------------+- | [1] | [true, false] | [one, two, three] | (1 row) ----- /{array(1),array(true(),false()),array('one','two','three')}/ - uri: /{array()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ....... | -+---------+- | array() | -+---------+- | [] | (1 row) ----- /{array()}/ - uri: /{('xy'.repeat(500000)~'xx')}/select(timeout=0.001) status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid data: canceling statement due to statement timeout at the position 31: /{('xy'.repeat(500000)~'xx')}/select(timeout=0.001) ^-------------------- - uri: /{timedelta('24:00')} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: type mismatch: invalid timedelta format: hour must be in 0..23 at the position 13: /{timedelta('24:00')} ^------ - uri: /{date('2007-12-32')} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: type mismatch: invalid date format: day is out of range for month at the position 8: /{date('2007-12-32')} ^----------- - uri: /{time('24:00')} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: type mismatch: invalid time format: hour must be in 0..23 at the position 8: /{time('24:00')} ^------ - uri: /{timetz('24:00+2')} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: type mismatch: invalid time format: hour must be in 0..23 at the position 10: /{timetz('24:00+2')} ^-------- - uri: /{3 div 0} status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid data: division by zero at the position 1: /{3 div 0} ^--------- - uri: /{date('2007-01-01')+5.1} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: type mismatch: expected integer, but got number at the position 22: /{date('2007-01-01')+5.1} ^-- - uri: /{if('A'='B',false(),'C'='D',false(),true())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................................................. | -+----------------------------------------------------+- | if(('A'='B'), false(), ('C'='D'), false(), true()) | -+----------------------------------------------------+- | true | (1 row) ----- /{if(('A'='B'),false(),('C'='D'),false(),true())}/ - uri: /{if('A'='A',true(),'C'='D',false())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ......................................... | -+-------------------------------------------+- | if(('A'='A'), true(), ('C'='D'), false()) | -+-------------------------------------------+- | true | (1 row) ----- /{if(('A'='A'),true(),('C'='D'),false())}/ - uri: /{if('A'='B',true(),'C'='D',false())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ......................................... | -+-------------------------------------------+- | if(('A'='B'), true(), ('C'='D'), false()) | -+-------------------------------------------+- | | (1 row) ----- /{if(('A'='B'),true(),('C'='D'),false())}/ - uri: /{if(1=1,true(),1=0,false(),false())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......................................... | -+--------------------------------------------+- | if((1=1), true(), (1=0), false(), false()) | -+--------------------------------------------+- | true | (1 row) ----- /{if((1=1),true(),(1=0),false(),false())}/ - uri: /{switch(2+2,3,'three',4,'four',5,'five','infinity')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........................................................... | -+-------------------------------------------------------------+- | switch((2+2), 3, 'three', 4, 'four', 5, 'five', 'infinity') | -+-------------------------------------------------------------+- | four | (1 row) ----- /{switch((2+2),3,'three',4,'four',5,'five','infinity')}/ - uri: /{switch(true(),!true(),true())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................. | -+-----------------------------------+- | switch(true(), (!true()), true()) | -+-----------------------------------+- | | (1 row) ----- /{switch(true(),(!true()),true())}/ - uri: /{switch('x','a',1,'b',2,'c',3,0)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ...................................... | -+----------------------------------------+- | switch('x', 'a', 1, 'b', 2, 'c', 3, 0) | -+----------------------------------------+- | 0 | (1 row) ----- /{switch('x','a',1,'b',2,'c',3,0)}/ - uri: /{round(random()*1000)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ...................... | -+------------------------+- | round((random()*1000)) | -+------------------------+- | 181.0 | (1 row) ----- /{round((random()*1000))}/ - uri: /{(2+2) as four,(3*3) title nine} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ........... | -+-------------+- | four | nine | -+------+------+- | 4 | 9 | (1 row) ----- /{((2+2) as four),((3*3) title nine)}/ - uri: /{(2+2) as four,four*2} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............... | -+-----------------+- | four | (four*2) | -+------+----------+- | 4 | 8 | (1 row) ----- /{((2+2) as four),(four*2)}/ - uri: /{(3*3) title nine,nine*2} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | unknown object id: perspective "htsql_regress":"owner" has no choices for nine; try one of is_it_weird_, f_u_n:issue, types, weird_identifiers, private_info, organization, participation, person, project, invoice, lineitem, timeslip, test_т, таблица, dependency, workitem, worklist, wsx:issue, meeting, meeting_topic, standing_meeting at the position 20: /{(3*3) title nine,nine*2} ^--- - id: data-types-and-null-handling tests: - uri: /private_info{ethnicity,boolean(ethnicity)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | private_info | -+----------------------------------------+- | ethnicity | boolean(ethnicity) | -+-------------------+--------------------+- | [asian] | true | | [] | false | | [white] | true | | | false | | [black] | true | | [black, hispanic] | true | | [indian] | true | (7 rows) ----- /private_info{ethnicity,boolean(ethnicity)}/ - uri: /person?!license status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+--------------------------------------------------------------+- | org_id | nickname | full_name | license | phone | -+-----------+----------+------------------+---------+----------+- | lake-apts | tom | Tommy O'Mally | | | | lakeside | amy | Amy S. Buckworth | | "" | | smith | maggy | Margret N. Smith | "" | 555-2368 | (3 rows) ----- /person?(!license)/ - uri: /person?license==null() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-----------------------------------------------------------+- | org_id | nickname | full_name | license | phone | -+-----------+----------+------------------+---------+-------+- | lake-apts | tom | Tommy O'Mally | | | | lakeside | amy | Amy S. Buckworth | | "" | (2 rows) ----- /person?(license==null())/ - include: test/regress/selection.yaml output: id: selection tests: - id: seive-selectors-and-predicates tests: - uri: /{count(organization),count(organization?exists(project)), count(organization?!exists(project))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ...................................................................................................... | -+--------------------------------------------------------------------------------------------------------+- | count(organization) | count((organization?exists(project))) | count((organization?(!exists(project)))) | -+---------------------+---------------------------------------+------------------------------------------+- | 7 | 3 | 4 | (1 row) ----- /{count(organization),count((organization?exists(project))),count((organization?(!exists(project))))}/ - uri: /person{full_name,organization{name}?is_active}?nickname='jack' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-----------------------------------------------+- | full_name | organization{name}?is_active | -+----------------+------------------------------+- | Jack C. Meyers | Meyers Construction | | Jack Taupe | | (2 rows) ----- /person{full_name,organization{name}?is_active}?(nickname='jack')/ - uri: /organization{name, count(person?count(participation)<2)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------------------+- | name | count((person?(count(participation)<2))) | -+-------------------------+------------------------------------------+- | Acorn Architecture | 0 | | Lake Shore Apartments | 0 | | Lake Carmen Towers | 0 | | Lake Side Partners, LLC | 1 | | Meyers Construction | 0 | | Meyers Electric | 0 | | Rudgen, Taupe, & Smith | 2 | (7 rows) ----- /organization{name,count((person?(count(participation)<2)))}/ - uri: /organization?count(person?count(participation)<2)>1 status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | smith | Rudgen, Taupe, & Smith | false | | (1 row) ----- /organization?(count((person?(count(participation)<2)))>1)/ - uri: /organization{name,person{array(full_name)}?!license} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------------+- | name | person{array(full_name)}?(!license) | -+-------------------------+-------------------------------------+- | Acorn Architecture | [] | | Lake Shore Apartments | [Tommy O'Mally] | | Lake Carmen Towers | [] | | Lake Side Partners, LLC | [Amy S. Buckworth] | | Meyers Construction | [] | | Meyers Electric | [] | | Rudgen, Taupe, & Smith | [Margret N. Smith] | (7 rows) ----- /organization{name,person{array(full_name)}?(!license)}/ - uri: /organization{name, person{first(full_name),first(license)}?license} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------------------------------------------+- | name | person{first(full_name)}?license | person{first(license)}?license | -+-------------------------+----------------------------------+--------------------------------+- | Acorn Architecture | WATANABE Hideo | CQB421 | | Lake Shore Apartments | | | | Lake Carmen Towers | | | | Lake Side Partners, LLC | David Jones | 953OKG | | Meyers Construction | Mark Thomas Hill | V345FMP | | Meyers Electric | | | | Rudgen, Taupe, & Smith | Jack Taupe | THX138 | (7 rows) ----- /organization{name,person{first(full_name),first(license)}?license}/ - uri: /organization{name, person{last(full_name),last(license)}?license} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------------------------------------------------+- | name | person{last(full_name)}?license | person{last(license)}?license | -+-------------------------+---------------------------------+-------------------------------+- | Acorn Architecture | WATANABE Hideo | CQB421 | | Lake Shore Apartments | | | | Lake Carmen Towers | | | | Lake Side Partners, LLC | David Jones | 953OKG | | Meyers Construction | Jim Meyers | 2GAT138 | | Meyers Electric | | | | Rudgen, Taupe, & Smith | José N. Marteñes | JJZ109 | (7 rows) ----- /organization{name,person{last(full_name),last(license)}?license}/ - uri: /project{sponsor{name^}?is_active,count()}?status='in-progress' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+-----------------------------------+- | sponsor{name}?is_active | count() | -+-------------------------+---------+- | Lake Carmen Towers | 1 | | | 1 | (2 rows) ----- /project{sponsor{name^}?is_active,count()}?(status='in-progress')/ - uri: /organization?exists(project?count(participation.billing_rate>35)>2) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+----------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+------------------------+-----------+-------------+- | lake-apts | Lake Shore Apartments | false | lakeside | | lake-carmen | Lake Carmen Towers | true | lakeside | | smith | Rudgen, Taupe, & Smith | false | | (3 rows) ----- /organization?exists((project?(count((participation.billing_rate>35))>2)))/ - uri: /organization{name,project{count(),max(start_date)}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------------------+- | name | project{count()} | project{max(start_date)} | -+-------------------------+------------------+--------------------------+- | Acorn Architecture | 0 | | | Lake Shore Apartments | 2 | 2004-04-20 | | Lake Carmen Towers | 2 | 2006-11-23 | | Lake Side Partners, LLC | 0 | | | Meyers Construction | 0 | | | Meyers Electric | 0 | | | Rudgen, Taupe, & Smith | 3 | 2006-08-03 | (7 rows) ----- /organization{name,project{count(),max(start_date)}}/ - uri: /organization{org_id,count(person?license)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------+- | org_id | count((person?license)) | -+-------------+-------------------------+- | acorn | 1 | | lake-apts | 0 | | lake-carmen | 0 | | lakeside | 1 | | meyers | 3 | | meyers_elec | 0 | | smith | 2 | (7 rows) ----- /organization{org_id,count((person?license))}/ - uri: /organization{org_id,person{count()}?license} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------+- | org_id | person{count()}?license | -+-------------+-------------------------+- | acorn | 1 | | lake-apts | 0 | | lake-carmen | 0 | | lakeside | 1 | | meyers | 3 | | meyers_elec | 0 | | smith | 2 | (7 rows) ----- /organization{org_id,person{count()}?license}/ - uri: /organization{org_id,project{count()}?status='completed'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------+- | org_id | project{count()}?(status='completed') | -+-------------+---------------------------------------+- | acorn | 0 | | lake-apts | 2 | | lake-carmen | 0 | | lakeside | 0 | | meyers | 0 | | meyers_elec | 0 | | smith | 2 | (7 rows) ----- /organization{org_id,project{count()}?(status='completed')}/ - uri: /organization{org_id,count(project?status='completed')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------+- | org_id | count((project?(status='completed'))) | -+-------------+---------------------------------------+- | acorn | 0 | | lake-apts | 2 | | lake-carmen | 0 | | lakeside | 0 | | meyers | 0 | | meyers_elec | 0 | | smith | 2 | (7 rows) ----- /organization{org_id,count((project?(status='completed')))}/ - uri: /organization{id(),count(person?private_info.tax_ident='E32-3483')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------------------------+- | id() | count((person?(private_info.tax_ident='E32-3483'))) | -+-------------+-----------------------------------------------------+- | acorn | 1 | | lake-apts | 0 | | lake-carmen | 0 | | lakeside | 0 | | meyers | 0 | | meyers_elec | 0 | | smith | 0 | (7 rows) ----- /organization{id(),count((person?(private_info.tax_ident='E32-3483')))}/ - uri: /organization{org_id,project{count()}?count(participation)>2} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------+- | org_id | project{count()}?(count(participation)>2) | -+-------------+-------------------------------------------+- | acorn | 0 | | lake-apts | 2 | | lake-carmen | 1 | | lakeside | 0 | | meyers | 0 | | meyers_elec | 0 | | smith | 3 | (7 rows) ----- /organization{org_id,project{count()}?(count(participation)>2)}/ - uri: /organization{org_id,count(project?count(participation)>2)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------+- | org_id | count((project?(count(participation)>2))) | -+-------------+-------------------------------------------+- | acorn | 0 | | lake-apts | 2 | | lake-carmen | 1 | | lakeside | 0 | | meyers | 0 | | meyers_elec | 0 | | smith | 3 | (7 rows) ----- /organization{org_id,count((project?(count(participation)>2)))}/ - id: frame-tests tests: - uri: /organization{org_id,name} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------+- | org_id | name | -+-------------+-------------------------+- | acorn | Acorn Architecture | | lake-apts | Lake Shore Apartments | | lake-carmen | Lake Carmen Towers | | lakeside | Lake Side Partners, LLC | | meyers | Meyers Construction | | meyers_elec | Meyers Electric | | smith | Rudgen, Taupe, & Smith | (7 rows) ----- /organization{org_id,name}/ - uri: /project{prj_id,status,sponsor.name} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+-------------------------------------------------+- | prj_id | status | sponsor.name | -+----------+-------------+------------------------+- | la-102 | completed | Lake Shore Apartments | | la-334 | completed | Lake Shore Apartments | | lt-711 | planned | Lake Carmen Towers | | lt-802 | in-progress | Lake Carmen Towers | | overhead | in-progress | | | smak | abandoned | Rudgen, Taupe, & Smith | | smbl | completed | Rudgen, Taupe, & Smith | | smen | completed | Rudgen, Taupe, & Smith | (8 rows) ----- /project{prj_id,status,sponsor.name}/ - uri: /person{organization.name,full_name}? private_info.tax_ident~'83'&organization.is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+--------------------------------------+- | organization.name | full_name | -+---------------------+----------------+- | Acorn Architecture | WATANABE Hideo | | Meyers Construction | Jim Meyers | (2 rows) ----- /person{organization.name,full_name}?((private_info.tax_ident~'83')&organization.is_active)/ - uri: /organization{name,count(person)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------+- | name | count(person) | -+-------------------------+---------------+- | Acorn Architecture | 1 | | Lake Shore Apartments | 1 | | Lake Carmen Towers | 0 | | Lake Side Partners, LLC | 2 | | Meyers Construction | 3 | | Meyers Electric | 0 | | Rudgen, Taupe, & Smith | 3 | (7 rows) ----- /organization{name,count(person)}/ - uri: /organization{name,count(person),count(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+----------------------------------------------------------+- | name | count(person) | count(project) | -+-------------------------+---------------+----------------+- | Acorn Architecture | 1 | 0 | | Lake Shore Apartments | 1 | 2 | | Lake Carmen Towers | 0 | 2 | | Lake Side Partners, LLC | 2 | 0 | | Meyers Construction | 3 | 0 | | Meyers Electric | 0 | 0 | | Rudgen, Taupe, & Smith | 3 | 3 | (7 rows) ----- /organization{name,count(person),count(project)}/ - uri: /!project?count(participation)>3/project{status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+-----------------------+- | status | count() | -+-------------+---------+- | in-progress | 1 | | completed | 2 | | abandoned | 1 | (3 rows) ----- /!project?(count(participation)>3)/project{status^,count()}/ - uri: /project{status^,count()}?count(participation)>3 status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+-----------------------+- | status | count() | -+-------------+---------+- | in-progress | 1 | | completed | 2 | | abandoned | 1 | (3 rows) ----- /project{status^,count()}?(count(participation)>3)/ - uri: /project{status^,count(),count(participation)} ?count(participation)>3 status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+----------------------------------------------+- | status | count() | count(participation) | -+-------------+---------+----------------------+- | in-progress | 1 | 4 | | completed | 2 | 9 | | abandoned | 1 | 6 | (3 rows) ----- /project{status^,count(),count(participation)}?(count(participation)>3)/ - uri: /person{full_name, if(exists(participation), sum(participation.billing_rate) div count(participation), null())} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+------------------------------------------------------------------------------------------------------------------+- | full_name | if(exists(participation), (sum(participation.billing_rate) div count(participation)), null()) | -+------------------+-----------------------------------------------------------------------------------------------+- | WATANABE Hideo | 135.0000000000000000 | | Tommy O'Mally | | | Amy S. Buckworth | | | David Jones | | | Mark Thomas Hill | 58.5000000000000000 | | Jack C. Meyers | 57.6428571428571429 | | Jim Meyers | 61.6000000000000000 | | Jack Taupe | | | José N. Marteñes | | | Margret N. Smith | | (10 rows) ----- /person{full_name,if(exists(participation),(sum(participation.billing_rate) div count(participation)),null())}/ - uri: /organization{org_id}?exists(project.status='completed') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------+- | org_id | -+--------------+- | lake-apts | | smith | (2 rows) ----- /organization{org_id}?exists((project.status='completed'))/ - uri: /organization{org_id,count(project.status!='completed')} ?is_active&exists(person) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------+- | org_id | count((project.status!='completed')) | -+--------+--------------------------------------+- | acorn | 0 | | meyers | 0 | (2 rows) ----- /organization{org_id,count((project.status!='completed'))}?(is_active&exists(person))/ - uri: /organization{org_id, count(person.participation.project=project.prj_id)} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: invalid plural expression: the plural space does not span over all of the unit spaces at the position 23: /organization{org_id, count(person.participation.project=project.prj_id)} ^------------------------------------------------- - uri: /organization{name,count(person)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------+- | name | count(person) | -+-------------------------+---------------+- | Acorn Architecture | 1 | | Lake Shore Apartments | 1 | | Lake Carmen Towers | 0 | | Lake Side Partners, LLC | 2 | | Meyers Construction | 3 | | Meyers Electric | 0 | | Rudgen, Taupe, & Smith | 3 | (7 rows) ----- /organization{name,count(person)}/ - uri: /organization{name}?is_active/person{full_name} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 4) | =+============================+= | name : Acorn Architecture | \ / person +------------------+ | full_name | +------------------+ | WATANABE Hideo | (1 row) | organization (2 of 4) | =+============================+= | name : Lake Carmen Towers | | organization (3 of 4) | =+============================+= | name : Meyers Construction | \ / person +------------------+ | full_name | +------------------+ | Mark Thomas Hill | | Jack C. Meyers | | Jim Meyers | (3 rows) | organization (4 of 4) | =+============================+= | name : Meyers Electric | ----- /organization{name}?is_active/person{full_name}/ - uri: /organization{name}?count(project)>count(person) /person{full_name}?exists(participation) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 2) | =+==============================+= | name : Lake Shore Apartments | \ / person +---------------+ | full_name | +---------------+ | Tommy O'Mally | (1 row) | organization (2 of 2) | =+==============================+= | name : Lake Carmen Towers | ----- /organization{name}?(count(project)>count(person))/person{full_name}?exists(participation)/ - uri: /organization{name}?is_active/person{full_name} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 4) | =+============================+= | name : Acorn Architecture | \ / person +------------------+ | full_name | +------------------+ | WATANABE Hideo | (1 row) | organization (2 of 4) | =+============================+= | name : Lake Carmen Towers | | organization (3 of 4) | =+============================+= | name : Meyers Construction | \ / person +------------------+ | full_name | +------------------+ | Mark Thomas Hill | | Jack C. Meyers | | Jim Meyers | (3 rows) | organization (4 of 4) | =+============================+= | name : Meyers Electric | ----- /organization{name}?is_active/person{full_name}/ - id: array-tests tests: - uri: /organization{id(),count(person),array(person),array(person).length()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------------------------------------------+- | id() | count(person) | array(person) | array(person).length() | -+-------------+---------------+----------------------------------------+------------------------+- | acorn | 1 | [acorn.hideo] | 1 | | lake-apts | 1 | [lake-apts.tom] | 1 | | lake-carmen | 0 | [] | 0 | | lakeside | 2 | [lakeside.amy, lakeside.dave] | 2 | | meyers | 3 | [meyers.hill, meyers.jack, meyers.jim] | 3 | | meyers_elec | 0 | [] | 0 | | smith | 3 | [smith.jack, smith.jose, smith.maggy] | 3 | (7 rows) ----- /organization{id(),count(person),array(person),array(person).length()}/ - uri: /organization{id(),array(person),array(person)+array(person)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------------------------------------------------------------------------------------------+- | id() | array(person) | (array(person)+array(person)) | -+-------------+----------------------------------------+------------------------------------------------------------------------------+- | acorn | [acorn.hideo] | [acorn.hideo, acorn.hideo] | | lake-apts | [lake-apts.tom] | [lake-apts.tom, lake-apts.tom] | | lake-carmen | [] | [] | | lakeside | [lakeside.amy, lakeside.dave] | [lakeside.amy, lakeside.dave, lakeside.amy, lakeside.dave] | | meyers | [meyers.hill, meyers.jack, meyers.jim] | [meyers.hill, meyers.jack, meyers.jim, meyers.hill, meyers.jack, meyers.jim] | | meyers_elec | [] | [] | | smith | [smith.jack, smith.jose, smith.maggy] | [smith.jack, smith.jose, smith.maggy, smith.jack, smith.jose, smith.maggy] | (7 rows) ----- /organization{id(),array(person),(array(person)+array(person))}/ - uri: /organization{id(),count(person),boolean(array(person))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------------------------------------------+- | id() | count(person) | boolean(array(person)) | -+-------------+---------------+------------------------+- | acorn | 1 | true | | lake-apts | 1 | true | | lake-carmen | 0 | false | | lakeside | 2 | true | | meyers | 3 | true | | meyers_elec | 0 | false | | smith | 3 | true | (7 rows) ----- /organization{id(),count(person),boolean(array(person))}/ - uri: /organization{id(),array(person),array(person)[0],array(person)[1]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------------------------------------------+- | id() | array(person) | array(person)[0] | array(person)[1] | -+-------------+----------------------------------------+------------------+------------------+- | acorn | [acorn.hideo] | acorn.hideo | | | lake-apts | [lake-apts.tom] | lake-apts.tom | | | lake-carmen | [] | | | | lakeside | [lakeside.amy, lakeside.dave] | lakeside.amy | lakeside.dave | | meyers | [meyers.hill, meyers.jack, meyers.jim] | meyers.hill | meyers.jack | | meyers_elec | [] | | | | smith | [smith.jack, smith.jose, smith.maggy] | smith.jack | smith.jose | (7 rows) ----- /organization{id(),array(person),array(person)[0],array(person)[1]}/ - uri: /organization{id(),array(person)[:],array(person)[1:],array(person)[:2]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------------------------------------------------------------------------------------------------------+- | id() | array(person)[:] | array(person)[1:] | array(person)[:2] | -+-------------+----------------------------------------+---------------------------+-------------------------------+- | acorn | [acorn.hideo] | [] | [acorn.hideo] | | lake-apts | [lake-apts.tom] | [] | [lake-apts.tom] | | lake-carmen | [] | | [] | | lakeside | [lakeside.amy, lakeside.dave] | [lakeside.dave] | [lakeside.amy, lakeside.dave] | | meyers | [meyers.hill, meyers.jack, meyers.jim] | [meyers.jack, meyers.jim] | [meyers.hill, meyers.jack] | | meyers_elec | [] | | [] | | smith | [smith.jack, smith.jose, smith.maggy] | [smith.jose, smith.maggy] | [smith.jack, smith.jose] | (7 rows) ----- /organization{id(),array(person)[:],array(person)[1:],array(person)[:2]}/ - uri: /organization{id(),array(person),array(person)[1:2],array(person)[1:1]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------------------------------------------------------------------------------------+- | id() | array(person) | array(person)[1:2] | array(person)[1:1] | -+-------------+----------------------------------------+--------------------+--------------------+- | acorn | [acorn.hideo] | [] | [] | | lake-apts | [lake-apts.tom] | [] | [] | | lake-carmen | [] | [] | [] | | lakeside | [lakeside.amy, lakeside.dave] | [lakeside.dave] | [] | | meyers | [meyers.hill, meyers.jack, meyers.jim] | [meyers.jack] | [] | | meyers_elec | [] | [] | [] | | smith | [smith.jack, smith.jose, smith.maggy] | [smith.jose] | [] | (7 rows) ----- /organization{id(),array(person),array(person)[1:2],array(person)[1:1]}/ - uri: /organization{id(),array(person),array(1),array(1,2,3)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+----------------------------------------------------------------------------------+- | id() | array(person) | array(1) | array(1, 2, 3) | -+-------------+----------------------------------------+----------+----------------+- | acorn | [acorn.hideo] | [1] | [1, 2, 3] | | lake-apts | [lake-apts.tom] | [1] | [1, 2, 3] | | lake-carmen | [] | [1] | [1, 2, 3] | | lakeside | [lakeside.amy, lakeside.dave] | [1] | [1, 2, 3] | | meyers | [meyers.hill, meyers.jack, meyers.jim] | [1] | [1, 2, 3] | | meyers_elec | [] | [1] | [1, 2, 3] | | smith | [smith.jack, smith.jose, smith.maggy] | [1] | [1, 2, 3] | (7 rows) ----- /organization{id(),array(person),array(1),array(1,2,3)}/ - uri: /organization[meyers]{id(), person{array(full_name)}, array(person.full_name)} /person{id(),full_name} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+===========================================================================+= | id() : meyers | | person{array(full_name)} : [Mark Thomas Hill, Jack C. Meyers, Jim Meyers] | | array(person.full_name) : [Jack C. Meyers, Jim Meyers, Mark Thomas Hill] | \ / person +--------------------------------+ | id() | full_name | +-------------+------------------+ | meyers.hill | Mark Thomas Hill | | meyers.jack | Jack C. Meyers | | meyers.jim | Jim Meyers | (3 rows) ----- /organization[meyers]{id(),person{array(full_name)},array(person.full_name)}/person{id(),full_name}/ - uri: /private_info{ethnicity,ethnicity.length(),ethnicity[0],ethnicity[1]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | private_info | -+----------------------------------------------------------------------+- | ethnicity | ethnicity.length() | ethnicity[0] | ethnicity[1] | -+-------------------+--------------------+--------------+--------------+- | [asian] | 1 | asian | | | [] | 0 | | | | [white] | 1 | white | | | | | | | | [black] | 1 | black | | | [black, hispanic] | 2 | black | hispanic | | [indian] | 1 | indian | | (7 rows) ----- /private_info{ethnicity,ethnicity.length(),ethnicity[0],ethnicity[1]}/ - uri: /op:project?status=any('completed','in-progress') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | prj_id | name | status | sponsor | start_date | description | -+----------+--------------------------------------+-------------+-------------+------------+--------------------------------------------------------------------------------------------------------+- | la-102 | Kitchen Remodel at 102 N. Ocean View | completed | lake-apts | 2004-03-27 | Completely gutting the ancient stuff in this otherwise pretty apartment | | la-334 | Siding / roof at 334 Ocean Blvd | completed | lake-apts | 2004-04-20 | Replace the siding and ancient roofing with vinyl stuff. | | lt-802 | Toaster Re-Do and Roof Leak | in-progress | lake-carmen | 2006-11-23 | Reworking Apt 802 to recover from a Toaster that caught fire. | | overhead | General Management Work | in-progress | | 2003-06-12 | Internal overhead, not attached to a particular client | | smbl | Smith Balcony Expansion | completed | smith | 2005-02-03 | An expansion of the Executive balcony at Rudgen, Taupe and Smith | | smen | Smith Entry and Waiting Room | completed | smith | 2005-08-09 | Restructuring of the entry way and waiting room to handle clients who have complained about the decor. | (6 rows) ----- /op:project?(status=any('completed','in-progress'))/ - uri: /op:project?status!=all('completed','in-progress') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+---------------------------------------------------------------------------------------------------------------------------------------------+- | prj_id | name | status | sponsor | start_date | description | -+--------+---------------------------------+-----------+-------------+------------+-----------------------------------------------------------+- | lt-711 | Updating Fire Escape | planned | lake-carmen | | Bringing the fire-escape up-to-code. No Participants Yet. | | smak | Smith Associate Window and Roof | abandoned | smith | 2006-08-03 | Upgrade Jack's office to have an alcove and a bay window. | (2 rows) ----- /op:project?(status!=all('completed','in-progress'))/ - uri: /op:project?status!=all('planned','abandoned') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | prj_id | name | status | sponsor | start_date | description | -+----------+--------------------------------------+-------------+-------------+------------+--------------------------------------------------------------------------------------------------------+- | la-102 | Kitchen Remodel at 102 N. Ocean View | completed | lake-apts | 2004-03-27 | Completely gutting the ancient stuff in this otherwise pretty apartment | | la-334 | Siding / roof at 334 Ocean Blvd | completed | lake-apts | 2004-04-20 | Replace the siding and ancient roofing with vinyl stuff. | | lt-802 | Toaster Re-Do and Roof Leak | in-progress | lake-carmen | 2006-11-23 | Reworking Apt 802 to recover from a Toaster that caught fire. | | overhead | General Management Work | in-progress | | 2003-06-12 | Internal overhead, not attached to a particular client | | smbl | Smith Balcony Expansion | completed | smith | 2005-02-03 | An expansion of the Executive balcony at Rudgen, Taupe and Smith | | smen | Smith Entry and Waiting Room | completed | smith | 2005-08-09 | Restructuring of the entry way and waiting room to handle clients who have complained about the decor. | (6 rows) ----- /op:project?(status!=all('planned','abandoned'))/ - uri: /op:project?status!=all('planned','abandoned')&sponsor.org_id~'lake' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | prj_id | name | status | sponsor | start_date | description | -+--------+--------------------------------------+-------------+-------------+------------+-------------------------------------------------------------------------+- | la-102 | Kitchen Remodel at 102 N. Ocean View | completed | lake-apts | 2004-03-27 | Completely gutting the ancient stuff in this otherwise pretty apartment | | la-334 | Siding / roof at 334 Ocean Blvd | completed | lake-apts | 2004-04-20 | Replace the siding and ancient roofing with vinyl stuff. | | lt-802 | Toaster Re-Do and Roof Leak | in-progress | lake-carmen | 2006-11-23 | Reworking Apt 802 to recover from a Toaster that caught fire. | (3 rows) ----- /op:project?((status!=all('planned','abandoned'))&(sponsor.org_id~'lake'))/ - uri: /organization{id(),array(person.full_name)[0][:10]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------+- | id() | array(person.full_name)[0][:10] | -+-------------+---------------------------------+- | acorn | WATANABE H | | lake-apts | Tommy O'Ma | | lake-carmen | | | lakeside | Amy S. Buc | | meyers | Jack C. Me | | meyers_elec | | | smith | Jack Taupe | (7 rows) ----- /organization{id(),array(person.full_name)[0][:10]}/ - id: identity-and-join-tests tests: - uri: /op:person status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:person | -+--------------------------------------------------------------+- | org_id | nickname | full_name | license | phone | -+-----------+----------+------------------+---------+----------+- | acorn | hideo | WATANABE Hideo | CQB421 | | | lake-apts | tom | Tommy O'Mally | | | | lakeside | amy | Amy S. Buckworth | | "" | | lakeside | dave | David Jones | 953OKG | "" | | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers | jim | Jim Meyers | 2GAT138 | | | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | | smith | maggy | Margret N. Smith | "" | 555-2368 | (10 rows) ----- /op:person/ - uri: /op:person{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:person | -+------------------------------------------------------------------------------+- | id() | org_id | nickname | full_name | license | phone | -+---------------+-----------+----------+------------------+---------+----------+- | acorn.hideo | acorn | hideo | WATANABE Hideo | CQB421 | | | lake-apts.tom | lake-apts | tom | Tommy O'Mally | | | | lakeside.amy | lakeside | amy | Amy S. Buckworth | | "" | | lakeside.dave | lakeside | dave | David Jones | 953OKG | "" | | meyers.hill | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | meyers.jack | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers.jim | meyers | jim | Jim Meyers | 2GAT138 | | | smith.jack | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith.jose | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | | smith.maggy | smith | maggy | Margret N. Smith | "" | 555-2368 | (10 rows) ----- /op:person{id(),*}/ - uri: /project{id(),sponsor.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+-------------------------+- | id() | sponsor.id() | -+----------+--------------+- | la-102 | lake-apts | | la-334 | lake-apts | | lt-711 | lake-carmen | | lt-802 | lake-carmen | | overhead | | | smak | smith | | smbl | smith | | smen | smith | (8 rows) ----- /project{id(),sponsor.id()}/ - uri: /organization{id(),division_of.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------+- | id() | division_of.id() | -+-------------+------------------+- | acorn | | | lake-apts | lakeside | | lake-carmen | lakeside | | lakeside | | | meyers | | | meyers_elec | meyers | | smith | | (7 rows) ----- /organization{id(),division_of.id()}/ - uri: /participation{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | participation | -+------------------------------------------------------------------+- | id() | project | billing_rate | person | -+------------------------+----------+--------------+---------------+- | la-102.(lake-apts.tom) | la-102 | | lake-apts.tom | | la-102.(lakeside.dave) | la-102 | | lakeside.dave | | la-102.(meyers.hill) | la-102 | 55.00 | meyers.hill | | la-102.(meyers.jack) | la-102 | 69.00 | meyers.jack | | la-102.(meyers.jim) | la-102 | 69.00 | meyers.jim | | la-334.(lake-apts.tom) | la-334 | | lake-apts.tom | | la-334.(lakeside.dave) | la-334 | | lakeside.dave | | la-334.(meyers.jack) | la-334 | 69.00 | meyers.jack | | la-334.(meyers.jim) | la-334 | 69.00 | meyers.jim | | lt-802.(lakeside.amy) | lt-802 | | lakeside.amy | | lt-802.(meyers.hill) | lt-802 | 55.00 | meyers.hill | | lt-802.(meyers.jack) | lt-802 | 69.00 | meyers.jack | | lt-802.(meyers.jim) | lt-802 | 69.00 | meyers.jim | | overhead.(meyers.jack) | overhead | 0.00 | meyers.jack | | smak.(acorn.hideo) | smak | 135.00 | acorn.hideo | | smak.(meyers.hill) | smak | 65.50 | meyers.hill | | smak.(meyers.jack) | smak | 65.50 | meyers.jack | | smak.(meyers.jim) | smak | 35.50 | meyers.jim | | smak.(smith.jack) | smak | | smith.jack | | smak.(smith.maggy) | smak | | smith.maggy | | smbl.(acorn.hideo) | smbl | 135.00 | acorn.hideo | | smbl.(meyers.jack) | smbl | 65.50 | meyers.jack | | smbl.(smith.maggy) | smbl | | smith.maggy | | smen.(meyers.jack) | smen | 65.50 | meyers.jack | | smen.(meyers.jim) | smen | 65.50 | meyers.jim | | smen.(smith.maggy) | smen | | smith.maggy | (26 rows) ----- /participation{id(),*}/ - uri: /participation{id(),_ppl_seq,_ppl_seq.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | participation | -+---------------------------------------------------+- | id() | _ppl_seq | _ppl_seq.id() | -+------------------------+----------+---------------+- | la-102.(lake-apts.tom) | 33 | lake-apts.tom | | la-102.(lakeside.dave) | 31 | lakeside.dave | | la-102.(meyers.hill) | 11 | meyers.hill | | la-102.(meyers.jack) | 10 | meyers.jack | | la-102.(meyers.jim) | 12 | meyers.jim | | la-334.(lake-apts.tom) | 33 | lake-apts.tom | | la-334.(lakeside.dave) | 31 | lakeside.dave | | la-334.(meyers.jack) | 10 | meyers.jack | | la-334.(meyers.jim) | 12 | meyers.jim | | lt-802.(lakeside.amy) | 32 | lakeside.amy | | lt-802.(meyers.hill) | 11 | meyers.hill | | lt-802.(meyers.jack) | 10 | meyers.jack | | lt-802.(meyers.jim) | 12 | meyers.jim | | overhead.(meyers.jack) | 10 | meyers.jack | | smak.(acorn.hideo) | 40 | acorn.hideo | | smak.(meyers.hill) | 11 | meyers.hill | | smak.(meyers.jack) | 10 | meyers.jack | | smak.(meyers.jim) | 12 | meyers.jim | | smak.(smith.jack) | 23 | smith.jack | | smak.(smith.maggy) | 21 | smith.maggy | | smbl.(acorn.hideo) | 40 | acorn.hideo | | smbl.(meyers.jack) | 10 | meyers.jack | | smbl.(smith.maggy) | 21 | smith.maggy | | smen.(meyers.jack) | 10 | meyers.jack | | smen.(meyers.jim) | 12 | meyers.jim | | smen.(smith.maggy) | 21 | smith.maggy | (26 rows) ----- /participation{id(),_ppl_seq,_ppl_seq.id()}/ - uri: /participation{id(),project.id(),person.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | participation | -+-------------------------------------------------------+- | id() | project.id() | person.id() | -+------------------------+--------------+---------------+- | la-102.(lake-apts.tom) | la-102 | lake-apts.tom | | la-102.(lakeside.dave) | la-102 | lakeside.dave | | la-102.(meyers.hill) | la-102 | meyers.hill | | la-102.(meyers.jack) | la-102 | meyers.jack | | la-102.(meyers.jim) | la-102 | meyers.jim | | la-334.(lake-apts.tom) | la-334 | lake-apts.tom | | la-334.(lakeside.dave) | la-334 | lakeside.dave | | la-334.(meyers.jack) | la-334 | meyers.jack | | la-334.(meyers.jim) | la-334 | meyers.jim | | lt-802.(lakeside.amy) | lt-802 | lakeside.amy | | lt-802.(meyers.hill) | lt-802 | meyers.hill | | lt-802.(meyers.jack) | lt-802 | meyers.jack | | lt-802.(meyers.jim) | lt-802 | meyers.jim | | overhead.(meyers.jack) | overhead | meyers.jack | | smak.(acorn.hideo) | smak | acorn.hideo | | smak.(meyers.hill) | smak | meyers.hill | | smak.(meyers.jack) | smak | meyers.jack | | smak.(meyers.jim) | smak | meyers.jim | | smak.(smith.jack) | smak | smith.jack | | smak.(smith.maggy) | smak | smith.maggy | | smbl.(acorn.hideo) | smbl | acorn.hideo | | smbl.(meyers.jack) | smbl | meyers.jack | | smbl.(smith.maggy) | smbl | smith.maggy | | smen.(meyers.jack) | smen | meyers.jack | | smen.(meyers.jim) | smen | meyers.jim | | smen.(smith.maggy) | smen | smith.maggy | (26 rows) ----- /participation{id(),project.id(),person.id()}/ - uri: /worklist{id(),prj_id,item_no.id(),prj_id.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | worklist | -+----------------------------------------------+- | id() | prj_id | item_no.id() | prj_id.id() | -+--------+--------+--------------+-------------+- | smak.3 | smak | smak.3 | smak | | smbl.3 | smbl | smbl.3 | smbl | | smen.3 | smen | smen.3 | smen | (3 rows) ----- /worklist{id(),prj_id,item_no.id(),prj_id.id()}/ - uri: /dependency{id(),of_item_no.id(), on_item_no.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | dependency | -+---------------------------------------------------------+- | id() | of_item_no.id() | on_item_no.id() | -+---------------------+-----------------+-----------------+- | (smbl.34).(smbl.33) | smbl.34 | smbl.33 | | (smbl.35).(smbl.34) | smbl.35 | smbl.34 | | (smbl.35).(smbl.36) | smbl.35 | smbl.36 | (3 rows) ----- /dependency{id(),of_item_no.id(),on_item_no.id()}/ - uri: /dependency{id(),of_prj_id.id(),on_prj_id.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | dependency | -+-------------------------------------------------------+- | id() | of_prj_id.id() | on_prj_id.id() | -+---------------------+----------------+----------------+- | (smbl.34).(smbl.33) | smbl | smbl | | (smbl.35).(smbl.34) | smbl | smbl | | (smbl.35).(smbl.36) | smbl | smbl | (3 rows) ----- /dependency{id(),of_prj_id.id(),on_prj_id.id()}/ - uri: /workitem{id(),prj_id,project.id(),prj_id.id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | workitem | -+-----------------------------------------------+- | id() | prj_id | project.id() | prj_id.id() | -+---------+--------+--------------+-------------+- | smak.1 | smak | smak | smak | | smak.2 | smak | smak | smak | | smak.3 | smak | smak | smak | | smak.4 | smak | smak | smak | | smak.5 | smak | smak | smak | | smbl.1 | smbl | smbl | smbl | | smbl.2 | smbl | smbl | smbl | | smbl.3 | smbl | smbl | smbl | | smbl.4 | smbl | smbl | smbl | | smbl.30 | smbl | smbl | smbl | | smbl.31 | smbl | smbl | smbl | | smbl.32 | smbl | smbl | smbl | | smbl.33 | smbl | smbl | smbl | | smbl.34 | smbl | smbl | smbl | | smbl.35 | smbl | smbl | smbl | | smbl.36 | smbl | smbl | smbl | | smen.1 | smen | smen | smen | | smen.2 | smen | smen | smen | | smen.3 | smen | smen | smen | | smen.4 | smen | smen | smen | (20 rows) ----- /workitem{id(),prj_id,project.id(),prj_id.id()}/ - uri: /project{id(),array(person)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+-----------------------------------------------------------------------------------------+- | id() | array(person) | -+----------+------------------------------------------------------------------------------+- | la-102 | [lake-apts.tom, lakeside.dave, meyers.hill, meyers.jack, meyers.jim] | | la-334 | [lake-apts.tom, lakeside.dave, meyers.jack, meyers.jim] | | lt-711 | [] | | lt-802 | [lakeside.amy, meyers.hill, meyers.jack, meyers.jim] | | overhead | [meyers.jack] | | smak | [acorn.hideo, meyers.hill, meyers.jack, meyers.jim, smith.jack, smith.maggy] | | smbl | [acorn.hideo, meyers.jack, smith.maggy] | | smen | [meyers.jack, meyers.jim, smith.maggy] | (8 rows) ----- /project{id(),array(person)}/ - uri: /person{id(),array(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+----------------------------------------------------------------------+- | id() | array(project) | -+---------------+------------------------------------------------------+- | acorn.hideo | [smak, smbl] | | lake-apts.tom | [la-102, la-334] | | lakeside.amy | [lt-802] | | lakeside.dave | [la-102, la-334] | | meyers.hill | [la-102, lt-802, smak] | | meyers.jack | [la-102, la-334, lt-802, overhead, smak, smbl, smen] | | meyers.jim | [la-102, la-334, lt-802, smak, smen] | | smith.jack | [smak] | | smith.jose | [] | | smith.maggy | [smak, smbl, smen] | (10 rows) ----- /person{id(),array(project)}/ - uri: /person{organization{name+},full_name+} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+--------------------------------------------+- | organization{name} | full_name | -+-------------------------+------------------+- | Acorn Architecture | WATANABE Hideo | | Lake Shore Apartments | Tommy O'Mally | | Lake Side Partners, LLC | Amy S. Buckworth | | Lake Side Partners, LLC | David Jones | | Meyers Construction | Jack C. Meyers | | Meyers Construction | Jim Meyers | | Meyers Construction | Mark Thomas Hill | | Rudgen, Taupe, & Smith | Jack Taupe | | Rudgen, Taupe, & Smith | José N. Marteñes | | Rudgen, Taupe, & Smith | Margret N. Smith | (10 rows) ----- /person{organization{name+},full_name+}/ - uri: /organization{*,is_active hide-} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+-------------------------+-----------+-------------+- | lakeside | Lake Side Partners, LLC | | | | acorn | Acorn Architecture | true | | | lake-carmen | Lake Carmen Towers | true | lakeside | | meyers | Meyers Construction | true | | | meyers_elec | Meyers Electric | true | meyers | | lake-apts | Lake Shore Apartments | false | lakeside | | smith | Rudgen, Taupe, & Smith | false | | (7 rows) ----- /organization{*,(is_active hide)-}/ - uri: /organization{*,is_active hide-}/person{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+=======================================+= | org_id : lakeside | | name : Lake Side Partners, LLC | | is_active : | | division_of : | \ / person +---------------+ | id() | +---------------+ | lakeside.amy | | lakeside.dave | (2 rows) | organization (2 of 7) | =+=======================================+= | org_id : acorn | | name : Acorn Architecture | | is_active : true | | division_of : | \ / person +---------------+ | id() | +---------------+ | acorn.hideo | (1 row) | organization (3 of 7) | =+=======================================+= | org_id : lake-carmen | | name : Lake Carmen Towers | | is_active : true | | division_of : lakeside | | organization (4 of 7) | =+=======================================+= | org_id : meyers | | name : Meyers Construction | | is_active : true | | division_of : | \ / person +---------------+ | id() | +---------------+ | meyers.hill | | meyers.jack | | meyers.jim | (3 rows) | organization (5 of 7) | =+=======================================+= | org_id : meyers_elec | | name : Meyers Electric | | is_active : true | | division_of : meyers | | organization (6 of 7) | =+=======================================+= | org_id : lake-apts | | name : Lake Shore Apartments | | is_active : false | | division_of : lakeside | \ / person +---------------+ | id() | +---------------+ | lake-apts.tom | (1 row) | organization (7 of 7) | =+=======================================+= | org_id : smith | | name : Rudgen, Taupe, & Smith | | is_active : false | | division_of : | \ / person +---------------+ | id() | +---------------+ | smith.jack | | smith.jose | | smith.maggy | (3 rows) ----- /organization{*,(is_active hide)-}/person{id()}/ - uri: /person{organization{name hide+},full_name hide+,*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+--------------------------------------------------------------+- | org_id | nickname | full_name | license | phone | -+-----------+----------+------------------+---------+----------+- | acorn | hideo | WATANABE Hideo | CQB421 | | | lake-apts | tom | Tommy O'Mally | | | | lakeside | amy | Amy S. Buckworth | | "" | | lakeside | dave | David Jones | 953OKG | "" | | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers | jim | Jim Meyers | 2GAT138 | | | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | | smith | maggy | Margret N. Smith | "" | 555-2368 | (10 rows) ----- /person{organization{(name hide)+},(full_name hide)+,*}/ - uri: /person{id(),({org_id-,nickname-}) hide-} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+---------------+- | id() | -+---------------+- | acorn.hideo | | lake-apts.tom | | lakeside.amy | | lakeside.dave | | meyers.hill | | meyers.jack | | meyers.jim | | smith.jack | | smith.jose | | smith.maggy | (10 rows) ----- /person{id(),({org_id-,nickname-} hide)-}/ - id: comparison-tests tests: - uri: /op:organization?is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+---------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lake-carmen | Lake Carmen Towers | true | lakeside | | meyers | Meyers Construction | true | | | meyers_elec | Meyers Electric | true | meyers | (4 rows) ----- /op:organization?is_active/ - uri: /op:organization?!is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-----------+------------------------+-----------+-------------+- | lake-apts | Lake Shore Apartments | false | lakeside | | smith | Rudgen, Taupe, & Smith | false | | (2 rows) ----- /op:organization?(!is_active)/ - uri: /op:organization?is_active==null() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------------------------------------------+- | org_id | name | is_active | division_of | -+----------+-------------------------+-----------+-------------+- | lakeside | Lake Side Partners, LLC | | | (1 row) ----- /op:organization?(is_active==null())/ - uri: /op:organization?is_active!==true() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+---------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-----------+-------------------------+-----------+-------------+- | lake-apts | Lake Shore Apartments | false | lakeside | | lakeside | Lake Side Partners, LLC | | | | smith | Rudgen, Taupe, & Smith | false | | (3 rows) ----- /op:organization?(is_active!==true())/ - uri: /op:organization?division_of status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+---------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+-----------------------+-----------+-------------+- | lake-apts | Lake Shore Apartments | false | lakeside | | lake-carmen | Lake Carmen Towers | true | lakeside | | meyers_elec | Meyers Electric | true | meyers | (3 rows) ----- /op:organization?division_of/ - uri: /op:organization?division_of='lakeside' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+---------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+-----------------------+-----------+-------------+- | lake-apts | Lake Shore Apartments | false | lakeside | | lake-carmen | Lake Carmen Towers | true | lakeside | (2 rows) ----- /op:organization?(division_of='lakeside')/ - uri: /op:organization?!division_of status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------------------------------------------+- | org_id | name | is_active | division_of | -+----------+-------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lakeside | Lake Side Partners, LLC | | | | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (4 rows) ----- /op:organization?(!division_of)/ - uri: /ws:workitem?part_of status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ws:workitem | -+-----------------------------------------------------------------------------------------------+- | prj_id | item_no | title | part_of | subclass | status | version | -+--------+---------+-------------------------------+---------+----------+-------------+---------+- | smbl | 30 | Standing Planning Meeting | 3 | meeting | done | 1 | | smbl | 31 | Remove Tree by Balcony | 3 | | done | 1 | | smbl | 32 | Complaint about Removed Tree | 3 | issue | in-progress | 1 | | smbl | 33 | Order Wood for Balcony | 3 | | done | 1 | | smbl | 34 | Construct Balcony | 3 | | done | 1 | | smbl | 35 | Build Door to Balcony | 3 | | done | 1 | | smbl | 36 | Complaint about Door Position | 3 | issue | abandoned | 1 | (7 rows) ----- /ws:workitem?part_of/ - uri: /ws:workitem?!part_of status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ws:workitem | -+-----------------------------------------------------------------------------------------------------------------+- | prj_id | item_no | title | part_of | subclass | status | version | -+--------+---------+-------------------------------------------------+---------+----------+-------------+---------+- | smak | 1 | Preliminary Investigation of Bay Window Need | | | done | 1 | | smak | 2 | Meeting About of Bay Window Need | | meeting | done | 1 | | smak | 3 | Deliverables for Bay Window Need | | | abandoned | 1 | | smak | 4 | Complaint about Bay Window | | issue | in-progress | 1 | | smak | 5 | Bay Window Planning Meeting | | meeting | abandoned | 1 | | smbl | 1 | Preliminary Investigation of Requirements | | | done | 1 | | smbl | 2 | Meeting About of Balcony Requirements | | meeting | done | 1 | | smbl | 3 | Deliverables for Balcony Requirements | | | done | 1 | | smbl | 4 | Complaint about Balcony | | issue | in-progress | 1 | | smen | 1 | Preliminary Investigation of Entry Requirements | | | done | 1 | | smen | 2 | Meeting About of Entry Requirements | | meeting | done | 1 | | smen | 3 | Deliverables for Entry Requirements | | | done | 1 | | smen | 4 | Complaint about Entry | | issue | planned | 1 | (13 rows) ----- /ws:workitem?(!part_of)/ - uri: /op:person?full_name~'jack' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:person | -+---------------------------------------------------------+- | org_id | nickname | full_name | license | phone | -+--------+----------+----------------+---------+----------+- | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | smith | jack | Jack Taupe | THX138 | 555-4386 | (2 rows) ----- /op:person?(full_name~'jack')/ - uri: /op:organization?name~~'acorn' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 (no rows) ----- /op:organization?(name~~'acorn')/ - uri: /op:organization?name~~'Acorn' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+--------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | (1 row) ----- /op:organization?(name~~'Acorn')/ - uri: /op:project?sponsor.org_id~'lake' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | prj_id | name | status | sponsor | start_date | description | -+--------+--------------------------------------+-------------+-------------+------------+-------------------------------------------------------------------------+- | la-102 | Kitchen Remodel at 102 N. Ocean View | completed | lake-apts | 2004-03-27 | Completely gutting the ancient stuff in this otherwise pretty apartment | | la-334 | Siding / roof at 334 Ocean Blvd | completed | lake-apts | 2004-04-20 | Replace the siding and ancient roofing with vinyl stuff. | | lt-711 | Updating Fire Escape | planned | lake-carmen | | Bringing the fire-escape up-to-code. No Participants Yet. | | lt-802 | Toaster Re-Do and Roof Leak | in-progress | lake-carmen | 2006-11-23 | Reworking Apt 802 to recover from a Toaster that caught fire. | (4 rows) ----- /op:project?(sponsor.org_id~'lake')/ - id: wild-identifier-tests tests: - uri: /op:organization{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-------------------------------------------------------------------------------+- | id() | org_id | name | is_active | division_of | -+-------------+-------------+-------------------------+-----------+-------------+- | acorn | acorn | Acorn Architecture | true | | | lake-apts | lake-apts | Lake Shore Apartments | false | lakeside | | lake-carmen | lake-carmen | Lake Carmen Towers | true | lakeside | | lakeside | lakeside | Lake Side Partners, LLC | | | | meyers | meyers | Meyers Construction | true | | | meyers_elec | meyers_elec | Meyers Electric | true | meyers | | smith | smith | Rudgen, Taupe, & Smith | false | | (7 rows) ----- /op:organization{id(),*}/ - uri: /op:person{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:person | -+------------------------------------------------------------------------------+- | id() | org_id | nickname | full_name | license | phone | -+---------------+-----------+----------+------------------+---------+----------+- | acorn.hideo | acorn | hideo | WATANABE Hideo | CQB421 | | | lake-apts.tom | lake-apts | tom | Tommy O'Mally | | | | lakeside.amy | lakeside | amy | Amy S. Buckworth | | "" | | lakeside.dave | lakeside | dave | David Jones | 953OKG | "" | | meyers.hill | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | meyers.jack | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers.jim | meyers | jim | Jim Meyers | 2GAT138 | | | smith.jack | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith.jose | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | | smith.maggy | smith | maggy | Margret N. Smith | "" | 555-2368 | (10 rows) ----- /op:person{id(),*}/ - uri: /op:project{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | id() | prj_id | name | status | sponsor | start_date | description | -+----------+----------+--------------------------------------+-------------+-------------+------------+--------------------------------------------------------------------------------------------------------+- | la-102 | la-102 | Kitchen Remodel at 102 N. Ocean View | completed | lake-apts | 2004-03-27 | Completely gutting the ancient stuff in this otherwise pretty apartment | | la-334 | la-334 | Siding / roof at 334 Ocean Blvd | completed | lake-apts | 2004-04-20 | Replace the siding and ancient roofing with vinyl stuff. | | lt-711 | lt-711 | Updating Fire Escape | planned | lake-carmen | | Bringing the fire-escape up-to-code. No Participants Yet. | | lt-802 | lt-802 | Toaster Re-Do and Roof Leak | in-progress | lake-carmen | 2006-11-23 | Reworking Apt 802 to recover from a Toaster that caught fire. | | overhead | overhead | General Management Work | in-progress | | 2003-06-12 | Internal overhead, not attached to a particular client | | smak | smak | Smith Associate Window and Roof | abandoned | smith | 2006-08-03 | Upgrade Jack's office to have an alcove and a bay window. | | smbl | smbl | Smith Balcony Expansion | completed | smith | 2005-02-03 | An expansion of the Executive balcony at Rudgen, Taupe and Smith | | smen | smen | Smith Entry and Waiting Room | completed | smith | 2005-08-09 | Restructuring of the entry way and waiting room to handle clients who have complained about the decor. | (8 rows) ----- /op:project{id(),*}/ - uri: /op:participation{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:participation | -+------------------------------------------------------------------+- | id() | project | billing_rate | person | -+------------------------+----------+--------------+---------------+- | la-102.(lake-apts.tom) | la-102 | | lake-apts.tom | | la-102.(lakeside.dave) | la-102 | | lakeside.dave | | la-102.(meyers.hill) | la-102 | 55.00 | meyers.hill | | la-102.(meyers.jack) | la-102 | 69.00 | meyers.jack | | la-102.(meyers.jim) | la-102 | 69.00 | meyers.jim | | la-334.(lake-apts.tom) | la-334 | | lake-apts.tom | | la-334.(lakeside.dave) | la-334 | | lakeside.dave | | la-334.(meyers.jack) | la-334 | 69.00 | meyers.jack | | la-334.(meyers.jim) | la-334 | 69.00 | meyers.jim | | lt-802.(lakeside.amy) | lt-802 | | lakeside.amy | | lt-802.(meyers.hill) | lt-802 | 55.00 | meyers.hill | | lt-802.(meyers.jack) | lt-802 | 69.00 | meyers.jack | | lt-802.(meyers.jim) | lt-802 | 69.00 | meyers.jim | | overhead.(meyers.jack) | overhead | 0.00 | meyers.jack | | smak.(acorn.hideo) | smak | 135.00 | acorn.hideo | | smak.(meyers.hill) | smak | 65.50 | meyers.hill | | smak.(meyers.jack) | smak | 65.50 | meyers.jack | | smak.(meyers.jim) | smak | 35.50 | meyers.jim | | smak.(smith.jack) | smak | | smith.jack | | smak.(smith.maggy) | smak | | smith.maggy | | smbl.(acorn.hideo) | smbl | 135.00 | acorn.hideo | | smbl.(meyers.jack) | smbl | 65.50 | meyers.jack | | smbl.(smith.maggy) | smbl | | smith.maggy | | smen.(meyers.jack) | smen | 65.50 | meyers.jack | | smen.(meyers.jim) | smen | 65.50 | meyers.jim | | smen.(smith.maggy) | smen | | smith.maggy | (26 rows) ----- /op:participation{id(),*}/ - uri: /hr:private_info{id(),person,tax_ident} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | hr:private_info | -+-----------------------------------------+- | id() | person | tax_ident | -+-------------+-------------+-------------+- | acorn.hideo | acorn.hideo | E32-3483 | | meyers.hill | meyers.hill | 456-27-7645 | | meyers.jack | meyers.jack | 222-22-1492 | | meyers.jim | meyers.jim | 983-71-8458 | | smith.jack | smith.jack | 651-97-2682 | | smith.jose | smith.jose | 725-23-8646 | | smith.maggy | smith.maggy | 826-44-2325 | (7 rows) ----- /hr:private_info{id(),person,tax_ident}/ - uri: /ws:workitem{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ws:workitem | -+---------------------------------------------------------------------------------------------------------------------------+- | id() | prj_id | item_no | title | part_of | subclass | status | version | -+---------+--------+---------+-------------------------------------------------+---------+----------+-------------+---------+- | smak.1 | smak | 1 | Preliminary Investigation of Bay Window Need | | | done | 1 | | smak.2 | smak | 2 | Meeting About of Bay Window Need | | meeting | done | 1 | | smak.3 | smak | 3 | Deliverables for Bay Window Need | | | abandoned | 1 | | smak.4 | smak | 4 | Complaint about Bay Window | | issue | in-progress | 1 | | smak.5 | smak | 5 | Bay Window Planning Meeting | | meeting | abandoned | 1 | | smbl.1 | smbl | 1 | Preliminary Investigation of Requirements | | | done | 1 | | smbl.2 | smbl | 2 | Meeting About of Balcony Requirements | | meeting | done | 1 | | smbl.3 | smbl | 3 | Deliverables for Balcony Requirements | | | done | 1 | | smbl.4 | smbl | 4 | Complaint about Balcony | | issue | in-progress | 1 | | smbl.30 | smbl | 30 | Standing Planning Meeting | 3 | meeting | done | 1 | | smbl.31 | smbl | 31 | Remove Tree by Balcony | 3 | | done | 1 | | smbl.32 | smbl | 32 | Complaint about Removed Tree | 3 | issue | in-progress | 1 | | smbl.33 | smbl | 33 | Order Wood for Balcony | 3 | | done | 1 | | smbl.34 | smbl | 34 | Construct Balcony | 3 | | done | 1 | | smbl.35 | smbl | 35 | Build Door to Balcony | 3 | | done | 1 | | smbl.36 | smbl | 36 | Complaint about Door Position | 3 | issue | abandoned | 1 | | smen.1 | smen | 1 | Preliminary Investigation of Entry Requirements | | | done | 1 | | smen.2 | smen | 2 | Meeting About of Entry Requirements | | meeting | done | 1 | | smen.3 | smen | 3 | Deliverables for Entry Requirements | | | done | 1 | | smen.4 | smen | 4 | Complaint about Entry | | issue | planned | 1 | (20 rows) ----- /ws:workitem{id(),*}/ - uri: /ws:worklist{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ws:worklist | -+-----------------------------------------------------------------------------------------------------------+- | id() | prj_id | item_no | overview | assigned_to | last_updated | -+--------+--------+---------+------------------------------------+-------------+----------------------------+- | smak.3 | smak | 3 | Work Plan for Bay Window Need | 11 | 2006-05-02 10:51:05.590000 | | smbl.3 | smbl | 3 | Work Plan for Balcony Requirements | 10 | 2005-10-23 12:29:12.290000 | | smen.3 | smen | 3 | Work Plan for Entry Requirements | 10 | 2006-03-12 15:33:35.340000 | (3 rows) ----- /ws:worklist{id(),*}/ - uri: /wsx:issue{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | wsx:issue | -+------------------------------------------+- | id() | prj_id | item_no | reported_by | -+---------+--------+---------+-------------+- | smak.4 | smak | 4 | 22 | | smbl.4 | smbl | 4 | 21 | | smbl.32 | smbl | 32 | 21 | | smbl.36 | smbl | 36 | 23 | | smen.4 | smen | 4 | 22 | (5 rows) ----- /wsx:issue{id(),*}/ - uri: /wsx:meeting{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | wsx:meeting | -+---------------------------------------------------------------------------------+- | id() | prj_id | item_no | meeting_seq | starts_at | duration | -+---------+--------+---------+-------------+---------------------------+----------+- | smak.2 | smak | 2 | 4 | 2007-02-28 12:00:00-08:00 | 02:00:00 | | smak.5 | smak | 5 | 5 | 2006-09-01 09:00:00-08:00 | 01:00:00 | | smbl.2 | smbl | 2 | 1 | 2005-12-10 10:30:00-08:00 | 01:30:00 | | smbl.30 | smbl | 30 | 2 | 2005-12-15 08:00:00-08:00 | 00:30:00 | | smen.2 | smen | 2 | 3 | 2006-05-01 05:00:00-08:00 | 01:00:00 | (5 rows) ----- /wsx:meeting{id(),*}/ - uri: /wsx:meeting_topic{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | wsx:meeting_topic | -+----------------------------------------------------------------------------+- | id() | meeting_seq | topic_no | topic_text | -+-----------+-------------+----------+---------------------------------------+- | smbl.2.1 | 1 | 1 | Introductions | | smbl.2.2 | 1 | 2 | Discuss Balcony Needs | | smbl.2.3 | 1 | 3 | Brainstorm Provisional Plan | | smbl.2.4 | 1 | 4 | Open Topic | | smbl.2.5 | 1 | 5 | Conclusions | | smbl.30.1 | 2 | 1 | Review Last Week's Progress | | smbl.30.2 | 2 | 2 | Discuss New Concerns and Requirements | | smbl.30.3 | 2 | 3 | Wrap-Up and Minutes | (8 rows) ----- /wsx:meeting_topic{id(),*}/ - uri: /wsx:standing_meeting{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | wsx:standing_meeting | -+-----------------------------------------+- | id() | meeting_seq | repeat_interval | -+---------+-------------+-----------------+- | smak.5 | 5 | 30 | | smbl.30 | 2 | 7 | (2 rows) ----- /wsx:standing_meeting{id(),*}/ - uri: /tb:invoice{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | tb:invoice | -+------------------------------------------------------+- | id() | inv_no | org_id | billing_date | total_amount | -+------+--------+--------+--------------+--------------+- | 1 | 1 | smith | 2004-12-15 | 1257.00 | | 2 | 2 | smith | 2005-02-15 | 7401.00 | | 3 | 3 | smith | 2005-09-01 | 4843.00 | | 4 | 4 | smith | 2006-09-01 | 1500.00 | (4 rows) ----- /tb:invoice{id(),*}/ - uri: /tb:lineitem{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | tb:lineitem | -+------------------------------------------------------------------------+- | id() | inv_no | line_no | line_text | amount | -+------+--------+---------+------------------------------------+---------+- | 1.1 | 1 | 1 | Architectural Design of Balcony | 550.00 | | 1.2 | 1 | 2 | Organizational Meetings | 350.00 | | 1.3 | 1 | 3 | Materials | 357.00 | | 2.1 | 2 | 1 | Architectural Adjustments | 350.00 | | 2.2 | 2 | 2 | Organizational Meetings, Oversight | 490.00 | | 2.3 | 2 | 3 | Purchasing and Materials | 1256.00 | | 2.4 | 2 | 4 | Tree Removal | 435.00 | | 2.5 | 2 | 5 | Labor | 3620.00 | | 2.6 | 2 | 6 | Licensing and Building Permit | 1250.00 | (9 rows) ----- /tb:lineitem{id(),*}/ - uri: /ws:dependency{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ws:dependency | -+-----------------------------------------------------------------------+- | id() | of_prj_id | of_item_no | on_prj_id | on_item_no | -+---------------------+-----------+------------+-----------+------------+- | (smbl.34).(smbl.33) | smbl | 34 | smbl | 33 | | (smbl.35).(smbl.34) | smbl | 35 | smbl | 34 | | (smbl.35).(smbl.36) | smbl | 35 | smbl | 36 | (3 rows) ----- /ws:dependency{id(),*}/ - uri: /tb:timeslip{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | tb:timeslip | -+-----------------------------------------------------------------------------------------------------------------------------------------+- | id() | project | person | slip_no | inv_no | line_no | hours | description | item_no | -+--------------------------+----------+--------+---------+--------+---------+-------+-------------------------------------------+---------+- | overhead.(meyers.jack).1 | overhead | 10 | 1 | | | 3.00 | Non-Billable Management Overhead | | | smbl.(acorn.hideo).1 | smbl | 40 | 1 | 1 | 1 | 11.00 | Worked on layout of balcony | | | smbl.(acorn.hideo).2 | smbl | 40 | 2 | 1 | 2 | 2.00 | Walk-Through of BluePrint | | | smbl.(meyers.jack).1 | smbl | 10 | 1 | 1 | 1 | 3.00 | Review of design and materials evaluation | | | smbl.(meyers.jack).2 | smbl | 10 | 2 | 1 | 2 | 7.00 | Organizational Meetings | | (5 rows) ----- /tb:timeslip{id(),*}/ - uri: /hr:private_info{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | hr:private_info | -+-----------------------------------------------------------------------------------------------------------------------------------+- | id() | tax_ident | ethnicity | address | person | -+-------------+-------------+-------------------+---------------------------------------------------------------------+-------------+- | acorn.hideo | E32-3483 | [asian] | {~, {~, ~, ~}, 38234} | acorn.hideo | | meyers.hill | 456-27-7645 | [] | {~, {~, ~, ~}, ~} | meyers.hill | | meyers.jack | 222-22-1492 | [white] | {[1 Rockway Park Dr., Apt #2], {Santa Monica, CA, USA}, 03884-0394} | meyers.jack | | meyers.jim | 983-71-8458 | | {~, {Roanoke, VA, USA}, 38234} | meyers.jim | | smith.jack | 651-97-2682 | [black] | {[34 Beltway Ave.], {Santa Monica, CA, USA}, 03884-0394} | smith.jack | | smith.jose | 725-23-8646 | [black, hispanic] | {~, {~, ~, ~}, ~} | smith.jose | | smith.maggy | 826-44-2325 | [indian] | {[], {~, ~, ~}, 03995-3434} | smith.maggy | (7 rows) ----- /hr:private_info{id(),*}/ - id: variable-tests tests: - uri: /{2+2,(2+2) as four,four+2,cos(pi()*four)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .......................................... | -+--------------------------------------------+- | (2+2) | four | (four+2) | cos((pi()*four)) | -+-------+------+----------+------------------+- | 4 | 4 | 6 | 1.0 | (1 row) ----- /{(2+2),((2+2) as four),(four+2),cos((pi()*four))}/ - uri: /person{pi{tax_ident as ti,ethnicity as e}}?(private_info as pi) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+---------------------------------+- | pi{ti} | pi{e} | -+-------------+-------------------+- | E32-3483 | [asian] | | 456-27-7645 | [] | | 222-22-1492 | [white] | | 983-71-8458 | | | 651-97-2682 | [black] | | 725-23-8646 | [black, hispanic] | | 826-44-2325 | [indian] | (7 rows) ----- /person{pi{(tax_ident as ti),(ethnicity as e)}}?(private_info as pi)/ - uri: /person{pi,pi.tax_ident,pi.ethnicity}?(private_info as pi) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+------------------------------------------------+- | pi | pi.tax_ident | pi.ethnicity | -+-------------+--------------+-------------------+- | acorn.hideo | E32-3483 | [asian] | | meyers.hill | 456-27-7645 | [] | | meyers.jack | 222-22-1492 | [white] | | meyers.jim | 983-71-8458 | | | smith.jack | 651-97-2682 | [black] | | smith.jose | 725-23-8646 | [black, hispanic] | | smith.maggy | 826-44-2325 | [indian] | (7 rows) ----- /person{pi,pi.tax_ident,pi.ethnicity}?(private_info as pi)/ - uri: /{1 as foo,2 as foo} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid reference: duplicate alias at the position 17: /{1 as foo,2 as foo} ^-- - uri: /{foo,2 as foo} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | unknown object id: perspective "htsql_regress":"owner" has no choices for foo; try one of is_it_weird_, f_u_n:issue, types, weird_identifiers, private_info, organization, participation, person, project, invoice, lineitem, timeslip, test_т, таблица, dependency, workitem, worklist, wsx:issue, meeting, meeting_topic, standing_meeting at the position 3: /{foo,2 as foo} ^-- - uri: /{1 as foo}/{2 as foo} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid reference: duplicate alias at the position 19: /{1 as foo}/{2 as foo} ^-- - uri: /organization{id(),count(person) as "# People"} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------------+- | id() | # People | -+-------------+----------+- | acorn | 1 | | lake-apts | 1 | | lake-carmen | 0 | | lakeside | 2 | | meyers | 3 | | meyers_elec | 0 | | smith | 3 | (7 rows) ----- /organization{id(),(count(person) as "# People")}/ - uri: /{(4 div 3) as div} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ... | -+-----+- | div | -+-----+- | 1 | (1 row) ----- /{((4 div 3) as div)}/ - uri: /organization{org_id}/*person{id()}/*project{id()}?sponsor=up(2).org_id status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 2) | =+============================+= | org_id : lake-apts | \ / person (1 of 1) +======================+ | id() : lake-apts.tom | \ / project +---------+ | id() | +---------+ | la-102 | | la-334 | (2 rows) | organization (2 of 2) | =+============================+= | org_id : smith | \ / person (1 of 2) +======================+ | id() : smith.jack | \ / project +---------+ | id() | +---------+ | smak | (1 row) person (2 of 2) +======================+ | id() : smith.maggy | \ / project +---------+ | id() | +---------+ | smak | | smbl | | smen | (3 rows) ----- /organization{org_id}/*person{id()}/*project{id()}?(sponsor=up(2).org_id)/ - id: locator-tests tests: - uri: /op:organization[meyers] status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /op:organization[meyers]/ - uri: /op:organization[meyers]{id(),name} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+------------------------------+- | id() | name | -+--------+---------------------+- | meyers | Meyers Construction | (1 row) ----- /op:organization[meyers]{id(),name}/ - uri: /organization[meyers]{}/person status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+=================================================================+= \ / person +-----------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +--------+----------+------------------+---------+----------+ | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers | jim | Jim Meyers | 2GAT138 | | (3 rows) ----- /organization[meyers]{}/person/ - uri: /person[smith.*]{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-------------+- | id() | -+-------------+- | smith.jack | | smith.jose | | smith.maggy | (3 rows) ----- /person[smith.*]{id()}/ - uri: /participation[*.(meyers.*)]{id(),*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | participation | -+----------------------------------------------------------------+- | id() | project | billing_rate | person | -+------------------------+----------+--------------+-------------+- | la-102.(meyers.hill) | la-102 | 55.00 | meyers.hill | | la-102.(meyers.jack) | la-102 | 69.00 | meyers.jack | | la-102.(meyers.jim) | la-102 | 69.00 | meyers.jim | | la-334.(meyers.jack) | la-334 | 69.00 | meyers.jack | | la-334.(meyers.jim) | la-334 | 69.00 | meyers.jim | | lt-802.(meyers.hill) | lt-802 | 55.00 | meyers.hill | | lt-802.(meyers.jack) | lt-802 | 69.00 | meyers.jack | | lt-802.(meyers.jim) | lt-802 | 69.00 | meyers.jim | | overhead.(meyers.jack) | overhead | 0.00 | meyers.jack | | smak.(meyers.hill) | smak | 65.50 | meyers.hill | | smak.(meyers.jack) | smak | 65.50 | meyers.jack | | smak.(meyers.jim) | smak | 35.50 | meyers.jim | | smbl.(meyers.jack) | smbl | 65.50 | meyers.jack | | smen.(meyers.jack) | smen | 65.50 | meyers.jack | | smen.(meyers.jim) | smen | 65.50 | meyers.jim | (15 rows) ----- /participation[*.[meyers.*]]{id(),*}/ - uri: /person[smith.*]{id(),full_name,private_info.ethnicity} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+---------------------------------------------------------+- | id() | full_name | private_info.ethnicity | -+-------------+------------------+------------------------+- | smith.jack | Jack Taupe | [black] | | smith.jose | José N. Marteñes | [black, hispanic] | | smith.maggy | Margret N. Smith | [indian] | (3 rows) ----- /person[smith.*]{id(),full_name,private_info.ethnicity}/ - uri: /op:organization{id(),name}[meyers] status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid syntax: expected END[], but found SYMBOL['['] at the position 28: /op:organization{id(),name}[meyers] ^ - id: aggregate-tests tests: - uri: /op:project{id(),count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+---------------------------------+- | id() | count(participation) | -+----------+----------------------+- | la-102 | 5 | | la-334 | 4 | | lt-711 | 0 | | lt-802 | 4 | | overhead | 1 | | smak | 6 | | smbl | 3 | | smen | 3 | (8 rows) ----- /op:project{id(),count(participation)}/ - uri: /op:project{id(),count(participation)}?exists(participation) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+---------------------------------+- | id() | count(participation) | -+----------+----------------------+- | la-102 | 5 | | la-334 | 4 | | lt-802 | 4 | | overhead | 1 | | smak | 6 | | smbl | 3 | | smen | 3 | (7 rows) ----- /op:project{id(),count(participation)}?exists(participation)/ - uri: /op:project{id(),count(participation)}?!exists(participation) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+-------------------------------+- | id() | count(participation) | -+--------+----------------------+- | lt-711 | 0 | (1 row) ----- /op:project{id(),count(participation)}?(!exists(participation))/ - uri: /op:project{id(),count(participation)}?*participation status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+---------------------------------+- | id() | count(participation) | -+----------+----------------------+- | la-102 | 5 | | la-334 | 4 | | lt-802 | 4 | | overhead | 1 | | smak | 6 | | smbl | 3 | | smen | 3 | (7 rows) ----- /op:project{id(),count(participation)}?(*participation)/ - uri: /op:project{id(),count(participation)}?!*participation status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+-------------------------------+- | id() | count(participation) | -+--------+----------------------+- | lt-711 | 0 | (1 row) ----- /op:project{id(),count(participation)}?(!(*participation))/ - uri: /op:organization{id(),count(person),count(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | acorn | 1 | 0 | | lake-apts | 1 | 2 | | lake-carmen | 0 | 2 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | meyers_elec | 0 | 0 | | smith | 3 | 3 | (7 rows) ----- /op:organization{id(),count(person),count(project)}/ - uri: /op:organization{id(),count(person),count(project)}?exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | lake-apts | 1 | 2 | | lake-carmen | 0 | 2 | | smith | 3 | 3 | (3 rows) ----- /op:organization{id(),count(person),count(project)}?exists(project)/ - uri: /op:organization{id(),count(person),count(project)}?exists(person) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------------------------+- | id() | count(person) | count(project) | -+-----------+---------------+----------------+- | acorn | 1 | 0 | | lake-apts | 1 | 2 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | smith | 3 | 3 | (5 rows) ----- /op:organization{id(),count(person),count(project)}?exists(person)/ - uri: /op:organization{id(),count(person),count(project)} ?exists(person)&exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------------------------+- | id() | count(person) | count(project) | -+-----------+---------------+----------------+- | lake-apts | 1 | 2 | | smith | 3 | 3 | (2 rows) ----- /op:organization{id(),count(person),count(project)}?(exists(person)&exists(project))/ - uri: /op:organization{id(),count(person),count(project)} ?exists(person)|exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | acorn | 1 | 0 | | lake-apts | 1 | 2 | | lake-carmen | 0 | 2 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | smith | 3 | 3 | (6 rows) ----- /op:organization{id(),count(person),count(project)}?(exists(person)|exists(project))/ - uri: /op:organization{id(),count(person),count(project)}?!exists(person) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | lake-carmen | 0 | 2 | | meyers_elec | 0 | 0 | (2 rows) ----- /op:organization{id(),count(person),count(project)}?(!exists(person))/ - uri: /op:organization{id(),count(person),count(project)}?!exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | acorn | 1 | 0 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | meyers_elec | 0 | 0 | (4 rows) ----- /op:organization{id(),count(person),count(project)}?(!exists(project))/ - uri: /op:organization{id(),count(person),count(project)} ?!exists(person)&!exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | meyers_elec | 0 | 0 | (1 row) ----- /op:organization{id(),count(person),count(project)}?((!exists(person))&(!exists(project)))/ - uri: /op:organization{id(),count(person),count(project)} ?!exists(person)|!exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | acorn | 1 | 0 | | lake-carmen | 0 | 2 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | meyers_elec | 0 | 0 | (5 rows) ----- /op:organization{id(),count(person),count(project)}?((!exists(person))|(!exists(project)))/ - uri: /op:organization{id(),count(person),count(project)} ?exists(person)|!exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | acorn | 1 | 0 | | lake-apts | 1 | 2 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | meyers_elec | 0 | 0 | | smith | 3 | 3 | (6 rows) ----- /op:organization{id(),count(person),count(project)}?(exists(person)|(!exists(project)))/ - uri: /op:organization{id(),count(person),count(project)} ?!exists(person)|exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | lake-apts | 1 | 2 | | lake-carmen | 0 | 2 | | meyers_elec | 0 | 0 | | smith | 3 | 3 | (4 rows) ----- /op:organization{id(),count(person),count(project)}?((!exists(person))|exists(project))/ - uri: /op:organization{id(),count(person),count(project)} ?!exists(person)&exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | lake-carmen | 0 | 2 | (1 row) ----- /op:organization{id(),count(person),count(project)}?((!exists(person))&exists(project))/ - uri: /op:organization{id(),count(person),count(project)} ?exists(person)&!exists(project) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-------------------------------------------+- | id() | count(person) | count(project) | -+----------+---------------+----------------+- | acorn | 1 | 0 | | lakeside | 2 | 0 | | meyers | 3 | 0 | (3 rows) ----- /op:organization{id(),count(person),count(project)}?(exists(person)&(!exists(project)))/ - uri: /person{id()}?exists(project.id()='smak') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-------------+- | id() | -+-------------+- | acorn.hideo | | meyers.hill | | meyers.jack | | meyers.jim | | smith.jack | | smith.maggy | (6 rows) ----- /person{id()}?exists((project.id()='smak'))/ - uri: /project{id()}?exists(person.id()='meyers.jack') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+----------+- | id() | -+----------+- | la-102 | | la-334 | | lt-802 | | overhead | | smak | | smbl | | smen | (7 rows) ----- /project{id()}?exists((person.id()='meyers.jack'))/ - uri: /person[smith.jose]{org_id, nickname}/participation{id(),billing_rate==null()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 1) | =+==================+= | org_id : smith | | nickname : jose | ----- /person[smith.jose]{org_id,nickname}/participation{id(),(billing_rate==null())}/ - uri: /person[smith.jose]{org_id, nickname} ?count(participation&participation.billing_rate==null())=0 /select(expect=1) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-------------------+- | org_id | nickname | -+--------+----------+- | smith | jose | (1 row) ----- /person[smith.jose]{org_id,nickname}?(count((participation&(participation.billing_rate==null())))=0)/select(expect=1) - uri: /person[smith.jose]{org_id, nickname}?count(participation.billing_rate==null())=0 /select(expect=1) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-------------------+- | org_id | nickname | -+--------+----------+- | smith | jose | (1 row) ----- /person[smith.jose]{org_id,nickname}?(count((participation.billing_rate==null()))=0)/select(expect=1) - uri: /organization{array(person.nickname),first(person.nickname),last(person.nickname)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------------------------------+- | array(person.nickname) | first(person.nickname) | last(person.nickname) | -+------------------------+------------------------+-----------------------+- | [hideo] | hideo | hideo | | [tom] | tom | tom | | [] | | | | [amy, dave] | amy | dave | | [hill, jack, jim] | hill | jim | | [] | | | | [jack, jose, maggy] | jack | maggy | (7 rows) ----- /organization{array(person.nickname),first(person.nickname),last(person.nickname)}/ - uri: /organization{id(),p}? (({person{array(id())}?exists(participation.billing_rate>50)}) as p).length()>1 status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------+- | id() | p | -+--------+----------------------------------------+- | meyers | [meyers.hill, meyers.jack, meyers.jim] | (1 row) ----- /organization{id(),p}?(({person{array(id())}?exists((participation.billing_rate>50))} as p).length()>1)/ - uri: /organization{*,foo}? (({project{count()>1}?count(participation.billing_rate>30.0)>1}) as foo) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------------------+- | org_id | name | is_active | division_of | foo | -+-----------+------------------------+-----------+-------------+------+- | lake-apts | Lake Shore Apartments | false | lakeside | true | | smith | Rudgen, Taupe, & Smith | false | | true | (2 rows) ----- /organization{*,foo}?({project{(count()>1)}?(count((participation.billing_rate>30.0))>1)} as foo)/ - uri: /organization?count(project?count(participation.billing_rate>30.0))>1 status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-----------+------------------------+-----------+-------------+- | lake-apts | Lake Shore Apartments | false | lakeside | | smith | Rudgen, Taupe, & Smith | false | | (2 rows) ----- /organization?(count((project?count((participation.billing_rate>30.0))))>1)/ - uri: /organization{org_id as oid} /person{id(),exists(participation|up().oid='meyers'),count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+==========================================================================================+= | oid : acorn | \ / person +------------------------------------------------------------------------------------+ | id() | exists((participation|(up().oid='meyers'))) | count(participation) | +---------------+---------------------------------------------+----------------------+ | acorn.hideo | true | 2 | (1 row) | organization (2 of 7) | =+==========================================================================================+= | oid : lake-apts | \ / person +------------------------------------------------------------------------------------+ | id() | exists((participation|(up().oid='meyers'))) | count(participation) | +---------------+---------------------------------------------+----------------------+ | lake-apts.tom | true | 2 | (1 row) | organization (3 of 7) | =+==========================================================================================+= | oid : lake-carmen | | organization (4 of 7) | =+==========================================================================================+= | oid : lakeside | \ / person +------------------------------------------------------------------------------------+ | id() | exists((participation|(up().oid='meyers'))) | count(participation) | +---------------+---------------------------------------------+----------------------+ | lakeside.amy | true | 1 | | lakeside.dave | true | 2 | (2 rows) | organization (5 of 7) | =+==========================================================================================+= | oid : meyers | \ / person +------------------------------------------------------------------------------------+ | id() | exists((participation|(up().oid='meyers'))) | count(participation) | +---------------+---------------------------------------------+----------------------+ | meyers.hill | true | 3 | | meyers.jack | true | 7 | | meyers.jim | true | 5 | (3 rows) | organization (6 of 7) | =+==========================================================================================+= | oid : meyers_elec | | organization (7 of 7) | =+==========================================================================================+= | oid : smith | \ / person +------------------------------------------------------------------------------------+ | id() | exists((participation|(up().oid='meyers'))) | count(participation) | +---------------+---------------------------------------------+----------------------+ | smith.jack | true | 1 | | smith.jose | false | 0 | | smith.maggy | true | 3 | (3 rows) ----- /organization{(org_id as oid)}/person{id(),exists((participation|(up().oid='meyers'))),count(participation)}/ - uri: /organization{id(),exists(person.nickname='jack'),every(person.nickname='tom')} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------------------------------+- | id() | exists((person.nickname='jack')) | every((person.nickname='tom')) | -+-------------+----------------------------------+--------------------------------+- | acorn | false | false | | lake-apts | false | true | | lake-carmen | false | true | | lakeside | false | false | | meyers | true | false | | meyers_elec | false | true | | smith | true | false | (7 rows) ----- /organization{id(),exists((person.nickname='jack')),every((person.nickname='tom'))}/ - uri: /organization{id(),*person.nickname='jack',^person.nickname='tom'} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------------------------------------------------------------+- | id() | (*(person.nickname='jack')) | (^(person.nickname='tom')) | -+-------------+-----------------------------+----------------------------+- | acorn | false | false | | lake-apts | false | true | | lake-carmen | false | true | | lakeside | false | false | | meyers | true | false | | meyers_elec | false | true | | smith | true | false | (7 rows) ----- /organization{id(),(*(person.nickname='jack')),(^(person.nickname='tom'))}/ - uri: /organization{id(),count(person),count(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+----------------------------------------------+- | id() | count(person) | count(project) | -+-------------+---------------+----------------+- | acorn | 1 | 0 | | lake-apts | 1 | 2 | | lake-carmen | 0 | 2 | | lakeside | 2 | 0 | | meyers | 3 | 0 | | meyers_elec | 0 | 0 | | smith | 3 | 3 | (7 rows) ----- /organization{id(),count(person),count(project)}/ - uri: /organization{exists(person),count(person), exists(person.private_info),count(person.private_info)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------------------------------------------------+- | exists(person) | count(person) | exists(person.private_info) | count(person.private_info) | -+----------------+---------------+-----------------------------+----------------------------+- | true | 1 | true | 1 | | true | 1 | false | 0 | | false | 0 | false | 0 | | true | 2 | false | 0 | | true | 3 | true | 3 | | false | 0 | false | 0 | | true | 3 | true | 3 | (7 rows) ----- /organization{exists(person),count(person),exists(person.private_info),count(person.private_info)}/ - uri: /{count(organization),person{count(),count(private_info)}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................... | -+---------------------------------------------------------------------+- | count(organization) | person{count()} | person{count(private_info)} | -+---------------------+-----------------+-----------------------------+- | 7 | 10 | 7 | (1 row) ----- /{count(organization),person{count(),count(private_info)}}/ - uri: /person{org_id^,count(),count()+count(participation),count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-----------------------------------------------------------------------------+- | org_id | count() | (count()+count(participation)) | count(participation) | -+-----------+---------+--------------------------------+----------------------+- | acorn | 1 | 3 | 2 | | lake-apts | 1 | 3 | 2 | | lakeside | 2 | 5 | 3 | | meyers | 3 | 18 | 15 | | smith | 3 | 7 | 4 | (5 rows) ----- /person{org_id^,count(),(count()+count(participation)),count(participation)}/ - uri: /organization{id(),array(person.license) as licenses, exists(person.license~'a') as some_with_a, every(person.license~'a') as all_with_a} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+----------------------------------------------------------------------+- | id() | licenses | some_with_a | all_with_a | -+-------------+-----------------------------+-------------+------------+- | acorn | [CQB421] | false | false | | lake-apts | [~] | false | false | | lake-carmen | [] | false | true | | lakeside | [953OKG, ~] | false | false | | meyers | [2GAT123, 2GAT138, V345FMP] | true | false | | meyers_elec | [] | false | true | | smith | ["", JJZ109, THX138] | false | false | (7 rows) ----- /organization{id(),(array(person.license) as licenses),(exists((person.license~'a')) as some_with_a),(every((person.license~'a')) as all_with_a)}/ - uri: /organization{id(),project{count(),exists(status)}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+----------------------------------------------------------+- | id() | project{count()} | project{exists(status)} | -+-------------+------------------+-------------------------+- | acorn | 0 | false | | lake-apts | 2 | true | | lake-carmen | 2 | true | | lakeside | 0 | false | | meyers | 0 | false | | meyers_elec | 0 | false | | smith | 3 | true | (7 rows) ----- /organization{id(),project{count(),exists(status)}}/ - uri: /{array(person.full_name)[:3],person{array(full_name)[:3]}} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................................................... | -+-----------------------------------------------------------------------------------------------------+- | array(person.full_name)[:3] | person{array(full_name)[:3]} | -+-------------------------------------------------+---------------------------------------------------+- | [Amy S. Buckworth, David Jones, Jack C. Meyers] | [WATANABE Hideo, Tommy O'Mally, Amy S. Buckworth] | (1 row) ----- /{array(person.full_name)[:3],person{array(full_name)[:3]}}/ - id: aggregate-comparisons tests: - uri: /organization?exists(person) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+---------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-----------+-------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lake-apts | Lake Shore Apartments | false | lakeside | | lakeside | Lake Side Partners, LLC | | | | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (5 rows) ----- /organization?exists(person)/ - uri: /organization?every(person.license) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+---------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lake-carmen | Lake Carmen Towers | true | lakeside | | meyers | Meyers Construction | true | | | meyers_elec | Meyers Electric | true | meyers | (4 rows) ----- /organization?every(person.license)/ - uri: /{sum(participation.billing_rate),count(participation.billing_rate), avg(participation.billing_rate)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ..................................................................................................... | -+-------------------------------------------------------------------------------------------------------+- | sum(participation.billing_rate) | count(participation.billing_rate) | avg(participation.billing_rate) | -+---------------------------------+-----------------------------------+---------------------------------+- | 1157.00 | 16 | 68.0588235294117647 | (1 row) ----- /{sum(participation.billing_rate),count(participation.billing_rate),avg(participation.billing_rate)}/ - uri: /{count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | .................... | -+----------------------+- | count(participation) | -+----------------------+- | 26 | (1 row) ----- /{count(participation)}/ - uri: /{min(participation.billing_rate),max(participation.billing_rate)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................. | -+-------------------------------------------------------------------+- | min(participation.billing_rate) | max(participation.billing_rate) | -+---------------------------------+---------------------------------+- | 0.00 | 135.00 | (1 row) ----- /{min(participation.billing_rate),max(participation.billing_rate)}/ - uri: /op:organization{id()}?exists(project)/project{id(),status} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization (1 of 3) | =+============================+= | id() : lake-apts | \ / project +----------------------+ | id() | status | +--------+-------------+ | la-102 | completed | | la-334 | completed | (2 rows) | op:organization (2 of 3) | =+============================+= | id() : lake-carmen | \ / project +----------------------+ | id() | status | +--------+-------------+ | lt-711 | planned | | lt-802 | in-progress | (2 rows) | op:organization (3 of 3) | =+============================+= | id() : smith | \ / project +----------------------+ | id() | status | +--------+-------------+ | smak | abandoned | | smbl | completed | | smen | completed | (3 rows) ----- /op:organization{id()}?exists(project)/project{id(),status}/ - uri: /op:organization{id()}?exists(project.status='completed') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-----------------+- | id() | -+-----------------+- | lake-apts | | smith | (2 rows) ----- /op:organization{id()}?exists((project.status='completed'))/ - uri: /op:organization{id()}?exists(project.status='completed') |exists(project.status='abandoned') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-----------------+- | id() | -+-----------------+- | lake-apts | | smith | (2 rows) ----- /op:organization{id()}?(exists((project.status='completed'))|exists((project.status='abandoned')))/ - uri: /op:organization{id()}?exists(project.status='completed') &exists(project.status='abandoned') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-----------------+- | id() | -+-----------------+- | smith | (1 row) ----- /op:organization{id()}?(exists((project.status='completed'))&exists((project.status='abandoned')))/ - uri: /op:project{organization^} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+--------------+- | organization | -+--------------+- | lake-apts | | lake-carmen | | smith | | | (4 rows) ----- /op:project{organization^}/ - uri: /op:project{organization.org_id^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+-------------------------------+- | organization.org_id | count() | -+---------------------+---------+- | lake-apts | 2 | | lake-carmen | 2 | | smith | 3 | | | 1 | (4 rows) ----- /op:project{organization.org_id^,count()}/ - uri: /project{{organization,status}^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+--------------------------------------+- | organization | status | count() | -+--------------+-------------+---------+- | lake-apts | completed | 2 | | lake-carmen | planned | 1 | | lake-carmen | in-progress | 1 | | smith | completed | 2 | | smith | abandoned | 1 | | | in-progress | 1 | (6 rows) ----- /project{{organization,status}^,count()}/ - uri: /op:project{organization^}?status='completed' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+--------------+- | organization | -+--------------+- | lake-apts | | smith | (2 rows) ----- /op:project{organization^}?(status='completed')/ - uri: /op:project{organization^,status^}?status='completed' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:project | -+--------------------------+- | organization | status | -+--------------+-----------+- | lake-apts | completed | | smith | completed | (2 rows) ----- /op:project{organization^,status^}?(status='completed')/ - uri: /organization?project.every( (status='completed')->(start_date<'2000-01-01')) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+-------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lake-carmen | Lake Carmen Towers | true | lakeside | | lakeside | Lake Side Partners, LLC | | | | meyers | Meyers Construction | true | | | meyers_elec | Meyers Electric | true | meyers | (5 rows) ----- /organization?project.every(((status='completed')->(start_date<'2000-01-01')))/ - id: segment-and-join-test tests: - uri: /organization.csv status: 200 OK headers: - [Content-Type, text/csv; charset=UTF-8] - [Content-Disposition, attachment; filename=organization.csv] body: "org_id,name,is_active,division_of\r\nacorn,Acorn Architecture,true,\r\nlake-apts,Lake Shore Apartments,false,lakeside\r\nlake-carmen,Lake Carmen Towers,true,lakeside\r\nlakeside,\"Lake Side Partners, LLC\",,\r\nmeyers,Meyers Construction,true,\r\nmeyers_elec,Meyers Electric,true,meyers\r\nsmith,\"Rudgen, Taupe, & Smith\",false,\r\n" - uri: /organization/person status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+====================================================================+= | org_id : acorn | | name : Acorn Architecture | | is_active : true | | division_of : | \ / person +--------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +-----------+----------+------------------+---------+----------+ | acorn | hideo | WATANABE Hideo | CQB421 | | (1 row) | organization (2 of 7) | =+====================================================================+= | org_id : lake-apts | | name : Lake Shore Apartments | | is_active : false | | division_of : lakeside | \ / person +--------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +-----------+----------+------------------+---------+----------+ | lake-apts | tom | Tommy O'Mally | | | (1 row) | organization (3 of 7) | =+====================================================================+= | org_id : lake-carmen | | name : Lake Carmen Towers | | is_active : true | | division_of : lakeside | | organization (4 of 7) | =+====================================================================+= | org_id : lakeside | | name : Lake Side Partners, LLC | | is_active : | | division_of : | \ / person +--------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +-----------+----------+------------------+---------+----------+ | lakeside | amy | Amy S. Buckworth | | "" | | lakeside | dave | David Jones | 953OKG | "" | (2 rows) | organization (5 of 7) | =+====================================================================+= | org_id : meyers | | name : Meyers Construction | | is_active : true | | division_of : | \ / person +--------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +-----------+----------+------------------+---------+----------+ | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers | jim | Jim Meyers | 2GAT138 | | (3 rows) | organization (6 of 7) | =+====================================================================+= | org_id : meyers_elec | | name : Meyers Electric | | is_active : true | | division_of : meyers | | organization (7 of 7) | =+====================================================================+= | org_id : smith | | name : Rudgen, Taupe, & Smith | | is_active : false | | division_of : | \ / person +--------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +-----------+----------+------------------+---------+----------+ | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | | smith | maggy | Margret N. Smith | "" | 555-2368 | (3 rows) ----- /organization/person/ - uri: /organization/person.csv status: 200 OK headers: - [Content-Type, text/csv; charset=UTF-8] - [Content-Disposition, attachment; filename=organization.csv] body: "org_id,name,is_active,division_of,person{org_id},person{nickname},person{full_name},person{license},person{phone}\r\nacorn,Acorn Architecture,true,,acorn,hideo,WATANABE Hideo,CQB421,\r\nlake-apts,Lake Shore Apartments,false,lakeside,lake-apts,tom,Tommy O'Mally,,\r\nlake-carmen,Lake Carmen Towers,true,lakeside,,,,,\r\nlakeside,\"Lake Side Partners, LLC\",,,lakeside,amy,Amy S. Buckworth,,\r\nlakeside,\"Lake Side Partners, LLC\",,,lakeside,dave,David Jones,953OKG,\r\nmeyers,Meyers Construction,true,,meyers,hill,Mark Thomas Hill,V345FMP,555-2106\r\nmeyers,Meyers Construction,true,,meyers,jack,Jack C. Meyers,2GAT123,555-2106\r\nmeyers,Meyers Construction,true,,meyers,jim,Jim Meyers,2GAT138,\r\nmeyers_elec,Meyers Electric,true,meyers,,,,,\r\nsmith,\"Rudgen, Taupe, & Smith\",false,,smith,jack,Jack Taupe,THX138,555-4386\r\nsmith,\"Rudgen, Taupe, & Smith\",false,,smith,jose,José N. Marteñes,JJZ109,555-4385\r\nsmith,\"Rudgen, Taupe, & Smith\",false,,smith,maggy,Margret N. Smith,,555-2368\r\n" - uri: /person/private_info status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 10) | =+===========================================================================================================================+= | org_id : acorn | | nickname : hideo | | full_name : WATANABE Hideo | | license : CQB421 | | phone : | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | E32-3483 | [asian] | {~, {~, ~, ~}, 38234} | acorn.hideo | (1 row) | person (2 of 10) | =+===========================================================================================================================+= | org_id : lake-apts | | nickname : tom | | full_name : Tommy O'Mally | | license : | | phone : | | person (3 of 10) | =+===========================================================================================================================+= | org_id : lakeside | | nickname : amy | | full_name : Amy S. Buckworth | | license : | | phone : "" | | person (4 of 10) | =+===========================================================================================================================+= | org_id : lakeside | | nickname : dave | | full_name : David Jones | | license : 953OKG | | phone : "" | | person (5 of 10) | =+===========================================================================================================================+= | org_id : meyers | | nickname : hill | | full_name : Mark Thomas Hill | | license : V345FMP | | phone : 555-2106 | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | 456-27-7645 | [] | {~, {~, ~, ~}, ~} | meyers.hill | (1 row) | person (6 of 10) | =+===========================================================================================================================+= | org_id : meyers | | nickname : jack | | full_name : Jack C. Meyers | | license : 2GAT123 | | phone : 555-2106 | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | 222-22-1492 | [white] | {[1 Rockway Park Dr., Apt #2], {Santa Monica, CA, USA}, 03884-0394} | meyers.jack | (1 row) | person (7 of 10) | =+===========================================================================================================================+= | org_id : meyers | | nickname : jim | | full_name : Jim Meyers | | license : 2GAT138 | | phone : | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | 983-71-8458 | | {~, {Roanoke, VA, USA}, 38234} | meyers.jim | (1 row) | person (8 of 10) | =+===========================================================================================================================+= | org_id : smith | | nickname : jack | | full_name : Jack Taupe | | license : THX138 | | phone : 555-4386 | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | 651-97-2682 | [black] | {[34 Beltway Ave.], {Santa Monica, CA, USA}, 03884-0394} | smith.jack | (1 row) | person (9 of 10) | =+===========================================================================================================================+= | org_id : smith | | nickname : jose | | full_name : José N. Marteñes | | license : JJZ109 | | phone : 555-4385 | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | 725-23-8646 | [black, hispanic] | {~, {~, ~, ~}, ~} | smith.jose | (1 row) | person (10 of 10) | =+===========================================================================================================================+= | org_id : smith | | nickname : maggy | | full_name : Margret N. Smith | | license : "" | | phone : 555-2368 | \ / private_info +---------------------------------------------------------------------------------------------------------------------+ | tax_ident | ethnicity | address | person | +-------------+-------------------+---------------------------------------------------------------------+-------------+ | 826-44-2325 | [indian] | {[], {~, ~, ~}, 03995-3434} | smith.maggy | (1 row) ----- /person/private_info/ - uri: /organization{id()}/person{id()}/*participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+====================================+= | id() : acorn | \ / person (1 of 1) +==============================+ | id() : acorn.hideo | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smbl.(acorn.hideo) | (2 rows) | organization (2 of 7) | =+====================================+= | id() : lake-apts | \ / person (1 of 1) +==============================+ | id() : lake-apts.tom | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-334.(lake-apts.tom) | (2 rows) | organization (3 of 7) | =+====================================+= | id() : lake-carmen | | organization (4 of 7) | =+====================================+= | id() : lakeside | \ / person (1 of 2) +==============================+ | id() : lakeside.amy | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | (1 row) person (2 of 2) +==============================+ | id() : lakeside.dave | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lakeside.dave) | | la-334.(lakeside.dave) | (2 rows) | organization (5 of 7) | =+====================================+= | id() : meyers | \ / person (1 of 3) +==============================+ | id() : meyers.hill | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.hill) | | lt-802.(meyers.hill) | | smak.(meyers.hill) | (3 rows) person (2 of 3) +==============================+ | id() : meyers.jack | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jack) | | la-334.(meyers.jack) | | lt-802.(meyers.jack) | | overhead.(meyers.jack) | | smak.(meyers.jack) | | smbl.(meyers.jack) | | smen.(meyers.jack) | (7 rows) person (3 of 3) +==============================+ | id() : meyers.jim | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jim) | | la-334.(meyers.jim) | | lt-802.(meyers.jim) | | smak.(meyers.jim) | | smen.(meyers.jim) | (5 rows) | organization (6 of 7) | =+====================================+= | id() : meyers_elec | | organization (7 of 7) | =+====================================+= | id() : smith | \ / person (1 of 2) +==============================+ | id() : smith.jack | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.jack) | (1 row) person (2 of 2) +==============================+ | id() : smith.maggy | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.maggy) | | smbl.(smith.maggy) | | smen.(smith.maggy) | (3 rows) ----- /organization{id()}/person{id()}/*participation{id()}/ - uri: /organization{id()}/*person{id()}/participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 5) | =+====================================+= | id() : acorn | \ / person (1 of 1) +==============================+ | id() : acorn.hideo | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smbl.(acorn.hideo) | (2 rows) | organization (2 of 5) | =+====================================+= | id() : lake-apts | \ / person (1 of 1) +==============================+ | id() : lake-apts.tom | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-334.(lake-apts.tom) | (2 rows) | organization (3 of 5) | =+====================================+= | id() : lakeside | \ / person (1 of 2) +==============================+ | id() : lakeside.amy | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | (1 row) person (2 of 2) +==============================+ | id() : lakeside.dave | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lakeside.dave) | | la-334.(lakeside.dave) | (2 rows) | organization (4 of 5) | =+====================================+= | id() : meyers | \ / person (1 of 3) +==============================+ | id() : meyers.hill | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.hill) | | lt-802.(meyers.hill) | | smak.(meyers.hill) | (3 rows) person (2 of 3) +==============================+ | id() : meyers.jack | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jack) | | la-334.(meyers.jack) | | lt-802.(meyers.jack) | | overhead.(meyers.jack) | | smak.(meyers.jack) | | smbl.(meyers.jack) | | smen.(meyers.jack) | (7 rows) person (3 of 3) +==============================+ | id() : meyers.jim | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jim) | | la-334.(meyers.jim) | | lt-802.(meyers.jim) | | smak.(meyers.jim) | | smen.(meyers.jim) | (5 rows) | organization (5 of 5) | =+====================================+= | id() : smith | \ / person (1 of 3) +==============================+ | id() : smith.jack | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.jack) | (1 row) person (2 of 3) +==============================+ | id() : smith.jose | person (3 of 3) +==============================+ | id() : smith.maggy | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.maggy) | | smbl.(smith.maggy) | | smen.(smith.maggy) | (3 rows) ----- /organization{id()}/*person{id()}/participation{id()}/ - uri: /organization{id()}/*person{id()}/*participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 5) | =+====================================+= | id() : acorn | \ / person (1 of 1) +==============================+ | id() : acorn.hideo | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smbl.(acorn.hideo) | (2 rows) | organization (2 of 5) | =+====================================+= | id() : lake-apts | \ / person (1 of 1) +==============================+ | id() : lake-apts.tom | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-334.(lake-apts.tom) | (2 rows) | organization (3 of 5) | =+====================================+= | id() : lakeside | \ / person (1 of 2) +==============================+ | id() : lakeside.amy | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | (1 row) person (2 of 2) +==============================+ | id() : lakeside.dave | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lakeside.dave) | | la-334.(lakeside.dave) | (2 rows) | organization (4 of 5) | =+====================================+= | id() : meyers | \ / person (1 of 3) +==============================+ | id() : meyers.hill | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.hill) | | lt-802.(meyers.hill) | | smak.(meyers.hill) | (3 rows) person (2 of 3) +==============================+ | id() : meyers.jack | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jack) | | la-334.(meyers.jack) | | lt-802.(meyers.jack) | | overhead.(meyers.jack) | | smak.(meyers.jack) | | smbl.(meyers.jack) | | smen.(meyers.jack) | (7 rows) person (3 of 3) +==============================+ | id() : meyers.jim | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jim) | | la-334.(meyers.jim) | | lt-802.(meyers.jim) | | smak.(meyers.jim) | | smen.(meyers.jim) | (5 rows) | organization (5 of 5) | =+====================================+= | id() : smith | \ / person (1 of 2) +==============================+ | id() : smith.jack | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.jack) | (1 row) person (2 of 2) +==============================+ | id() : smith.maggy | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.maggy) | | smbl.(smith.maggy) | | smen.(smith.maggy) | (3 rows) ----- /organization{id()}/*person{id()}/*participation{id()}/ - uri: /organization{id()}/project{id()}/*participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+====================================+= | id() : acorn | | organization (2 of 7) | =+====================================+= | id() : lake-apts | \ / project (1 of 2) +==============================+ | id() : la-102 | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-102.(lakeside.dave) | | la-102.(meyers.hill) | | la-102.(meyers.jack) | | la-102.(meyers.jim) | (5 rows) project (2 of 2) +==============================+ | id() : la-334 | \ / participation +------------------------+ | id() | +------------------------+ | la-334.(lake-apts.tom) | | la-334.(lakeside.dave) | | la-334.(meyers.jack) | | la-334.(meyers.jim) | (4 rows) | organization (3 of 7) | =+====================================+= | id() : lake-carmen | \ / project (1 of 1) +==============================+ | id() : lt-802 | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | | lt-802.(meyers.hill) | | lt-802.(meyers.jack) | | lt-802.(meyers.jim) | (4 rows) | organization (4 of 7) | =+====================================+= | id() : lakeside | | organization (5 of 7) | =+====================================+= | id() : meyers | | organization (6 of 7) | =+====================================+= | id() : meyers_elec | | organization (7 of 7) | =+====================================+= | id() : smith | \ / project (1 of 3) +==============================+ | id() : smak | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smak.(meyers.hill) | | smak.(meyers.jack) | | smak.(meyers.jim) | | smak.(smith.jack) | | smak.(smith.maggy) | (6 rows) project (2 of 3) +==============================+ | id() : smbl | \ / participation +------------------------+ | id() | +------------------------+ | smbl.(acorn.hideo) | | smbl.(meyers.jack) | | smbl.(smith.maggy) | (3 rows) project (3 of 3) +==============================+ | id() : smen | \ / participation +------------------------+ | id() | +------------------------+ | smen.(meyers.jack) | | smen.(meyers.jim) | | smen.(smith.maggy) | (3 rows) ----- /organization{id()}/project{id()}/*participation{id()}/ - uri: /organization{id()}/*project{id()}/participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+====================================+= | id() : lake-apts | \ / project (1 of 2) +==============================+ | id() : la-102 | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-102.(lakeside.dave) | | la-102.(meyers.hill) | | la-102.(meyers.jack) | | la-102.(meyers.jim) | (5 rows) project (2 of 2) +==============================+ | id() : la-334 | \ / participation +------------------------+ | id() | +------------------------+ | la-334.(lake-apts.tom) | | la-334.(lakeside.dave) | | la-334.(meyers.jack) | | la-334.(meyers.jim) | (4 rows) | organization (2 of 3) | =+====================================+= | id() : lake-carmen | \ / project (1 of 2) +==============================+ | id() : lt-711 | project (2 of 2) +==============================+ | id() : lt-802 | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | | lt-802.(meyers.hill) | | lt-802.(meyers.jack) | | lt-802.(meyers.jim) | (4 rows) | organization (3 of 3) | =+====================================+= | id() : smith | \ / project (1 of 3) +==============================+ | id() : smak | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smak.(meyers.hill) | | smak.(meyers.jack) | | smak.(meyers.jim) | | smak.(smith.jack) | | smak.(smith.maggy) | (6 rows) project (2 of 3) +==============================+ | id() : smbl | \ / participation +------------------------+ | id() | +------------------------+ | smbl.(acorn.hideo) | | smbl.(meyers.jack) | | smbl.(smith.maggy) | (3 rows) project (3 of 3) +==============================+ | id() : smen | \ / participation +------------------------+ | id() | +------------------------+ | smen.(meyers.jack) | | smen.(meyers.jim) | | smen.(smith.maggy) | (3 rows) ----- /organization{id()}/*project{id()}/participation{id()}/ - uri: /organization{id()}/*project{id()}/*participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+====================================+= | id() : lake-apts | \ / project (1 of 2) +==============================+ | id() : la-102 | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-102.(lakeside.dave) | | la-102.(meyers.hill) | | la-102.(meyers.jack) | | la-102.(meyers.jim) | (5 rows) project (2 of 2) +==============================+ | id() : la-334 | \ / participation +------------------------+ | id() | +------------------------+ | la-334.(lake-apts.tom) | | la-334.(lakeside.dave) | | la-334.(meyers.jack) | | la-334.(meyers.jim) | (4 rows) | organization (2 of 3) | =+====================================+= | id() : lake-carmen | \ / project (1 of 1) +==============================+ | id() : lt-802 | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | | lt-802.(meyers.hill) | | lt-802.(meyers.jack) | | lt-802.(meyers.jim) | (4 rows) | organization (3 of 3) | =+====================================+= | id() : smith | \ / project (1 of 3) +==============================+ | id() : smak | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smak.(meyers.hill) | | smak.(meyers.jack) | | smak.(meyers.jim) | | smak.(smith.jack) | | smak.(smith.maggy) | (6 rows) project (2 of 3) +==============================+ | id() : smbl | \ / participation +------------------------+ | id() | +------------------------+ | smbl.(acorn.hideo) | | smbl.(meyers.jack) | | smbl.(smith.maggy) | (3 rows) project (3 of 3) +==============================+ | id() : smen | \ / participation +------------------------+ | id() | +------------------------+ | smen.(meyers.jack) | | smen.(meyers.jim) | | smen.(smith.maggy) | (3 rows) ----- /organization{id()}/*project{id()}/*participation{id()}/ - uri: /organization{id()}/person{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+=======================+= | id() : acorn | \ / person +---------------+ | id() | +---------------+ | acorn.hideo | (1 row) | organization (2 of 7) | =+=======================+= | id() : lake-apts | \ / person +---------------+ | id() | +---------------+ | lake-apts.tom | (1 row) | organization (3 of 7) | =+=======================+= | id() : lake-carmen | | organization (4 of 7) | =+=======================+= | id() : lakeside | \ / person +---------------+ | id() | +---------------+ | lakeside.amy | | lakeside.dave | (2 rows) | organization (5 of 7) | =+=======================+= | id() : meyers | \ / person +---------------+ | id() | +---------------+ | meyers.hill | | meyers.jack | | meyers.jim | (3 rows) | organization (6 of 7) | =+=======================+= | id() : meyers_elec | | organization (7 of 7) | =+=======================+= | id() : smith | \ / person +---------------+ | id() | +---------------+ | smith.jack | | smith.jose | | smith.maggy | (3 rows) ----- /organization{id()}/person{id()}/ - uri: /organization{id()}/*person{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 5) | =+=======================+= | id() : acorn | \ / person +---------------+ | id() | +---------------+ | acorn.hideo | (1 row) | organization (2 of 5) | =+=======================+= | id() : lake-apts | \ / person +---------------+ | id() | +---------------+ | lake-apts.tom | (1 row) | organization (3 of 5) | =+=======================+= | id() : lakeside | \ / person +---------------+ | id() | +---------------+ | lakeside.amy | | lakeside.dave | (2 rows) | organization (4 of 5) | =+=======================+= | id() : meyers | \ / person +---------------+ | id() | +---------------+ | meyers.hill | | meyers.jack | | meyers.jim | (3 rows) | organization (5 of 5) | =+=======================+= | id() : smith | \ / person +---------------+ | id() | +---------------+ | smith.jack | | smith.jose | | smith.maggy | (3 rows) ----- /organization{id()}/*person{id()}/ - uri: /organization{id()}/person{id()}?nickname~'j' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+=======================+= | id() : acorn | | organization (2 of 7) | =+=======================+= | id() : lake-apts | | organization (3 of 7) | =+=======================+= | id() : lake-carmen | | organization (4 of 7) | =+=======================+= | id() : lakeside | | organization (5 of 7) | =+=======================+= | id() : meyers | \ / person +-------------+ | id() | +-------------+ | meyers.jack | | meyers.jim | (2 rows) | organization (6 of 7) | =+=======================+= | id() : meyers_elec | | organization (7 of 7) | =+=======================+= | id() : smith | \ / person +-------------+ | id() | +-------------+ | smith.jack | | smith.jose | (2 rows) ----- /organization{id()}/person{id()}?(nickname~'j')/ - uri: /organization{id()}/*person{id()}?nickname~'j' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 2) | =+=======================+= | id() : meyers | \ / person +-------------+ | id() | +-------------+ | meyers.jack | | meyers.jim | (2 rows) | organization (2 of 2) | =+=======================+= | id() : smith | \ / person +-------------+ | id() | +-------------+ | smith.jack | | smith.jose | (2 rows) ----- /organization{id()}/*person{id()}?(nickname~'j')/ - uri: /organization{id()}/person{id()}?nickname~'j'/participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+====================================+= | id() : acorn | | organization (2 of 7) | =+====================================+= | id() : lake-apts | | organization (3 of 7) | =+====================================+= | id() : lake-carmen | | organization (4 of 7) | =+====================================+= | id() : lakeside | | organization (5 of 7) | =+====================================+= | id() : meyers | \ / person (1 of 2) +==============================+ | id() : meyers.jack | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jack) | | la-334.(meyers.jack) | | lt-802.(meyers.jack) | | overhead.(meyers.jack) | | smak.(meyers.jack) | | smbl.(meyers.jack) | | smen.(meyers.jack) | (7 rows) person (2 of 2) +==============================+ | id() : meyers.jim | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jim) | | la-334.(meyers.jim) | | lt-802.(meyers.jim) | | smak.(meyers.jim) | | smen.(meyers.jim) | (5 rows) | organization (6 of 7) | =+====================================+= | id() : meyers_elec | | organization (7 of 7) | =+====================================+= | id() : smith | \ / person (1 of 2) +==============================+ | id() : smith.jack | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.jack) | (1 row) person (2 of 2) +==============================+ | id() : smith.jose | ----- /organization{id()}/person{id()}?(nickname~'j')/participation{id()}/ - uri: /organization{id()}/*person{id()}?nickname~'j'/*participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 2) | =+====================================+= | id() : meyers | \ / person (1 of 2) +==============================+ | id() : meyers.jack | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jack) | | la-334.(meyers.jack) | | lt-802.(meyers.jack) | | overhead.(meyers.jack) | | smak.(meyers.jack) | | smbl.(meyers.jack) | | smen.(meyers.jack) | (7 rows) person (2 of 2) +==============================+ | id() : meyers.jim | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(meyers.jim) | | la-334.(meyers.jim) | | lt-802.(meyers.jim) | | smak.(meyers.jim) | | smen.(meyers.jim) | (5 rows) | organization (2 of 2) | =+====================================+= | id() : smith | \ / person (1 of 1) +==============================+ | id() : smith.jack | \ / participation +------------------------+ | id() | +------------------------+ | smak.(smith.jack) | (1 row) ----- /organization{id()}/*person{id()}?(nickname~'j')/*participation{id()}/ - uri: /organization{id()}/person{id()}?nickname~'j' /participation{id(),billing_rate}?billing_rate==null()|billing_rate=35.50 status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+==============================================+= | id() : acorn | | organization (2 of 7) | =+==============================================+= | id() : lake-apts | | organization (3 of 7) | =+==============================================+= | id() : lake-carmen | | organization (4 of 7) | =+==============================================+= | id() : lakeside | | organization (5 of 7) | =+==============================================+= | id() : meyers | \ / person (1 of 2) +========================================+ | id() : meyers.jack | person (2 of 2) +========================================+ | id() : meyers.jim | \ / participation +----------------------------------+ | id() | billing_rate | +-------------------+--------------+ | smak.(meyers.jim) | 35.50 | (1 row) | organization (6 of 7) | =+==============================================+= | id() : meyers_elec | | organization (7 of 7) | =+==============================================+= | id() : smith | \ / person (1 of 2) +========================================+ | id() : smith.jack | \ / participation +----------------------------------+ | id() | billing_rate | +-------------------+--------------+ | smak.(smith.jack) | | (1 row) person (2 of 2) +========================================+ | id() : smith.jose | ----- /organization{id()}/person{id()}?(nickname~'j')/participation{id(),billing_rate}?((billing_rate==null())|(billing_rate=35.50))/ - uri: /project{}?status='completed'/*workitem{id()}?status='done' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project (1 of 2) | =+==================+= \ / workitem +----------+ | id() | +----------+ | smbl.1 | | smbl.2 | | smbl.3 | | smbl.30 | | smbl.31 | | smbl.33 | | smbl.34 | | smbl.35 | (8 rows) | project (2 of 2) | =+==================+= \ / workitem +----------+ | id() | +----------+ | smen.1 | | smen.2 | | smen.3 | (3 rows) ----- /project{}?(status='completed')/*workitem{id()}?(status='done')/ - uri: /timeslip{workitem.status-^,sum(hours)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | timeslip | -+------------------------------+- | workitem.status | sum(hours) | -+-----------------+------------+- | | 26.00 | (1 row) ----- /timeslip{workitem.status-^,sum(hours)}/ - uri: /participation/timeslip{workitem.status^,sum(hours)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | participation (1 of 26) | =+====================================+= | project : la-102 | | billing_rate : | | person : lake-apts.tom | | participation (2 of 26) | =+====================================+= | project : la-102 | | billing_rate : | | person : lakeside.dave | | participation (3 of 26) | =+====================================+= | project : la-102 | | billing_rate : 55.00 | | person : meyers.hill | | participation (4 of 26) | =+====================================+= | project : la-102 | | billing_rate : 69.00 | | person : meyers.jack | | participation (5 of 26) | =+====================================+= | project : la-102 | | billing_rate : 69.00 | | person : meyers.jim | | participation (6 of 26) | =+====================================+= | project : la-334 | | billing_rate : | | person : lake-apts.tom | | participation (7 of 26) | =+====================================+= | project : la-334 | | billing_rate : | | person : lakeside.dave | | participation (8 of 26) | =+====================================+= | project : la-334 | | billing_rate : 69.00 | | person : meyers.jack | | participation (9 of 26) | =+====================================+= | project : la-334 | | billing_rate : 69.00 | | person : meyers.jim | | participation (10 of 26) | =+====================================+= | project : lt-802 | | billing_rate : | | person : lakeside.amy | | participation (11 of 26) | =+====================================+= | project : lt-802 | | billing_rate : 55.00 | | person : meyers.hill | | participation (12 of 26) | =+====================================+= | project : lt-802 | | billing_rate : 69.00 | | person : meyers.jack | | participation (13 of 26) | =+====================================+= | project : lt-802 | | billing_rate : 69.00 | | person : meyers.jim | | participation (14 of 26) | =+====================================+= | project : overhead | | billing_rate : 0.00 | | person : meyers.jack | \ / timeslip +------------------------------+ | workitem.status | sum(hours) | +-----------------+------------+ | | 3.00 | (1 row) | participation (15 of 26) | =+====================================+= | project : smak | | billing_rate : 135.00 | | person : acorn.hideo | | participation (16 of 26) | =+====================================+= | project : smak | | billing_rate : 65.50 | | person : meyers.hill | | participation (17 of 26) | =+====================================+= | project : smak | | billing_rate : 65.50 | | person : meyers.jack | | participation (18 of 26) | =+====================================+= | project : smak | | billing_rate : 35.50 | | person : meyers.jim | | participation (19 of 26) | =+====================================+= | project : smak | | billing_rate : | | person : smith.jack | | participation (20 of 26) | =+====================================+= | project : smak | | billing_rate : | | person : smith.maggy | | participation (21 of 26) | =+====================================+= | project : smbl | | billing_rate : 135.00 | | person : acorn.hideo | \ / timeslip +------------------------------+ | workitem.status | sum(hours) | +-----------------+------------+ | | 13.00 | (1 row) | participation (22 of 26) | =+====================================+= | project : smbl | | billing_rate : 65.50 | | person : meyers.jack | \ / timeslip +------------------------------+ | workitem.status | sum(hours) | +-----------------+------------+ | | 10.00 | (1 row) | participation (23 of 26) | =+====================================+= | project : smbl | | billing_rate : | | person : smith.maggy | | participation (24 of 26) | =+====================================+= | project : smen | | billing_rate : 65.50 | | person : meyers.jack | | participation (25 of 26) | =+====================================+= | project : smen | | billing_rate : 65.50 | | person : meyers.jim | | participation (26 of 26) | =+====================================+= | project : smen | | billing_rate : | | person : smith.maggy | ----- /participation/timeslip{workitem.status^,sum(hours)}/ - uri: /op:organization[lakeside]{id(),count("op":organization), count((op:organization))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+------------------------------------------------------------+- | id() | count(op:organization) | count(op:organization) | -+----------+------------------------+------------------------+- | lakeside | 2 | 2 | (1 row) ----- /op:organization[lakeside]{id(),count("op":organization),count(op:organization)}/ - uri: /op:organization[lakeside]{id(),count(op:organization)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+-----------------------------------+- | id() | count(op:organization) | -+----------+------------------------+- | lakeside | 2 | (1 row) ----- /op:organization[lakeside]{id(),count(op:organization)}/ - uri: /organization{org_id}/person{nickname,count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+=======================================+= | org_id : acorn | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | hideo | 2 | (1 row) | organization (2 of 7) | =+=======================================+= | org_id : lake-apts | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | tom | 2 | (1 row) | organization (3 of 7) | =+=======================================+= | org_id : lake-carmen | | organization (4 of 7) | =+=======================================+= | org_id : lakeside | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | amy | 1 | | dave | 2 | (2 rows) | organization (5 of 7) | =+=======================================+= | org_id : meyers | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | hill | 3 | | jack | 7 | | jim | 5 | (3 rows) | organization (6 of 7) | =+=======================================+= | org_id : meyers_elec | | organization (7 of 7) | =+=======================================+= | org_id : smith | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | jack | 1 | | jose | 0 | | maggy | 3 | (3 rows) ----- /organization{org_id}/person{nickname,count(participation)}/ - uri: /organization{org_id}/project{status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+=============================+= | org_id : acorn | | organization (2 of 7) | =+=============================+= | org_id : lake-apts | \ / project +-----------------------+ | status | count() | +-------------+---------+ | completed | 2 | (1 row) | organization (3 of 7) | =+=============================+= | org_id : lake-carmen | \ / project +-----------------------+ | status | count() | +-------------+---------+ | planned | 1 | | in-progress | 1 | (2 rows) | organization (4 of 7) | =+=============================+= | org_id : lakeside | | organization (5 of 7) | =+=============================+= | org_id : meyers | | organization (6 of 7) | =+=============================+= | org_id : meyers_elec | | organization (7 of 7) | =+=============================+= | org_id : smith | \ / project +-----------------------+ | status | count() | +-------------+---------+ | completed | 2 | | abandoned | 1 | (2 rows) ----- /organization{org_id}/project{status^,count()}/ - uri: /person{org_id,nickname}/organization{org_id,count(person)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 10) | =+=================================+= | org_id : acorn | | nickname : hideo | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | acorn | 1 | (1 row) | person (2 of 10) | =+=================================+= | org_id : lake-apts | | nickname : tom | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | lake-apts | 1 | (1 row) | person (3 of 10) | =+=================================+= | org_id : lakeside | | nickname : amy | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | lakeside | 2 | (1 row) | person (4 of 10) | =+=================================+= | org_id : lakeside | | nickname : dave | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | lakeside | 2 | (1 row) | person (5 of 10) | =+=================================+= | org_id : meyers | | nickname : hill | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | meyers | 3 | (1 row) | person (6 of 10) | =+=================================+= | org_id : meyers | | nickname : jack | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | meyers | 3 | (1 row) | person (7 of 10) | =+=================================+= | org_id : meyers | | nickname : jim | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | meyers | 3 | (1 row) | person (8 of 10) | =+=================================+= | org_id : smith | | nickname : jack | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | smith | 3 | (1 row) | person (9 of 10) | =+=================================+= | org_id : smith | | nickname : jose | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | smith | 3 | (1 row) | person (10 of 10) | =+=================================+= | org_id : smith | | nickname : maggy | \ / organization +---------------------------+ | org_id | count(person) | +-----------+---------------+ | smith | 3 | (1 row) ----- /person{org_id,nickname}/organization{org_id,count(person)}/ - uri: /person[*.jack]{id()}/org_id{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 2) | =+====================+= | id() : meyers.jack | \ / org_id +--------+ | id() | +--------+ | meyers | (1 row) | person (2 of 2) | =+====================+= | id() : smith.jack | \ / org_id +--------+ | id() | +--------+ | smith | (1 row) ----- /person[*.jack]{id()}/org_id{id()}/ - uri: /person[*.jack,*.tom]{id()}/org_id{id()}/division_of{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 3) | =+=========================+= | id() : lake-apts.tom | \ / org_id (1 of 1) +===================+ | id() : lake-apts | \ / division_of +-------------+ | id() | +-------------+ | lakeside | (1 row) | person (2 of 3) | =+=========================+= | id() : meyers.jack | \ / org_id (1 of 1) +===================+ | id() : meyers | | person (3 of 3) | =+=========================+= | id() : smith.jack | \ / org_id (1 of 1) +===================+ | id() : smith | ----- /person[*.jack,*.tom]{id()}/org_id{id()}/division_of{id()}/ - uri: /person[*.jack,*.tom]{id()}/org_id{id()}?is_active/division_of{id()}?is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 3) | =+=======================+= | id() : lake-apts.tom | | person (2 of 3) | =+=======================+= | id() : meyers.jack | \ / org_id (1 of 1) +=================+ | id() : meyers | | person (3 of 3) | =+=======================+= | id() : smith.jack | ----- /person[*.jack,*.tom]{id()}/org_id{id()}?is_active/division_of{id()}?is_active/ - id: all-and-any tests: - uri: /{all(1,2,3),any(4,5,6)} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: all/any must be the second term of a comparison expression at the position 3: /{all(1,2,3),any(4,5,6)} ^--------- - uri: /{1!=all(0),1!=all(0,2,4,6),1!=all(array(0,2,4,6))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................ | -+------------------------------------------------------------------+- | (1!=all(0)) | (1!=all(0, 2, 4, 6)) | (1!=all(array(0, 2, 4, 6))) | -+-------------+----------------------+-----------------------------+- | true | true | true | (1 row) ----- /{(1!=all(0)),(1!=all(0,2,4,6)),(1!=all(array(0,2,4,6)))}/ - uri: /{1=all(1),1=all(array(-1,-2,-3))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................. | -+-------------------------------------------------------------------+- | (1=all(1)) | (1=all(array((-1), (-2), (-3)))) | -+------------+------------------+-----------------------------------+- | true | true | true | (1 row) ----- /{(1=all(1)),(1=all(array((-1),(-2),(-3))))}/ - uri: /{1=any(1),1=any(0,1,2,3),1=any(array(0,1,2,3))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................. | -+---------------------------------------------------------------+- | (1=any(1)) | (1=any(0, 1, 2, 3)) | (1=any(array(0, 1, 2, 3))) | -+------------+---------------------+----------------------------+- | true | true | true | (1 row) ----- /{(1=any(1)),(1=any(0,1,2,3)),(1=any(array(0,1,2,3)))}/ - uri: /{1!=any(0),1>any(0,1,2,3),1<=any(array(0,1,2,3))} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ............................................................... | -+-----------------------------------------------------------------+- | (1!=any(0)) | (1>any(0, 1, 2, 3)) | (1<=any(array(0, 1, 2, 3))) | -+-------------+---------------------+-----------------------------+- | true | true | true | (1 row) ----- /{(1!=any(0)),(1>any(0,1,2,3)),(1<=any(array(0,1,2,3)))}/ - uri: /organization?exists(person.nickname='jack') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (2 rows) ----- /organization?exists((person.nickname='jack'))/ - uri: /organization?'jack'=any(person.nickname) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (2 rows) ----- /organization?('jack'=any(person.nickname))/ - uri: /organization?every(person.nickname!='jack') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+-------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lake-apts | Lake Shore Apartments | false | lakeside | | lake-carmen | Lake Carmen Towers | true | lakeside | | lakeside | Lake Side Partners, LLC | | | | meyers_elec | Meyers Electric | true | meyers | (5 rows) ----- /organization?every((person.nickname!='jack'))/ - uri: /organization?'jack'!=all(person.nickname) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------------+- | org_id | name | is_active | division_of | -+-------------+-------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | lake-apts | Lake Shore Apartments | false | lakeside | | lake-carmen | Lake Carmen Towers | true | lakeside | | lakeside | Lake Side Partners, LLC | | | | meyers_elec | Meyers Electric | true | meyers | (5 rows) ----- /organization?('jack'!=all(person.nickname))/ - id: comparison-with-pointers tests: - uri: /person{id()}?organization=@organization[meyers] status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-------------+- | id() | -+-------------+- | meyers.hill | | meyers.jack | | meyers.jim | (3 rows) ----- /person{id()}?(organization=@organization[meyers])/ - uri: /person{id()}?organization!=@organization[meyers] status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+---------------+- | id() | -+---------------+- | acorn.hideo | | lake-apts.tom | | lakeside.amy | | lakeside.dave | | smith.jack | | smith.jose | | smith.maggy | (7 rows) ----- /person{id()}?(organization!=@organization[meyers])/ - uri: /project{id(),sponsor}?sponsor==@organization[smith] status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+----------------+- | id() | sponsor | -+------+---------+- | smak | smith | | smbl | smith | | smen | smith | (3 rows) ----- /project{id(),sponsor}?(sponsor==@organization[smith])/ - uri: /project{id(),sponsor}?sponsor!==@organization[smith] status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+------------------------+- | id() | sponsor | -+----------+-------------+- | la-102 | lake-apts | | la-334 | lake-apts | | lt-711 | lake-carmen | | lt-802 | lake-carmen | | overhead | | (5 rows) ----- /project{id(),sponsor}?(sponsor!==@organization[smith])/ - uri: /person{id(),org_id=@organization[foo],org_id==@organization[foo], org_id!=@organization[foo],org_id!==@organization[foo]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-------------------------------------------------------------------------------------------------------------------------------------------+- | id() | (org_id=@organization[foo]) | (org_id==@organization[foo]) | (org_id!=@organization[foo]) | (org_id!==@organization[foo]) | -+---------------+-----------------------------+------------------------------+------------------------------+-------------------------------+- | acorn.hideo | | false | | true | | lake-apts.tom | | false | | true | | lakeside.amy | | false | | true | | lakeside.dave | | false | | true | | meyers.hill | | false | | true | | meyers.jack | | false | | true | | meyers.jim | | false | | true | | smith.jack | | false | | true | | smith.jose | | false | | true | | smith.maggy | | false | | true | (10 rows) ----- /person{id(),(org_id=@organization[foo]),(org_id==@organization[foo]),(org_id!=@organization[foo]),(org_id!==@organization[foo])}/ - uri: /organization{id()}?exists(person=@person[meyers.jack]) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------+- | id() | -+--------------+- | meyers | (1 row) ----- /organization{id()}?exists((person=@person[meyers.jack]))/ - uri: /organization{id(),exists(person=@person[meyers.jack])} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------+- | id() | exists((person=@person[meyers.jack])) | -+-------------+---------------------------------------+- | acorn | false | | lake-apts | false | | lake-carmen | false | | lakeside | false | | meyers | true | | meyers_elec | false | | smith | false | (7 rows) ----- /organization{id(),exists((person=@person[meyers.jack]))}/ - uri: /organization{id(),this()=@organization[meyers]} /*person{id(),this()=@person[meyers.jack]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 5) | =+=====================================================+= | id() : acorn | | (this()=@organization[meyers]) : false | \ / person +-----------------------------------------------+ | id() | (this()=@person[meyers.jack]) | +---------------+-------------------------------+ | acorn.hideo | false | (1 row) | organization (2 of 5) | =+=====================================================+= | id() : lake-apts | | (this()=@organization[meyers]) : false | \ / person +-----------------------------------------------+ | id() | (this()=@person[meyers.jack]) | +---------------+-------------------------------+ | lake-apts.tom | false | (1 row) | organization (3 of 5) | =+=====================================================+= | id() : lakeside | | (this()=@organization[meyers]) : false | \ / person +-----------------------------------------------+ | id() | (this()=@person[meyers.jack]) | +---------------+-------------------------------+ | lakeside.amy | false | | lakeside.dave | false | (2 rows) | organization (4 of 5) | =+=====================================================+= | id() : meyers | | (this()=@organization[meyers]) : true | \ / person +-----------------------------------------------+ | id() | (this()=@person[meyers.jack]) | +---------------+-------------------------------+ | meyers.hill | false | | meyers.jack | true | | meyers.jim | false | (3 rows) | organization (5 of 5) | =+=====================================================+= | id() : smith | | (this()=@organization[meyers]) : false | \ / person +-----------------------------------------------+ | id() | (this()=@person[meyers.jack]) | +---------------+-------------------------------+ | smith.jack | false | | smith.jose | false | | smith.maggy | false | (3 rows) ----- /organization{id(),(this()=@organization[meyers])}/*person{id(),(this()=@person[meyers.jack])}/ - id: projections tests: - uri: /op:organization{id(),count(person)}?exists(person.license) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+--------------------------+- | id() | count(person) | -+----------+---------------+- | acorn | 1 | | lakeside | 2 | | meyers | 3 | | smith | 3 | (4 rows) ----- /op:organization{id(),count(person)}?exists(person.license)/ - uri: /op:person{organization.id()^,count()}?license status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:person | -+-----------------------------+- | organization.id() | count() | -+-------------------+---------+- | acorn | 1 | | lakeside | 1 | | meyers | 3 | | smith | 2 | (4 rows) ----- /op:person{organization.id()^,count()}?license/ - uri: /op:organization{is_active^,count(),count(person),count(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+------------------------------------------------------+- | is_active | count() | count(person) | count(project) | -+-----------+---------+---------------+----------------+- | false | 2 | 4 | 5 | | true | 4 | 4 | 2 | | | 1 | 2 | 0 | (3 rows) ----- /op:organization{is_active^,count(),count(person),count(project)}/ - uri: /op:organization{is_active^,count(person)^,count(),count(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+------------------------------------------------------+- | is_active | count(person) | count() | count(project) | -+-----------+---------------+---------+----------------+- | false | 1 | 1 | 2 | | false | 3 | 1 | 3 | | true | 0 | 2 | 2 | | true | 1 | 1 | 0 | | true | 3 | 1 | 0 | | | 2 | 1 | 0 | (6 rows) ----- /op:organization{is_active^,count(person)^,count(),count(project)}/ - uri: /op:organization{count(person)^}?exists(is_active) status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: a plural expression is required at the position 34: /op:organization{count(person)^}?exists(is_active) ^---------------- - uri: /op:organization{count(person)^,count(),count(project)}?is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+------------------------------------------+- | count(person) | count() | count(project) | -+---------------+---------+----------------+- | 0 | 2 | 2 | | 1 | 1 | 0 | | 3 | 1 | 0 | (3 rows) ----- /op:organization{count(person)^,count(),count(project)}?is_active/ - uri: /op:organization{{count(person),is_active}^, count(),count(project)}?is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+------------------------------------------------------+- | count(person) | is_active | count() | count(project) | -+---------------+-----------+---------+----------------+- | 0 | true | 2 | 2 | | 1 | true | 1 | 0 | | 3 | true | 1 | 0 | (3 rows) ----- /op:organization{{count(person),is_active}^,count(),count(project)}?is_active/ - uri: /op:organization{count(person?license)^,count(),count(project)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | op:organization | -+----------------------------------------------------+- | count((person?license)) | count() | count(project) | -+-------------------------+---------+----------------+- | 0 | 3 | 4 | | 1 | 2 | 0 | | 2 | 1 | 3 | | 3 | 1 | 0 | (4 rows) ----- /op:organization{count((person?license))^,count(),count(project)}/ - uri: /organization{null()^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------+- | null() | count() | -+--------+---------+- | | 7 | (1 row) ----- /organization{null()^,count()}/ - uri: /organization{null()^,count()}?is_active status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+------------------+- | null() | count() | -+--------+---------+- | | 4 | (1 row) ----- /organization{null()^,count()}?is_active/ - uri: /{person{count(),participation{count(),timeslip{count()}}}?organization.is_active} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................................................................................................................ | -+------------------------------------------------------------------------------------------------------------------------------------------------------------------+- | person{count()}?organization.is_active | person{participation{count()}}?organization.is_active | person{participation{timeslip{count()}}}?organization.is_active | -+----------------------------------------+-------------------------------------------------------+-----------------------------------------------------------------+- | 4 | 17 | 5 | (1 row) ----- /{person{count(),participation{count(),timeslip{count()}}}?organization.is_active}/ - uri: /organization{1 hide^,count()}?is_active/{org_id} /person{1 hide^,count()}/{nickname} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+=============================+= | count() : 4 | \ / organization (1 of 4) +=======================+ | org_id : acorn | \ / person (1 of 1) +=================+ | count() : 1 | \ / person +----------+ | nickname | +----------+ | hideo | (1 row) organization (2 of 4) +=======================+ | org_id : lake-carmen | organization (3 of 4) +=======================+ | org_id : meyers | \ / person (1 of 1) +=================+ | count() : 3 | \ / person +----------+ | nickname | +----------+ | hill | | jack | | jim | (3 rows) organization (4 of 4) +=======================+ | org_id : meyers_elec | ----- /organization{(1 hide)^,count()}?is_active/{org_id}/person{(1 hide)^,count()}/{nickname}/ - uri: /organization{1 hide^,count()}?false() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 (no rows) ----- /organization{(1 hide)^,count()}?false()/ - id: segment-and-projections tests: - uri: /project{organization^,status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+--------------------------------------+- | organization | status | count() | -+--------------+-------------+---------+- | lake-apts | completed | 2 | | lake-carmen | planned | 1 | | lake-carmen | in-progress | 1 | | smith | completed | 2 | | smith | abandoned | 1 | | | in-progress | 1 | (6 rows) ----- /project{organization^,status^,count()}/ - uri: /person{org_id^,count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+----------------------------------+- | org_id | count(participation) | -+-----------+----------------------+- | acorn | 2 | | lake-apts | 2 | | lakeside | 3 | | meyers | 15 | | smith | 4 | (5 rows) ----- /person{org_id^,count(participation)}/ - uri: /organization{is_active^,count()}/project{status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+=============================+= | is_active : false | | count() : 2 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | completed | 4 | | abandoned | 1 | (2 rows) | organization (2 of 3) | =+=============================+= | is_active : true | | count() : 4 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | planned | 1 | | in-progress | 1 | (2 rows) | organization (3 of 3) | =+=============================+= | is_active : | | count() : 1 | ----- /organization{is_active^,count()}/project{status^,count()}/ - uri: /organization{is_active^,count()}/project{status} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+=======================+= | is_active : false | | count() : 2 | \ / project +-------------+ | status | +-------------+ | completed | | completed | | abandoned | | completed | | completed | (5 rows) | organization (2 of 3) | =+=======================+= | is_active : true | | count() : 4 | \ / project +-------------+ | status | +-------------+ | planned | | in-progress | (2 rows) | organization (3 of 3) | =+=======================+= | is_active : | | count() : 1 | ----- /organization{is_active^,count()}/project{status}/ - uri: /organization{is_active^,count()} /project{status^,count()} /participation{billing_rate^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+====================================+= | is_active : false | | count() : 2 | \ / project (1 of 2) +==============================+ | status : completed | | count() : 4 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 55.00 | 1 | | 65.50 | 3 | | 69.00 | 4 | | 135.00 | 1 | | | 6 | (5 rows) project (2 of 2) +==============================+ | status : abandoned | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 35.50 | 1 | | 65.50 | 2 | | 135.00 | 1 | | | 2 | (4 rows) | organization (2 of 3) | =+====================================+= | is_active : true | | count() : 4 | \ / project (1 of 2) +==============================+ | status : planned | | count() : 1 | project (2 of 2) +==============================+ | status : in-progress | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 55.00 | 1 | | 69.00 | 2 | | | 1 | (3 rows) | organization (3 of 3) | =+====================================+= | is_active : | | count() : 1 | ----- /organization{is_active^,count()}/project{status^,count()}/participation{billing_rate^,count()}/ - uri: /person{organization.is_active^,count()}/project{status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 3) | =+================================+= | organization.is_active : false | | count() : 4 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | completed | 4 | | abandoned | 2 | (2 rows) | person (2 of 3) | =+================================+= | organization.is_active : true | | count() : 4 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | in-progress | 4 | | completed | 9 | | abandoned | 4 | (3 rows) | person (3 of 3) | =+================================+= | organization.is_active : | | count() : 2 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | in-progress | 1 | | completed | 2 | (2 rows) ----- /person{organization.is_active^,count()}/project{status^,count()}/ - uri: /organization{is_active^,count()}/person{nickname} /participation{project} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+===========================+= | is_active : false | | count() : 2 | \ / person (1 of 4) +=====================+ | nickname : tom | \ / participation +---------------+ | project | +---------------+ | la-102 | | la-334 | (2 rows) person (2 of 4) +=====================+ | nickname : jack | \ / participation +---------------+ | project | +---------------+ | smak | (1 row) person (3 of 4) +=====================+ | nickname : jose | person (4 of 4) +=====================+ | nickname : maggy | \ / participation +---------------+ | project | +---------------+ | smak | | smbl | | smen | (3 rows) | organization (2 of 3) | =+===========================+= | is_active : true | | count() : 4 | \ / person (1 of 4) +=====================+ | nickname : hideo | \ / participation +---------------+ | project | +---------------+ | smak | | smbl | (2 rows) person (2 of 4) +=====================+ | nickname : hill | \ / participation +---------------+ | project | +---------------+ | la-102 | | lt-802 | | smak | (3 rows) person (3 of 4) +=====================+ | nickname : jack | \ / participation +---------------+ | project | +---------------+ | la-102 | | la-334 | | lt-802 | | overhead | | smak | | smbl | | smen | (7 rows) person (4 of 4) +=====================+ | nickname : jim | \ / participation +---------------+ | project | +---------------+ | la-102 | | la-334 | | lt-802 | | smak | | smen | (5 rows) | organization (3 of 3) | =+===========================+= | is_active : | | count() : 1 | \ / person (1 of 2) +=====================+ | nickname : amy | \ / participation +---------------+ | project | +---------------+ | lt-802 | (1 row) person (2 of 2) +=====================+ | nickname : dave | \ / participation +---------------+ | project | +---------------+ | la-102 | | la-334 | (2 rows) ----- /organization{is_active^,count()}/person{nickname}/participation{project}/ - uri: /organization{org_id}/person{nickname} /participation{billing_rate^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+====================================+= | org_id : acorn | \ / person (1 of 1) +==============================+ | nickname : hideo | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 135.00 | 2 | (1 row) | organization (2 of 7) | =+====================================+= | org_id : lake-apts | \ / person (1 of 1) +==============================+ | nickname : tom | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 2 | (1 row) | organization (3 of 7) | =+====================================+= | org_id : lake-carmen | | organization (4 of 7) | =+====================================+= | org_id : lakeside | \ / person (1 of 2) +==============================+ | nickname : amy | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 1 | (1 row) person (2 of 2) +==============================+ | nickname : dave | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 2 | (1 row) | organization (5 of 7) | =+====================================+= | org_id : meyers | \ / person (1 of 3) +==============================+ | nickname : hill | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 55.00 | 2 | | 65.50 | 1 | (2 rows) person (2 of 3) +==============================+ | nickname : jack | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 0.00 | 1 | | 65.50 | 3 | | 69.00 | 3 | (3 rows) person (3 of 3) +==============================+ | nickname : jim | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 35.50 | 1 | | 65.50 | 1 | | 69.00 | 3 | (3 rows) | organization (6 of 7) | =+====================================+= | org_id : meyers_elec | | organization (7 of 7) | =+====================================+= | org_id : smith | \ / person (1 of 3) +==============================+ | nickname : jack | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 1 | (1 row) person (2 of 3) +==============================+ | nickname : jose | person (3 of 3) +==============================+ | nickname : maggy | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 3 | (1 row) ----- /organization{org_id}/person{nickname}/participation{billing_rate^,count()}/ - uri: /organization{division_of^,count()}/person{nickname[0]^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+=============================+= | division_of : lakeside | | count() : 2 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | t | 1 | (1 row) | organization (2 of 3) | =+=============================+= | division_of : meyers | | count() : 1 | | organization (3 of 3) | =+=============================+= | division_of : | | count() : 4 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | a | 1 | | d | 1 | | h | 2 | | j | 4 | | m | 1 | (5 rows) ----- /organization{division_of^,count()}/person{nickname[0]^,count()}/ - uri: /organization{division_of^,count()}/*person{nickname[0]^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 2) | =+=============================+= | division_of : lakeside | | count() : 2 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | t | 1 | (1 row) | organization (2 of 2) | =+=============================+= | division_of : | | count() : 4 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | a | 1 | | d | 1 | | h | 2 | | j | 4 | | m | 1 | (5 rows) ----- /organization{division_of^,count()}/*person{nickname[0]^,count()}/ - uri: /organization{division_of^,count()}/project{status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+=============================+= | division_of : lakeside | | count() : 2 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | planned | 1 | | in-progress | 1 | | completed | 2 | (3 rows) | organization (2 of 3) | =+=============================+= | division_of : meyers | | count() : 1 | | organization (3 of 3) | =+=============================+= | division_of : | | count() : 4 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | completed | 2 | | abandoned | 1 | (2 rows) ----- /organization{division_of^,count()}/project{status^,count()}/ - uri: /organization{division_of^,count()}/*project{status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 2) | =+=============================+= | division_of : lakeside | | count() : 2 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | planned | 1 | | in-progress | 1 | | completed | 2 | (3 rows) | organization (2 of 2) | =+=============================+= | division_of : | | count() : 4 | \ / project +-----------------------+ | status | count() | +-------------+---------+ | completed | 2 | | abandoned | 1 | (2 rows) ----- /organization{division_of^,count()}/*project{status^,count()}/ - uri: /organization{is_active^,count()}/person{nickname,count(participation)} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+=======================================+= | is_active : false | | count() : 2 | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | tom | 2 | | jack | 1 | | jose | 0 | | maggy | 3 | (4 rows) | organization (2 of 3) | =+=======================================+= | is_active : true | | count() : 4 | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | hideo | 2 | | hill | 3 | | jack | 7 | | jim | 5 | (4 rows) | organization (3 of 3) | =+=======================================+= | is_active : | | count() : 1 | \ / person +---------------------------------+ | nickname | count(participation) | +----------+----------------------+ | amy | 1 | | dave | 2 | (2 rows) ----- /organization{is_active^,count()}/person{nickname,count(participation)}/ - uri: /organization{is_active^,count()}/person{nickname[0]^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+=============================+= | is_active : false | | count() : 2 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | j | 2 | | m | 1 | | t | 1 | (3 rows) | organization (2 of 3) | =+=============================+= | is_active : true | | count() : 4 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | h | 2 | | j | 2 | (2 rows) | organization (3 of 3) | =+=============================+= | is_active : | | count() : 1 | \ / person +-----------------------+ | nickname[0] | count() | +-------------+---------+ | a | 1 | | d | 1 | (2 rows) ----- /organization{is_active^,count()}/person{nickname[0]^,count()}/ - uri: /organization{is_active^,count()}/person{nickname[0]^,count()} /participation{billing_rate^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+====================================+= | is_active : false | | count() : 2 | \ / person (1 of 3) +==============================+ | nickname[0] : j | | count() : 2 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 1 | (1 row) person (2 of 3) +==============================+ | nickname[0] : m | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 3 | (1 row) person (3 of 3) +==============================+ | nickname[0] : t | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 2 | (1 row) | organization (2 of 3) | =+====================================+= | is_active : true | | count() : 4 | \ / person (1 of 2) +==============================+ | nickname[0] : h | | count() : 2 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 55.00 | 2 | | 65.50 | 1 | | 135.00 | 2 | (3 rows) person (2 of 2) +==============================+ | nickname[0] : j | | count() : 2 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 0.00 | 1 | | 35.50 | 1 | | 65.50 | 4 | | 69.00 | 6 | (4 rows) | organization (3 of 3) | =+====================================+= | is_active : | | count() : 1 | \ / person (1 of 2) +==============================+ | nickname[0] : a | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 1 | (1 row) person (2 of 2) +==============================+ | nickname[0] : d | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | | 2 | (1 row) ----- /organization{is_active^,count()}/person{nickname[0]^,count()}/participation{billing_rate^,count()}/ - uri: /organization{org_id}/person{nickname[0]^,count()} /participation{project.status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+======================================+= | org_id : acorn | \ / person (1 of 1) +================================+ | nickname[0] : h | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 1 | | abandoned | 1 | (2 rows) | organization (2 of 7) | =+======================================+= | org_id : lake-apts | \ / person (1 of 1) +================================+ | nickname[0] : t | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 2 | (1 row) | organization (3 of 7) | =+======================================+= | org_id : lake-carmen | | organization (4 of 7) | =+======================================+= | org_id : lakeside | \ / person (1 of 2) +================================+ | nickname[0] : a | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | in-progress | 1 | (1 row) person (2 of 2) +================================+ | nickname[0] : d | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 2 | (1 row) | organization (5 of 7) | =+======================================+= | org_id : meyers | \ / person (1 of 2) +================================+ | nickname[0] : h | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | in-progress | 1 | | completed | 1 | | abandoned | 1 | (3 rows) person (2 of 2) +================================+ | nickname[0] : j | | count() : 2 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | in-progress | 3 | | completed | 7 | | abandoned | 2 | (3 rows) | organization (6 of 7) | =+======================================+= | org_id : meyers_elec | | organization (7 of 7) | =+======================================+= | org_id : smith | \ / person (1 of 2) +================================+ | nickname[0] : j | | count() : 2 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | abandoned | 1 | (1 row) person (2 of 2) +================================+ | nickname[0] : m | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 2 | | abandoned | 1 | (2 rows) ----- /organization{org_id}/person{nickname[0]^,count()}/participation{project.status^,count()}/ - uri: /organization{org_id}/project{status^,count()}/participation{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 7) | =+====================================+= | org_id : acorn | | organization (2 of 7) | =+====================================+= | org_id : lake-apts | \ / project (1 of 1) +==============================+ | status : completed | | count() : 2 | \ / participation +------------------------+ | id() | +------------------------+ | la-102.(lake-apts.tom) | | la-102.(lakeside.dave) | | la-102.(meyers.hill) | | la-102.(meyers.jack) | | la-102.(meyers.jim) | | la-334.(lake-apts.tom) | | la-334.(lakeside.dave) | | la-334.(meyers.jack) | | la-334.(meyers.jim) | (9 rows) | organization (3 of 7) | =+====================================+= | org_id : lake-carmen | \ / project (1 of 2) +==============================+ | status : planned | | count() : 1 | project (2 of 2) +==============================+ | status : in-progress | | count() : 1 | \ / participation +------------------------+ | id() | +------------------------+ | lt-802.(lakeside.amy) | | lt-802.(meyers.hill) | | lt-802.(meyers.jack) | | lt-802.(meyers.jim) | (4 rows) | organization (4 of 7) | =+====================================+= | org_id : lakeside | | organization (5 of 7) | =+====================================+= | org_id : meyers | | organization (6 of 7) | =+====================================+= | org_id : meyers_elec | | organization (7 of 7) | =+====================================+= | org_id : smith | \ / project (1 of 2) +==============================+ | status : completed | | count() : 2 | \ / participation +------------------------+ | id() | +------------------------+ | smbl.(acorn.hideo) | | smbl.(meyers.jack) | | smbl.(smith.maggy) | | smen.(meyers.jack) | | smen.(meyers.jim) | | smen.(smith.maggy) | (6 rows) project (2 of 2) +==============================+ | status : abandoned | | count() : 1 | \ / participation +------------------------+ | id() | +------------------------+ | smak.(acorn.hideo) | | smak.(meyers.hill) | | smak.(meyers.jack) | | smak.(meyers.jim) | | smak.(smith.jack) | | smak.(smith.maggy) | (6 rows) ----- /organization{org_id}/project{status^,count()}/participation{id()}/ - uri: /organization{is_active^,count()}/person{nickname[0]^,count()} /participation{project.status^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+======================================+= | is_active : false | | count() : 2 | \ / person (1 of 3) +================================+ | nickname[0] : j | | count() : 2 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | abandoned | 1 | (1 row) person (2 of 3) +================================+ | nickname[0] : m | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 2 | | abandoned | 1 | (2 rows) person (3 of 3) +================================+ | nickname[0] : t | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 2 | (1 row) | organization (2 of 3) | =+======================================+= | is_active : true | | count() : 4 | \ / person (1 of 2) +================================+ | nickname[0] : h | | count() : 2 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | in-progress | 1 | | completed | 2 | | abandoned | 2 | (3 rows) person (2 of 2) +================================+ | nickname[0] : j | | count() : 2 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | in-progress | 3 | | completed | 7 | | abandoned | 2 | (3 rows) | organization (3 of 3) | =+======================================+= | is_active : | | count() : 1 | \ / person (1 of 2) +================================+ | nickname[0] : a | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | in-progress | 1 | (1 row) person (2 of 2) +================================+ | nickname[0] : d | | count() : 1 | \ / participation +--------------------------+ | project.status | count() | +----------------+---------+ | completed | 2 | (1 row) ----- /organization{is_active^,count()}/person{nickname[0]^,count()}/participation{project.status^,count()}/ - uri: /organization{is_active^,count()}/project{status^,count()} /participation{billing_rate^,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+====================================+= | is_active : false | | count() : 2 | \ / project (1 of 2) +==============================+ | status : completed | | count() : 4 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 55.00 | 1 | | 65.50 | 3 | | 69.00 | 4 | | 135.00 | 1 | | | 6 | (5 rows) project (2 of 2) +==============================+ | status : abandoned | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 35.50 | 1 | | 65.50 | 2 | | 135.00 | 1 | | | 2 | (4 rows) | organization (2 of 3) | =+====================================+= | is_active : true | | count() : 4 | \ / project (1 of 2) +==============================+ | status : planned | | count() : 1 | project (2 of 2) +==============================+ | status : in-progress | | count() : 1 | \ / participation +------------------------+ | billing_rate | count() | +--------------+---------+ | 55.00 | 1 | | 69.00 | 2 | | | 1 | (3 rows) | organization (3 of 3) | =+====================================+= | is_active : | | count() : 1 | ----- /organization{is_active^,count()}/project{status^,count()}/participation{billing_rate^,count()}/ - uri: /project{sponsor{name^},count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+----------------------------------+- | sponsor{name} | count() | -+------------------------+---------+- | Lake Carmen Towers | 2 | | Lake Shore Apartments | 2 | | Rudgen, Taupe, & Smith | 3 | | | 1 | (4 rows) ----- /project{sponsor{name^},count()}/ - uri: /project{sponsor{name^}?!is_active,count()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+--------------------------------------+- | sponsor{name}?(!is_active) | count() | -+----------------------------+---------+- | Lake Shore Apartments | 2 | | Rudgen, Taupe, & Smith | 3 | | | 3 | (3 rows) ----- /project{sponsor{name^}?(!is_active),count()}/ - uri: /{1+1}/{2+2}/{3+3} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | (1 of 1) | =+===================+= | (1+1) : 2 | \ / (1 of 1) +=============+ | (2+2) : 4 | \ / ..... +-------+ | (3+3) | +-------+ | 6 | (1 row) ----- /{(1+1)}/{(2+2)}/{(3+3)}/ - uri: /organization[meyers]{id()}/{name,is_active}/person{id()}/{full_name,license} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+==============================================+= | id() : meyers | \ / organization (1 of 1) +========================================+ | name : Meyers Construction | | is_active : true | \ / person (1 of 3) +==================================+ | id() : meyers.hill | \ / person +----------------------------+ | full_name | license | +------------------+---------+ | Mark Thomas Hill | V345FMP | (1 row) person (2 of 3) +==================================+ | id() : meyers.jack | \ / person +----------------------------+ | full_name | license | +------------------+---------+ | Jack C. Meyers | 2GAT123 | (1 row) person (3 of 3) +==================================+ | id() : meyers.jim | \ / person +----------------------------+ | full_name | license | +------------------+---------+ | Jim Meyers | 2GAT138 | (1 row) ----- /organization[meyers]{id()}/{name,is_active}/person{id()}/{full_name,license}/ - uri: /project{status^,count()}/{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project (1 of 4) | =+=======================+= | status : planned | | count() : 1 | \ / project +----------+ | id() | +----------+ | lt-711 | (1 row) | project (2 of 4) | =+=======================+= | status : in-progress | | count() : 2 | \ / project +----------+ | id() | +----------+ | lt-802 | | overhead | (2 rows) | project (3 of 4) | =+=======================+= | status : completed | | count() : 4 | \ / project +----------+ | id() | +----------+ | la-102 | | la-334 | | smbl | | smen | (4 rows) | project (4 of 4) | =+=======================+= | status : abandoned | | count() : 1 | \ / project +----------+ | id() | +----------+ | smak | (1 row) ----- /project{status^,count()}/{id()}/ - uri: /organization[smith]{id()}/project{status^,count()}/{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+===========================+= | id() : smith | \ / project (1 of 2) +=====================+ | status : completed | | count() : 2 | \ / project +---------+ | id() | +---------+ | smbl | | smen | (2 rows) project (2 of 2) +=====================+ | status : abandoned | | count() : 1 | \ / project +---------+ | id() | +---------+ | smak | (1 row) ----- /organization[smith]{id()}/project{status^,count()}/{id()}/ - uri: /organization{id()}/*project{status^,count()}/*{id(),sponsor,status} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 3) | =+================================================+= | id() : lake-apts | \ / project (1 of 1) +==========================================+ | status : completed | | count() : 2 | \ / project +------------------------------------+ | id() | sponsor | status | +--------+-------------+-------------+ | la-102 | lake-apts | completed | | la-334 | lake-apts | completed | (2 rows) | organization (2 of 3) | =+================================================+= | id() : lake-carmen | \ / project (1 of 2) +==========================================+ | status : planned | | count() : 1 | \ / project +------------------------------------+ | id() | sponsor | status | +--------+-------------+-------------+ | lt-711 | lake-carmen | planned | (1 row) project (2 of 2) +==========================================+ | status : in-progress | | count() : 1 | \ / project +------------------------------------+ | id() | sponsor | status | +--------+-------------+-------------+ | lt-802 | lake-carmen | in-progress | (1 row) | organization (3 of 3) | =+================================================+= | id() : smith | \ / project (1 of 2) +==========================================+ | status : completed | | count() : 2 | \ / project +------------------------------------+ | id() | sponsor | status | +--------+-------------+-------------+ | smbl | smith | completed | | smen | smith | completed | (2 rows) project (2 of 2) +==========================================+ | status : abandoned | | count() : 1 | \ / project +------------------------------------+ | id() | sponsor | status | +--------+-------------+-------------+ | smak | smith | abandoned | (1 row) ----- /organization{id()}/*project{status^,count()}/*{id(),sponsor,status}/ - uri: /project{status^,count()}/{id()}/participation status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project (1 of 4) | =+=====================================================+= | status : planned | | count() : 1 | \ / project (1 of 1) +===============================================+ | id() : lt-711 | | project (2 of 4) | =+=====================================================+= | status : in-progress | | count() : 2 | \ / project (1 of 2) +===============================================+ | id() : lt-802 | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | lt-802 | | lakeside.amy | | lt-802 | 55.00 | meyers.hill | | lt-802 | 69.00 | meyers.jack | | lt-802 | 69.00 | meyers.jim | (4 rows) project (2 of 2) +===============================================+ | id() : overhead | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | overhead | 0.00 | meyers.jack | (1 row) | project (3 of 4) | =+=====================================================+= | status : completed | | count() : 4 | \ / project (1 of 4) +===============================================+ | id() : la-102 | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | la-102 | | lake-apts.tom | | la-102 | | lakeside.dave | | la-102 | 55.00 | meyers.hill | | la-102 | 69.00 | meyers.jack | | la-102 | 69.00 | meyers.jim | (5 rows) project (2 of 4) +===============================================+ | id() : la-334 | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | la-334 | | lake-apts.tom | | la-334 | | lakeside.dave | | la-334 | 69.00 | meyers.jack | | la-334 | 69.00 | meyers.jim | (4 rows) project (3 of 4) +===============================================+ | id() : smbl | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | smbl | 135.00 | acorn.hideo | | smbl | 65.50 | meyers.jack | | smbl | | smith.maggy | (3 rows) project (4 of 4) +===============================================+ | id() : smen | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | smen | 65.50 | meyers.jack | | smen | 65.50 | meyers.jim | | smen | | smith.maggy | (3 rows) | project (4 of 4) | =+=====================================================+= | status : abandoned | | count() : 1 | \ / project (1 of 1) +===============================================+ | id() : smak | \ / participation +-----------------------------------------+ | project | billing_rate | person | +----------+--------------+---------------+ | smak | 135.00 | acorn.hideo | | smak | 65.50 | meyers.hill | | smak | 65.50 | meyers.jack | | smak | 35.50 | meyers.jim | | smak | | smith.jack | | smak | | smith.maggy | (6 rows) ----- /project{status^,count()}/{id()}/participation/ - uri: /person{org_id^,count()}?license/{*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 4) | =+===================================================================+= | org_id : acorn | | count() : 1 | \ / person +-------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +----------+----------+------------------+---------+----------+ | acorn | hideo | WATANABE Hideo | CQB421 | | (1 row) | person (2 of 4) | =+===================================================================+= | org_id : lakeside | | count() : 1 | \ / person +-------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +----------+----------+------------------+---------+----------+ | lakeside | dave | David Jones | 953OKG | "" | (1 row) | person (3 of 4) | =+===================================================================+= | org_id : meyers | | count() : 3 | \ / person +-------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +----------+----------+------------------+---------+----------+ | meyers | hill | Mark Thomas Hill | V345FMP | 555-2106 | | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers | jim | Jim Meyers | 2GAT138 | | (3 rows) | person (4 of 4) | =+===================================================================+= | org_id : smith | | count() : 2 | \ / person +-------------------------------------------------------------+ | org_id | nickname | full_name | license | phone | +----------+----------+------------------+---------+----------+ | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | (2 rows) ----- /person{org_id^,count()}?license/{*}/ - id: /describe() tests: - uri: /organization/describe() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | request (1 of 1) | =+===========================================================================+= | title : /organization/describe() | | authority : owner | | perspective : owner | \ / segment (1 of 1) +=====================================================================+ | label : 0 | | parent : | | title : organization | | aspect : organization | \ / element +---------------------------------------------------------------+ | title | domain | aspect | field | +-------------+--------------------+--------------+-------------+ | org_id | pg_catalog:varchar | organization | org_id | | name | pg_catalog:varchar | organization | name | | is_active | pg_catalog:bool | organization | is_active | | division_of | pg_catalog:varchar | organization | division_of | (4 rows) ----- /organization/describe() - uri: /organization/person/describe() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | request (1 of 1) | =+===========================================================================+= | title : /organization/person/describe() | | authority : owner | | perspective : owner | \ / segment (1 of 2) +=====================================================================+ | label : 0 | | parent : | | title : organization | | aspect : organization | \ / element +---------------------------------------------------------------+ | title | domain | aspect | field | +-------------+--------------------+--------------+-------------+ | org_id | pg_catalog:varchar | organization | org_id | | name | pg_catalog:varchar | organization | name | | is_active | pg_catalog:bool | organization | is_active | | division_of | pg_catalog:varchar | organization | division_of | (4 rows) segment (2 of 2) +=====================================================================+ | label : 1 | | parent : 0 | | title : person | | aspect : person | \ / element +---------------------------------------------------------------+ | title | domain | aspect | field | +-------------+--------------------+--------------+-------------+ | org_id | pg_catalog:varchar | person | org_id | | nickname | pg_catalog:varchar | person | nickname | | full_name | pg_catalog:varchar | person | full_name | | license | pg_catalog:varchar | person | license | | phone | pg_catalog:varchar | person | phone | (5 rows) ----- /organization/person/describe() - uri: /organization/person/describe().json(indent=2) status: 200 OK headers: - [Content-Type, application/x-javascript] body: "[\n {\n \"authority\": \"owner\", \n \"perspective\": \"owner\", \n \"segment\": [\n {\n \"aspect\": \"organization\", \n \ \"element\": [\n {\n \"aspect\": \"organization\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"org_id\", \n \"title\": \"org_id\"\n }, \n {\n \ \"aspect\": \"organization\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"name\", \n \"title\": \"name\"\n }, \n {\n \"aspect\": \"organization\", \n \"domain\": \"pg_catalog:bool\", \n \"field\": \"is_active\", \n \"title\": \"is_active\"\n }, \n {\n \"aspect\": \"organization\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"division_of\", \n \"title\": \"division_of\"\n }\n \ ], \n \"label\": \"0\", \n \"parent\": null, \n \"title\": \"organization\"\n }, \n {\n \"aspect\": \"person\", \n \ \"element\": [\n {\n \"aspect\": \"person\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"org_id\", \n \"title\": \"org_id\"\n }, \n {\n \ \"aspect\": \"person\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"nickname\", \n \"title\": \"nickname\"\n \ }, \n {\n \"aspect\": \"person\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"full_name\", \n \"title\": \"full_name\"\n }, \n {\n \"aspect\": \"person\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"license\", \n \"title\": \"license\"\n }, \n {\n \ \"aspect\": \"person\", \n \"domain\": \"pg_catalog:varchar\", \n \"field\": \"phone\", \n \"title\": \"phone\"\n \ }\n ], \n \"label\": \"1\", \n \"parent\": \"0\", \n \"title\": \"person\"\n }\n ], \n \"title\": \"/organization/person/describe().json(indent=2)\"\n }\n]\n" - uri: /organization{id(),array(person)}?exists(project)/describe() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | request (1 of 1) | =+==============================================================================+= | title : "/organization{id(),array(person)}?exists(project)/describe()" | | authority : owner | | perspective : owner | \ / segment (1 of 1) +=========================================================+ | label : 0 | | parent : | | title : organization | | aspect : organization | \ / element +---------------------------------------------------+ | title | domain | aspect | field | +---------------+------------+--------------+-------+ | id() | string | organization | | | array(person) | "string[]" | | | (2 rows) ----- /organization{id(),array(person)}?exists(project)/describe() - uri: /organization/describe()/describe() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | request (1 of 1) | =+====================================================+= | title : /organization/describe().describe() | | authority : owner | | perspective : owner | \ / segment (1 of 3) +==============================================+ | label : 0 | | parent : | | title : request | | aspect : | \ / element +----------------------------------------+ | title | domain | aspect | field | +-------------+---------+--------+-------+ | title | string | | | | authority | string | | | | perspective | string | | | (3 rows) segment (2 of 3) +==============================================+ | label : 1 | | parent : 0 | | title : segment | | aspect : | \ / element +----------------------------------------+ | title | domain | aspect | field | +-------------+---------+--------+-------+ | label | integer | | | | parent | integer | | | | title | string | | | | aspect | string | | | (4 rows) segment (3 of 3) +==============================================+ | label : 2 | | parent : 1 | | title : element | | aspect : | \ / element +----------------------------------------+ | title | domain | aspect | field | +-------------+---------+--------+-------+ | title | string | | | | domain | string | | | | aspect | string | | | | field | string | | | (4 rows) ----- /organization/describe().describe() - uri: /meta()/describe() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | request (1 of 1) | =+==================================================================+= | title : /meta().describe() | | authority : owner | | perspective : owner | \ / segment (1 of 9) +============================================================+ | label : 0 | | parent : | | title : catalog | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | current_authority.id | string | | | | current_perspective.id | string | | | (2 rows) segment (2 of 9) +============================================================+ | label : 1 | | parent : 0 | | title : authority | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | id | string | | | | name | "string[]" | | | (2 rows) segment (3 of 9) +============================================================+ | label : 2 | | parent : 0 | | title : perspective | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | id | string | | | | name | "string[]" | | | | is_default | boolean | | | (3 rows) segment (4 of 9) +============================================================+ | label : 3 | | parent : 0 | | title : aspect | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | id | string | | | | name | "string[]" | | | | is_readable | boolean | | | | is_writable | boolean | | | (4 rows) segment (5 of 9) +============================================================+ | label : 4 | | parent : 3 | | title : field | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | id | string | | | | name | "string[]" | | | | position | integer | | | | is_public | boolean | | | | is_column | boolean | | | | is_chain | boolean | | | (6 rows) segment (6 of 9) +============================================================+ | label : 5 | | parent : 4 | | title : column | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | domain | string | | | | has_default | boolean | | | (2 rows) segment (7 of 9) +============================================================+ | label : 6 | | parent : 4 | | title : chain | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | target.id | string | | | | reverse.id | string | | | | duplicate.id | string | | | | is_plural | boolean | | | (4 rows) segment (8 of 9) +============================================================+ | label : 7 | | parent : 3 | | title : identity | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | tag.id | string | | | (1 row) segment (9 of 9) +============================================================+ | label : 8 | | parent : 7 | | title : label | | aspect : | \ / element +------------------------------------------------------+ | title | domain | aspect | field | +------------------------+------------+--------+-------+ | field.id | string | | | | is_link | boolean | | | (2 rows) ----- /meta().describe() - uri: /{2+2,1 div 0}/describe() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | request (1 of 1) | =+==================================================+= | title : "/{(2+2),(1 div 0)}/describe()" | | authority : owner | | perspective : owner | \ / segment (1 of 1) +============================================+ | label : 0 | | parent : | | title : "" | | aspect : | \ / element +--------------------------------------+ | title | domain | aspect | field | +-----------+---------+--------+-------+ | (2+2) | integer | | | | (1 div 0) | integer | | | (2 rows) ----- /{(2+2),(1 div 0)}/describe() - uri: /describe() status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid query: front command is unable to delegate a request at the position 1: /describe() ^---------- - id: /version() tests: - uri: /version() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | version | -+------------+- | version | -+------------+- | 0.13-TRUNK | (1 row) ----- /version() - uri: /version().xml status: 200 OK headers: - [Content-Type, text/xml; charset=UTF-8] body: | - uri: /organization/version() status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid query: no segments is required at the position 2: /organization/version() ^----------- - id: expectations tests: - uri: /organization[meyers]/select(expect=1) status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect=1) - uri: /organization[thom]/select(expect=1) status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected 1 row, got 0 at the position 21: /organization[thom]/select(expect=1) ^--------------- - uri: /organization[meyers,smith,acorn]/select(expect=1) status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected 1 row, got 3 at the position 35: /organization[meyers,smith,acorn]/select(expect=1) ^--------------- - uri: /organization[meyers]/select(expect='*') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect='*') - uri: /organization[thom]/select(expect='*') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 (no rows) ----- /organization[thom]/select(expect='*') - uri: /organization[meyers,smith,acorn]/select(expect='*') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (3 rows) ----- /organization[meyers,smith,acorn]/select(expect='*') - uri: /organization[meyers]/select(expect='+') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect='+') - uri: /organization[thom]/select(expect='+') status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected at least 1 row, got 0 at the position 21: /organization[thom]/select(expect='+') ^----------------- - uri: /organization[meyers,smith,acorn]/select(expect='+') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (3 rows) ----- /organization[meyers,smith,acorn]/select(expect='+') - uri: /organization[meyers]/select(expect='?') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect='?') - uri: /organization[thom]/select(expect='?') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 (no rows) ----- /organization[thom]/select(expect='?') - uri: /organization[meyers,smith,acorn]/select(expect='?') status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected at most 1 row, got 3 at the position 35: /organization[meyers,smith,acorn]/select(expect='?') ^----------------- - uri: /organization[meyers]/select(expect='1:2') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect='1:2') - uri: /organization[thom]/select(expect='1:2') status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected at least 1 row, got 0 at the position 21: /organization[thom]/select(expect='1:2') ^------------------- - uri: /organization[meyers,smith,acorn]/select(expect='1:2') status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected at most 2 rows, got 3 at the position 35: /organization[meyers,smith,acorn]/select(expect='1:2') ^------------------- - uri: /organization[meyers]/select(expect='1:') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect='1:') - uri: /organization[thom]/select(expect='1:') status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected at least 1 row, got 0 at the position 21: /organization[thom]/select(expect='1:') ^------------------ - uri: /organization[meyers,smith,acorn]/select(expect='1:') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | acorn | Acorn Architecture | true | | | meyers | Meyers Construction | true | | | smith | Rudgen, Taupe, & Smith | false | | (3 rows) ----- /organization[meyers,smith,acorn]/select(expect='1:') - uri: /organization[meyers]/select(expect=':2') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+--------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+---------------------+-----------+-------------+- | meyers | Meyers Construction | true | | (1 row) ----- /organization[meyers]/select(expect=':2') - uri: /organization[thom]/select(expect=':2') status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 (no rows) ----- /organization[thom]/select(expect=':2') - uri: /organization[meyers,smith,acorn]/select(expect=':2') status: 409 Conflict headers: - [Content-Type, text/plain; charset=UTF-8] body: | failed expectation: expected at most 2 rows, got 3 at the position 35: /organization[meyers,smith,acorn]/select(expect=':2') ^------------------ - uri: /organization[meyers]/person/select(expect=1) status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid argument: unable to apply expect in a multi-segment query at the position 30: /organization[meyers]/person/select(expect=1) ^--------------- - id: ordering tests: - uri: /person{{org_id+,nickname+}+} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+----------------------+- | org_id | nickname | -+-----------+----------+- | acorn | hideo | | lake-apts | tom | | lakeside | amy | | lakeside | dave | | meyers | hill | | meyers | jack | | meyers | jim | | smith | jack | | smith | jose | | smith | maggy | (10 rows) ----- /person{{org_id+,nickname+}+}/ - uri: /person{{org_id-,nickname-}-} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+----------------------+- | org_id | nickname | -+-----------+----------+- | acorn | hideo | | lake-apts | tom | | lakeside | amy | | lakeside | dave | | meyers | hill | | meyers | jack | | meyers | jim | | smith | jack | | smith | jose | | smith | maggy | (10 rows) ----- /person{{org_id-,nickname-}-}/ - id: unsorted-tests tests: - uri: /{} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ... | +-----+ (1 row) ----- /{}/ - uri: /{(organization as active_organizations_1){count(is_active)}, ({organization{count(is_active)}}) as active_organization_2} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ................................................................ | -+------------------------------------------------------------------+- | active_organizations_1{count(is_active)} | active_organization_2 | -+------------------------------------------+-----------------------+- | 4 | 4 | (1 row) ----- /{(organization as active_organizations_1){count(is_active)},({organization{count(is_active)}} as active_organization_2)}/ - uri: /project{name[:prj_id.length()]} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | project | -+------------------------+- | name[:prj_id.length()] | -+------------------------+- | Kitche | | Siding | | Updati | | Toaste | | "General " | | Smit | | Smit | | Smit | (8 rows) ----- /project{name[:prj_id.length()]}/ - uri: /person?nickname~'j' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person | -+-----------------------------------------------------------+- | org_id | nickname | full_name | license | phone | -+--------+----------+------------------+---------+----------+- | meyers | jack | Jack C. Meyers | 2GAT123 | 555-2106 | | meyers | jim | Jim Meyers | 2GAT138 | | | smith | jack | Jack Taupe | THX138 | 555-4386 | | smith | jose | José N. Marteñes | JJZ109 | 555-4385 | (4 rows) ----- /person?(nickname~'j')/ - uri: /private_info{address.*} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | private_info | -+------------------------------------------------------------------------------+- | address.lines | address.region | address.postal_code | -+------------------------------+-------------------------+---------------------+- | | {~, ~, ~} | 38234 | | | {~, ~, ~} | | | [1 Rockway Park Dr., Apt #2] | {Santa Monica, CA, USA} | 03884-0394 | | | {Roanoke, VA, USA} | 38234 | | [34 Beltway Ave.] | {Santa Monica, CA, USA} | 03884-0394 | | | {~, ~, ~} | | | [] | {~, ~, ~} | 03995-3434 | (7 rows) ----- /private_info{address.*}/ - uri: /private_info{address.postal_code} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | private_info | -+---------------------+- | address.postal_code | -+---------------------+- | 38234 | | | | 03884-0394 | | 38234 | | 03884-0394 | | | | 03995-3434 | (7 rows) ----- /private_info{address.postal_code}/ - uri: /dependency{id(),dependency_of_workitem_fk,dependency_on_workitem_fk} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | dependency | -+-----------------------------------------------------------------------------+- | id() | dependency_of_workitem_fk | dependency_on_workitem_fk | -+---------------------+---------------------------+---------------------------+- | (smbl.34).(smbl.33) | smbl.34 | smbl.33 | | (smbl.35).(smbl.34) | smbl.35 | smbl.34 | | (smbl.35).(smbl.36) | smbl.35 | smbl.36 | (3 rows) ----- /dependency{id(),dependency_of_workitem_fk,dependency_on_workitem_fk}/ - uri: /person[smith.*]{id()}/organization{id()}/project{id()} status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | person (1 of 3) | =+=============================+= | id() : smith.jack | \ / organization (1 of 1) +=======================+ | id() : smith | \ / project +---------+ | id() | +---------+ | smak | | smbl | | smen | (3 rows) | person (2 of 3) | =+=============================+= | id() : smith.jose | \ / organization (1 of 1) +=======================+ | id() : smith | \ / project +---------+ | id() | +---------+ | smak | | smbl | | smen | (3 rows) | person (3 of 3) | =+=============================+= | id() : smith.maggy | \ / organization (1 of 1) +=======================+ | id() : smith | \ / project +---------+ | id() | +---------+ | smak | | smbl | | smen | (3 rows) ----- /person[smith.*]{id()}/organization{id()}/project{id()}/ - uri: /organization.txt?org_id='smith' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | smith | Rudgen, Taupe, & Smith | false | | (1 row) ----- /organization?(org_id='smith')/txt() - uri: /organization[smith]/person{id()}/select().txt?nickname='jack' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+======================================+= | org_id : smith | | name : Rudgen, Taupe, & Smith | | is_active : false | | division_of : | \ / person +------------+ | id() | +------------+ | smith.jack | (1 row) ----- /organization[smith]/person{id()}?(nickname='jack')/select().txt() - uri: /organization[smith];/project{id()}.txt?sponsor='smith' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization | -+-----------------------------------------------------------+- | org_id | name | is_active | division_of | -+--------+------------------------+-----------+-------------+- | smith | Rudgen, Taupe, & Smith | false | | (1 row) | project | -+---------+- | id() | -+---------+- | smak | | smbl | | smen | (3 rows) ----- /organization[smith];/project{id()}?(sponsor='smith')/txt() - uri: /organization[smith]/(project{id()}?sponsor='smith';person{id()}).txt?nickname='jack' status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | organization (1 of 1) | =+======================================+= | org_id : smith | | name : Rudgen, Taupe, & Smith | | is_active : false | | division_of : | \ / project +---------+ | id() | +---------+ | smak | | smbl | | smen | (3 rows) person +------------+ | id() | +------------+ | smith.jack | (1 row) ----- /organization[smith]/(project{id()}?(sponsor='smith');person{id()}?(nickname='jack'))/txt() - uri: /dependency{workitem} status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | unknown object id: aspect "htsql_regress":"owner"."ws":"dependency" has no choices for workitem; try one of of_item_no, of_prj_id, on_item_no, on_prj_id, dependency_of_workitem_fk, dependency_on_workitem_fk at the position 13: /dependency{workitem} ^------- - uri: /foo?bar/select()?baz status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | unknown object id: perspective "htsql_regress":"owner" has no choices for foo; try one of is_it_weird_, f_u_n:issue, types, weird_identifiers, private_info, organization, participation, person, project, invoice, lineitem, timeslip, test_т, таблица, dependency, workitem, worklist, wsx:issue, meeting, meeting_topic, standing_meeting at the position 2: /foo?bar/select()?baz ^-- - include: test/regress/formatters.yaml output: id: formatters tests: - uri: /{}.txt status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 | ... | +-----+ (1 row) ----- /{}/txt() - uri: /{}.html status: 200 OK headers: - [Content-Type, text/html; charset=UTF-8] body: | /{}/html()
(1 row)
- uri: /{}.json status: 200 OK headers: - [Content-Type, application/x-javascript] body: | [{}] - uri: /{}.yaml status: 200 OK headers: - [Content-Type, application/yaml] body: | - {} - uri: /{}.json(generic=1) status: 200 OK headers: - [Content-Type, application/x-javascript] body: | {"branches": [[{"branches": [], "fields": [], "id": null, "idtag": null, "tag": null}]]} - uri: /{}.yaml(generic=1) status: 200 OK headers: - [Content-Type, application/yaml] body: | branches: - - id: null tag: null idtag: null fields: [] branches: [] - uri: /{}.xml status: 200 OK headers: - [Content-Type, text/xml; charset=UTF-8] body: | <_ /> - uri: /{}.xml(profile=1) status: 200 OK headers: - [Content-Type, text/xml; charset=UTF-8] body: | <_ /> - uri: /{}.csv status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid query: at least one column is required at the position 5: /{}.csv ^-- - uri: /{}.tsv status: 400 Bad Request headers: - [Content-Type, text/plain; charset=UTF-8] body: | invalid query: at least one column is required at the position 5: /{}.tsv ^-- - uri: /{}.txt?false() status: 200 OK headers: - [Content-Type, text/plain; charset=UTF-8] body: |2 (no rows) ----- /{}?false()/txt() - uri: /{}.html?false() status: 200 OK headers: - [Content-Type, text/html; charset=UTF-8] body: | /{}?false()/html()