-- -- 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: invalid input syntax for type lseg: "(3asdf,2 ,3,4r2)" INSERT INTO LSEG_TBL VALUES ('[1,2,3, 4'); ERROR: invalid input syntax for type lseg: "[1,2,3, 4" INSERT INTO LSEG_TBL VALUES ('[(,2),(3,4)]'); ERROR: invalid input syntax for type lseg: "[(,2),(3,4)]" INSERT INTO LSEG_TBL VALUES ('[(1,2),(3,4)'); ERROR: invalid input syntax for type lseg: "[(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)