-- -- PATH -- --DROP TABLE PATH_TBL; CREATE TABLE PATH_TBL (f1 path); INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)]'); INSERT INTO PATH_TBL VALUES (' ( ( 1 , 2 ) , ( 3 , 4 ) ) '); INSERT INTO PATH_TBL VALUES ('[ (0,0),(3,0),(4,5),(1,6) ]'); INSERT INTO PATH_TBL VALUES ('((1,2) ,(3,4 ))'); INSERT INTO PATH_TBL VALUES ('1,2 ,3,4 '); INSERT INTO PATH_TBL VALUES (' [1,2,3, 4] '); INSERT INTO PATH_TBL VALUES ('((10,20))'); -- Only one point INSERT INTO PATH_TBL VALUES ('[ 11,12,13,14 ]'); INSERT INTO PATH_TBL VALUES ('( 11,12,13,14) '); -- bad values for parser testing INSERT INTO PATH_TBL VALUES ('[]'); ERROR: invalid input syntax for type path: "[]" LINE 1: INSERT INTO PATH_TBL VALUES ('[]'); ^ INSERT INTO PATH_TBL VALUES ('[(,2),(3,4)]'); ERROR: invalid input syntax for type path: "[(,2),(3,4)]" LINE 1: INSERT INTO PATH_TBL VALUES ('[(,2),(3,4)]'); ^ INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)'); ERROR: invalid input syntax for type path: "[(1,2),(3,4)" LINE 1: INSERT INTO PATH_TBL VALUES ('[(1,2),(3,4)'); ^ INSERT INTO PATH_TBL VALUES ('(1,2,3,4'); ERROR: invalid input syntax for type path: "(1,2,3,4" LINE 1: INSERT INTO PATH_TBL VALUES ('(1,2,3,4'); ^ INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); ERROR: invalid input syntax for type path: "(1,2),(3,4)]" LINE 1: INSERT INTO PATH_TBL VALUES ('(1,2),(3,4)]'); ^ SELECT f1 AS open_path FROM PATH_TBL WHERE isopen(f1); open_path --------------------------- [(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] [(1,2),(3,4)] [(11,12),(13,14)] (4 rows) SELECT f1 AS closed_path FROM PATH_TBL WHERE isclosed(f1); closed_path ------------------- ((1,2),(3,4)) ((1,2),(3,4)) ((1,2),(3,4)) ((10,20)) ((11,12),(13,14)) (5 rows) SELECT pclose(f1) AS closed_path FROM PATH_TBL; closed_path --------------------------- ((1,2),(3,4)) ((1,2),(3,4)) ((0,0),(3,0),(4,5),(1,6)) ((1,2),(3,4)) ((1,2),(3,4)) ((1,2),(3,4)) ((10,20)) ((11,12),(13,14)) ((11,12),(13,14)) (9 rows) SELECT popen(f1) AS open_path FROM PATH_TBL; open_path --------------------------- [(1,2),(3,4)] [(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] [(1,2),(3,4)] [(1,2),(3,4)] [(1,2),(3,4)] [(10,20)] [(11,12),(13,14)] [(11,12),(13,14)] (9 rows) -- test non-error-throwing API for some core types SELECT pg_input_is_valid('[(1,2),(3)]', 'path'); pg_input_is_valid ------------------- f (1 row) SELECT * FROM pg_input_error_info('[(1,2),(3)]', 'path'); message | detail | hint | sql_error_code ---------------------------------------------------+--------+------+---------------- invalid input syntax for type path: "[(1,2),(3)]" | | | 22P02 (1 row) SELECT pg_input_is_valid('[(1,2,6),(3,4,6)]', 'path'); pg_input_is_valid ------------------- f (1 row) SELECT * FROM pg_input_error_info('[(1,2,6),(3,4,6)]', 'path'); message | detail | hint | sql_error_code ---------------------------------------------------------+--------+------+---------------- invalid input syntax for type path: "[(1,2,6),(3,4,6)]" | | | 22P02 (1 row)