--
-- LSEG
-- Line segments
--
--DROP TABLE LSEG_TBL;
CREATE TABLE LSEG_TBL (s lseg);
INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)]');
INSERT INTO LSEG_TBL VALUES ('(0,0),(6,6)');
INSERT INTO LSEG_TBL VALUES ('10,-10 ,-3,-4');
INSERT INTO LSEG_TBL VALUES ('[-1e6,2e2,3e5, -4e1]');
INSERT INTO LSEG_TBL VALUES ('(11,22,33,44)');
-- bad values for parser testing
INSERT INTO LSEG_TBL VALUES ('(3asdf,2 ,3,4r2)');
ERROR:  Bad lseg external representation '(3asdf,2 ,3,4r2)'
INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4');
ERROR:  Bad lseg external representation '[1,2,3, 4'
INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]');
ERROR:  Bad lseg external representation '[(,2),(3,4)]'
INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)');
ERROR:  Bad lseg external representation '[(1,2),(3,4)'
select * from LSEG_TBL;
               s               
-------------------------------
 [(1,2),(3,4)]
 [(0,0),(6,6)]
 [(10,-10),(-3,-4)]
 [(-1000000,200),(300000,-40)]
 [(11,22),(33,44)]
(5 rows)

SELECT * FROM LSEG_TBL WHERE s <= lseg '[(1,2),(3,4)]';
       s       
---------------
 [(1,2),(3,4)]
(1 row)

SELECT * FROM LSEG_TBL WHERE (s <-> lseg '[(1,2),(3,4)]') < 10;
         s          
--------------------
 [(1,2),(3,4)]
 [(0,0),(6,6)]
 [(10,-10),(-3,-4)]
(3 rows)

