-- -- GEOMETRY -- -- Back off displayed precision a little bit to reduce platform-to-platform -- variation in results. SET extra_float_digits TO -3; -- -- Points -- SELECT center(f1) AS center FROM BOX_TBL; center --------- (1,1) (2,2) (-5,-4) (2.5,3) (3,3) (5 rows) SELECT (@@ f1) AS center FROM BOX_TBL; center --------- (1,1) (2,2) (-5,-4) (2.5,3) (3,3) (5 rows) SELECT point(f1) AS center FROM CIRCLE_TBL; center ----------- (5,1) (1,2) (1,3) (1,2) (100,200) (100,1) (3,5) (3,5) (8 rows) SELECT (@@ f1) AS center FROM CIRCLE_TBL; center ----------- (5,1) (1,2) (1,3) (1,2) (100,200) (100,1) (3,5) (3,5) (8 rows) SELECT (@@ f1) AS center FROM POLYGON_TBL WHERE (# f1) > 2; center ------------------------------- (1.33333333333,1.33333333333) (2.33333333333,1.33333333333) (4,5) (4,5) (4,3) (5 rows) -- "is horizontal" function SELECT p1.f1 FROM POINT_TBL p1 WHERE ishorizontal(p1.f1, point '(0,0)'); f1 ------------------ (0,0) (-10,0) (1e-300,-1e-300) (3 rows) -- "is horizontal" operator SELECT p1.f1 FROM POINT_TBL p1 WHERE p1.f1 ?- point '(0,0)'; f1 ------------------ (0,0) (-10,0) (1e-300,-1e-300) (3 rows) -- "is vertical" function SELECT p1.f1 FROM POINT_TBL p1 WHERE isvertical(p1.f1, point '(5.1,34.5)'); f1 ------------ (5.1,34.5) (1 row) -- "is vertical" operator SELECT p1.f1 FROM POINT_TBL p1 WHERE p1.f1 ?| point '(5.1,34.5)'; f1 ------------ (5.1,34.5) (1 row) -- Slope SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2; f1 | f1 | slope -------------------+-------------------+---------------- (0,0) | (0,0) | Infinity (0,0) | (-10,0) | 0 (0,0) | (-3,4) | -1.33333333333 (0,0) | (5.1,34.5) | 6.76470588235 (0,0) | (-5,-12) | 2.4 (0,0) | (1e-300,-1e-300) | Infinity (0,0) | (1e+300,Infinity) | Infinity (0,0) | (Infinity,1e+300) | 0 (0,0) | (NaN,NaN) | NaN (0,0) | (10,10) | 1 (-10,0) | (0,0) | 0 (-10,0) | (-10,0) | Infinity (-10,0) | (-3,4) | 0.571428571429 (-10,0) | (5.1,34.5) | 2.28476821192 (-10,0) | (-5,-12) | -2.4 (-10,0) | (1e-300,-1e-300) | 0 (-10,0) | (1e+300,Infinity) | Infinity (-10,0) | (Infinity,1e+300) | 0 (-10,0) | (NaN,NaN) | NaN (-10,0) | (10,10) | 0.5 (-3,4) | (0,0) | -1.33333333333 (-3,4) | (-10,0) | 0.571428571429 (-3,4) | (-3,4) | Infinity (-3,4) | (5.1,34.5) | 3.76543209877 (-3,4) | (-5,-12) | 8 (-3,4) | (1e-300,-1e-300) | -1.33333333333 (-3,4) | (1e+300,Infinity) | Infinity (-3,4) | (Infinity,1e+300) | 0 (-3,4) | (NaN,NaN) | NaN (-3,4) | (10,10) | 0.461538461538 (5.1,34.5) | (0,0) | 6.76470588235 (5.1,34.5) | (-10,0) | 2.28476821192 (5.1,34.5) | (-3,4) | 3.76543209877 (5.1,34.5) | (5.1,34.5) | Infinity (5.1,34.5) | (-5,-12) | 4.60396039604 (5.1,34.5) | (1e-300,-1e-300) | 6.76470588235 (5.1,34.5) | (1e+300,Infinity) | Infinity (5.1,34.5) | (Infinity,1e+300) | 0 (5.1,34.5) | (NaN,NaN) | NaN (5.1,34.5) | (10,10) | -5 (-5,-12) | (0,0) | 2.4 (-5,-12) | (-10,0) | -2.4 (-5,-12) | (-3,4) | 8 (-5,-12) | (5.1,34.5) | 4.60396039604 (-5,-12) | (-5,-12) | Infinity (-5,-12) | (1e-300,-1e-300) | 2.4 (-5,-12) | (1e+300,Infinity) | Infinity (-5,-12) | (Infinity,1e+300) | 0 (-5,-12) | (NaN,NaN) | NaN (-5,-12) | (10,10) | 1.46666666667 (1e-300,-1e-300) | (0,0) | Infinity (1e-300,-1e-300) | (-10,0) | 0 (1e-300,-1e-300) | (-3,4) | -1.33333333333 (1e-300,-1e-300) | (5.1,34.5) | 6.76470588235 (1e-300,-1e-300) | (-5,-12) | 2.4 (1e-300,-1e-300) | (1e-300,-1e-300) | Infinity (1e-300,-1e-300) | (1e+300,Infinity) | Infinity (1e-300,-1e-300) | (Infinity,1e+300) | 0 (1e-300,-1e-300) | (NaN,NaN) | NaN (1e-300,-1e-300) | (10,10) | 1 (1e+300,Infinity) | (0,0) | Infinity (1e+300,Infinity) | (-10,0) | Infinity (1e+300,Infinity) | (-3,4) | Infinity (1e+300,Infinity) | (5.1,34.5) | Infinity (1e+300,Infinity) | (-5,-12) | Infinity (1e+300,Infinity) | (1e-300,-1e-300) | Infinity (1e+300,Infinity) | (1e+300,Infinity) | Infinity (1e+300,Infinity) | (Infinity,1e+300) | NaN (1e+300,Infinity) | (NaN,NaN) | NaN (1e+300,Infinity) | (10,10) | Infinity (Infinity,1e+300) | (0,0) | 0 (Infinity,1e+300) | (-10,0) | 0 (Infinity,1e+300) | (-3,4) | 0 (Infinity,1e+300) | (5.1,34.5) | 0 (Infinity,1e+300) | (-5,-12) | 0 (Infinity,1e+300) | (1e-300,-1e-300) | 0 (Infinity,1e+300) | (1e+300,Infinity) | NaN (Infinity,1e+300) | (Infinity,1e+300) | Infinity (Infinity,1e+300) | (NaN,NaN) | NaN (Infinity,1e+300) | (10,10) | 0 (NaN,NaN) | (0,0) | NaN (NaN,NaN) | (-10,0) | NaN (NaN,NaN) | (-3,4) | NaN (NaN,NaN) | (5.1,34.5) | NaN (NaN,NaN) | (-5,-12) | NaN (NaN,NaN) | (1e-300,-1e-300) | NaN (NaN,NaN) | (1e+300,Infinity) | NaN (NaN,NaN) | (Infinity,1e+300) | NaN (NaN,NaN) | (NaN,NaN) | NaN (NaN,NaN) | (10,10) | NaN (10,10) | (0,0) | 1 (10,10) | (-10,0) | 0.5 (10,10) | (-3,4) | 0.461538461538 (10,10) | (5.1,34.5) | -5 (10,10) | (-5,-12) | 1.46666666667 (10,10) | (1e-300,-1e-300) | 1 (10,10) | (1e+300,Infinity) | Infinity (10,10) | (Infinity,1e+300) | 0 (10,10) | (NaN,NaN) | NaN (10,10) | (10,10) | Infinity (100 rows) -- Add point SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2; f1 | f1 | ?column? -------------------+-------------------+--------------------- (0,0) | (0,0) | (0,0) (0,0) | (-10,0) | (-10,0) (0,0) | (-3,4) | (-3,4) (0,0) | (5.1,34.5) | (5.1,34.5) (0,0) | (-5,-12) | (-5,-12) (0,0) | (1e-300,-1e-300) | (1e-300,-1e-300) (0,0) | (1e+300,Infinity) | (1e+300,Infinity) (0,0) | (Infinity,1e+300) | (Infinity,1e+300) (0,0) | (NaN,NaN) | (NaN,NaN) (0,0) | (10,10) | (10,10) (-10,0) | (0,0) | (-10,0) (-10,0) | (-10,0) | (-20,0) (-10,0) | (-3,4) | (-13,4) (-10,0) | (5.1,34.5) | (-4.9,34.5) (-10,0) | (-5,-12) | (-15,-12) (-10,0) | (1e-300,-1e-300) | (-10,-1e-300) (-10,0) | (1e+300,Infinity) | (1e+300,Infinity) (-10,0) | (Infinity,1e+300) | (Infinity,1e+300) (-10,0) | (NaN,NaN) | (NaN,NaN) (-10,0) | (10,10) | (0,10) (-3,4) | (0,0) | (-3,4) (-3,4) | (-10,0) | (-13,4) (-3,4) | (-3,4) | (-6,8) (-3,4) | (5.1,34.5) | (2.1,38.5) (-3,4) | (-5,-12) | (-8,-8) (-3,4) | (1e-300,-1e-300) | (-3,4) (-3,4) | (1e+300,Infinity) | (1e+300,Infinity) (-3,4) | (Infinity,1e+300) | (Infinity,1e+300) (-3,4) | (NaN,NaN) | (NaN,NaN) (-3,4) | (10,10) | (7,14) (5.1,34.5) | (0,0) | (5.1,34.5) (5.1,34.5) | (-10,0) | (-4.9,34.5) (5.1,34.5) | (-3,4) | (2.1,38.5) (5.1,34.5) | (5.1,34.5) | (10.2,69) (5.1,34.5) | (-5,-12) | (0.1,22.5) (5.1,34.5) | (1e-300,-1e-300) | (5.1,34.5) (5.1,34.5) | (1e+300,Infinity) | (1e+300,Infinity) (5.1,34.5) | (Infinity,1e+300) | (Infinity,1e+300) (5.1,34.5) | (NaN,NaN) | (NaN,NaN) (5.1,34.5) | (10,10) | (15.1,44.5) (-5,-12) | (0,0) | (-5,-12) (-5,-12) | (-10,0) | (-15,-12) (-5,-12) | (-3,4) | (-8,-8) (-5,-12) | (5.1,34.5) | (0.1,22.5) (-5,-12) | (-5,-12) | (-10,-24) (-5,-12) | (1e-300,-1e-300) | (-5,-12) (-5,-12) | (1e+300,Infinity) | (1e+300,Infinity) (-5,-12) | (Infinity,1e+300) | (Infinity,1e+300) (-5,-12) | (NaN,NaN) | (NaN,NaN) (-5,-12) | (10,10) | (5,-2) (1e-300,-1e-300) | (0,0) | (1e-300,-1e-300) (1e-300,-1e-300) | (-10,0) | (-10,-1e-300) (1e-300,-1e-300) | (-3,4) | (-3,4) (1e-300,-1e-300) | (5.1,34.5) | (5.1,34.5) (1e-300,-1e-300) | (-5,-12) | (-5,-12) (1e-300,-1e-300) | (1e-300,-1e-300) | (2e-300,-2e-300) (1e-300,-1e-300) | (1e+300,Infinity) | (1e+300,Infinity) (1e-300,-1e-300) | (Infinity,1e+300) | (Infinity,1e+300) (1e-300,-1e-300) | (NaN,NaN) | (NaN,NaN) (1e-300,-1e-300) | (10,10) | (10,10) (1e+300,Infinity) | (0,0) | (1e+300,Infinity) (1e+300,Infinity) | (-10,0) | (1e+300,Infinity) (1e+300,Infinity) | (-3,4) | (1e+300,Infinity) (1e+300,Infinity) | (5.1,34.5) | (1e+300,Infinity) (1e+300,Infinity) | (-5,-12) | (1e+300,Infinity) (1e+300,Infinity) | (1e-300,-1e-300) | (1e+300,Infinity) (1e+300,Infinity) | (1e+300,Infinity) | (2e+300,Infinity) (1e+300,Infinity) | (Infinity,1e+300) | (Infinity,Infinity) (1e+300,Infinity) | (NaN,NaN) | (NaN,NaN) (1e+300,Infinity) | (10,10) | (1e+300,Infinity) (Infinity,1e+300) | (0,0) | (Infinity,1e+300) (Infinity,1e+300) | (-10,0) | (Infinity,1e+300) (Infinity,1e+300) | (-3,4) | (Infinity,1e+300) (Infinity,1e+300) | (5.1,34.5) | (Infinity,1e+300) (Infinity,1e+300) | (-5,-12) | (Infinity,1e+300) (Infinity,1e+300) | (1e-300,-1e-300) | (Infinity,1e+300) (Infinity,1e+300) | (1e+300,Infinity) | (Infinity,Infinity) (Infinity,1e+300) | (Infinity,1e+300) | (Infinity,2e+300) (Infinity,1e+300) | (NaN,NaN) | (NaN,NaN) (Infinity,1e+300) | (10,10) | (Infinity,1e+300) (NaN,NaN) | (0,0) | (NaN,NaN) (NaN,NaN) | (-10,0) | (NaN,NaN) (NaN,NaN) | (-3,4) | (NaN,NaN) (NaN,NaN) | (5.1,34.5) | (NaN,NaN) (NaN,NaN) | (-5,-12) | (NaN,NaN) (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN) (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN) (NaN,NaN) | (Infinity,1e+300) | (NaN,NaN) (NaN,NaN) | (NaN,NaN) | (NaN,NaN) (NaN,NaN) | (10,10) | (NaN,NaN) (10,10) | (0,0) | (10,10) (10,10) | (-10,0) | (0,10) (10,10) | (-3,4) | (7,14) (10,10) | (5.1,34.5) | (15.1,44.5) (10,10) | (-5,-12) | (5,-2) (10,10) | (1e-300,-1e-300) | (10,10) (10,10) | (1e+300,Infinity) | (1e+300,Infinity) (10,10) | (Infinity,1e+300) | (Infinity,1e+300) (10,10) | (NaN,NaN) | (NaN,NaN) (10,10) | (10,10) | (20,20) (100 rows) -- Subtract point SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2; f1 | f1 | ?column? -------------------+-------------------+---------------------- (0,0) | (0,0) | (0,0) (0,0) | (-10,0) | (10,0) (0,0) | (-3,4) | (3,-4) (0,0) | (5.1,34.5) | (-5.1,-34.5) (0,0) | (-5,-12) | (5,12) (0,0) | (1e-300,-1e-300) | (-1e-300,1e-300) (0,0) | (1e+300,Infinity) | (-1e+300,-Infinity) (0,0) | (Infinity,1e+300) | (-Infinity,-1e+300) (0,0) | (NaN,NaN) | (NaN,NaN) (0,0) | (10,10) | (-10,-10) (-10,0) | (0,0) | (-10,0) (-10,0) | (-10,0) | (0,0) (-10,0) | (-3,4) | (-7,-4) (-10,0) | (5.1,34.5) | (-15.1,-34.5) (-10,0) | (-5,-12) | (-5,12) (-10,0) | (1e-300,-1e-300) | (-10,1e-300) (-10,0) | (1e+300,Infinity) | (-1e+300,-Infinity) (-10,0) | (Infinity,1e+300) | (-Infinity,-1e+300) (-10,0) | (NaN,NaN) | (NaN,NaN) (-10,0) | (10,10) | (-20,-10) (-3,4) | (0,0) | (-3,4) (-3,4) | (-10,0) | (7,4) (-3,4) | (-3,4) | (0,0) (-3,4) | (5.1,34.5) | (-8.1,-30.5) (-3,4) | (-5,-12) | (2,16) (-3,4) | (1e-300,-1e-300) | (-3,4) (-3,4) | (1e+300,Infinity) | (-1e+300,-Infinity) (-3,4) | (Infinity,1e+300) | (-Infinity,-1e+300) (-3,4) | (NaN,NaN) | (NaN,NaN) (-3,4) | (10,10) | (-13,-6) (5.1,34.5) | (0,0) | (5.1,34.5) (5.1,34.5) | (-10,0) | (15.1,34.5) (5.1,34.5) | (-3,4) | (8.1,30.5) (5.1,34.5) | (5.1,34.5) | (0,0) (5.1,34.5) | (-5,-12) | (10.1,46.5) (5.1,34.5) | (1e-300,-1e-300) | (5.1,34.5) (5.1,34.5) | (1e+300,Infinity) | (-1e+300,-Infinity) (5.1,34.5) | (Infinity,1e+300) | (-Infinity,-1e+300) (5.1,34.5) | (NaN,NaN) | (NaN,NaN) (5.1,34.5) | (10,10) | (-4.9,24.5) (-5,-12) | (0,0) | (-5,-12) (-5,-12) | (-10,0) | (5,-12) (-5,-12) | (-3,4) | (-2,-16) (-5,-12) | (5.1,34.5) | (-10.1,-46.5) (-5,-12) | (-5,-12) | (0,0) (-5,-12) | (1e-300,-1e-300) | (-5,-12) (-5,-12) | (1e+300,Infinity) | (-1e+300,-Infinity) (-5,-12) | (Infinity,1e+300) | (-Infinity,-1e+300) (-5,-12) | (NaN,NaN) | (NaN,NaN) (-5,-12) | (10,10) | (-15,-22) (1e-300,-1e-300) | (0,0) | (1e-300,-1e-300) (1e-300,-1e-300) | (-10,0) | (10,-1e-300) (1e-300,-1e-300) | (-3,4) | (3,-4) (1e-300,-1e-300) | (5.1,34.5) | (-5.1,-34.5) (1e-300,-1e-300) | (-5,-12) | (5,12) (1e-300,-1e-300) | (1e-300,-1e-300) | (0,0) (1e-300,-1e-300) | (1e+300,Infinity) | (-1e+300,-Infinity) (1e-300,-1e-300) | (Infinity,1e+300) | (-Infinity,-1e+300) (1e-300,-1e-300) | (NaN,NaN) | (NaN,NaN) (1e-300,-1e-300) | (10,10) | (-10,-10) (1e+300,Infinity) | (0,0) | (1e+300,Infinity) (1e+300,Infinity) | (-10,0) | (1e+300,Infinity) (1e+300,Infinity) | (-3,4) | (1e+300,Infinity) (1e+300,Infinity) | (5.1,34.5) | (1e+300,Infinity) (1e+300,Infinity) | (-5,-12) | (1e+300,Infinity) (1e+300,Infinity) | (1e-300,-1e-300) | (1e+300,Infinity) (1e+300,Infinity) | (1e+300,Infinity) | (0,NaN) (1e+300,Infinity) | (Infinity,1e+300) | (-Infinity,Infinity) (1e+300,Infinity) | (NaN,NaN) | (NaN,NaN) (1e+300,Infinity) | (10,10) | (1e+300,Infinity) (Infinity,1e+300) | (0,0) | (Infinity,1e+300) (Infinity,1e+300) | (-10,0) | (Infinity,1e+300) (Infinity,1e+300) | (-3,4) | (Infinity,1e+300) (Infinity,1e+300) | (5.1,34.5) | (Infinity,1e+300) (Infinity,1e+300) | (-5,-12) | (Infinity,1e+300) (Infinity,1e+300) | (1e-300,-1e-300) | (Infinity,1e+300) (Infinity,1e+300) | (1e+300,Infinity) | (Infinity,-Infinity) (Infinity,1e+300) | (Infinity,1e+300) | (NaN,0) (Infinity,1e+300) | (NaN,NaN) | (NaN,NaN) (Infinity,1e+300) | (10,10) | (Infinity,1e+300) (NaN,NaN) | (0,0) | (NaN,NaN) (NaN,NaN) | (-10,0) | (NaN,NaN) (NaN,NaN) | (-3,4) | (NaN,NaN) (NaN,NaN) | (5.1,34.5) | (NaN,NaN) (NaN,NaN) | (-5,-12) | (NaN,NaN) (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN) (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN) (NaN,NaN) | (Infinity,1e+300) | (NaN,NaN) (NaN,NaN) | (NaN,NaN) | (NaN,NaN) (NaN,NaN) | (10,10) | (NaN,NaN) (10,10) | (0,0) | (10,10) (10,10) | (-10,0) | (20,10) (10,10) | (-3,4) | (13,6) (10,10) | (5.1,34.5) | (4.9,-24.5) (10,10) | (-5,-12) | (15,22) (10,10) | (1e-300,-1e-300) | (10,10) (10,10) | (1e+300,Infinity) | (-1e+300,-Infinity) (10,10) | (Infinity,1e+300) | (-Infinity,-1e+300) (10,10) | (NaN,NaN) | (NaN,NaN) (10,10) | (10,10) | (0,0) (100 rows) -- Multiply with point SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] BETWEEN 1 AND 1000; f1 | f1 | ?column? ------------+-------------------+----------------------- (5.1,34.5) | (0,0) | (0,0) (10,10) | (0,0) | (0,0) (5.1,34.5) | (-10,0) | (-51,-345) (10,10) | (-10,0) | (-100,-100) (5.1,34.5) | (-3,4) | (-153.3,-83.1) (10,10) | (-3,4) | (-70,10) (5.1,34.5) | (5.1,34.5) | (-1164.24,351.9) (10,10) | (5.1,34.5) | (-294,396) (5.1,34.5) | (-5,-12) | (388.5,-233.7) (10,10) | (-5,-12) | (70,-170) (5.1,34.5) | (1e-300,-1e-300) | (3.96e-299,2.94e-299) (10,10) | (1e-300,-1e-300) | (2e-299,0) (5.1,34.5) | (1e+300,Infinity) | (-Infinity,Infinity) (10,10) | (1e+300,Infinity) | (-Infinity,Infinity) (5.1,34.5) | (Infinity,1e+300) | (Infinity,Infinity) (10,10) | (Infinity,1e+300) | (Infinity,Infinity) (5.1,34.5) | (NaN,NaN) | (NaN,NaN) (10,10) | (NaN,NaN) | (NaN,NaN) (5.1,34.5) | (10,10) | (-294,396) (10,10) | (10,10) | (0,200) (20 rows) -- Underflow error SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] < 1; ERROR: value out of range: underflow -- Divide by point SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] BETWEEN 1 AND 1000; f1 | f1 | ?column? -------------------+------------+------------------------------------------- (0,0) | (5.1,34.5) | (0,0) (0,0) | (10,10) | (0,0) (-10,0) | (5.1,34.5) | (-0.0419318237877,0.283656455034) (-10,0) | (10,10) | (-0.5,0.5) (-3,4) | (5.1,34.5) | (0.100883034877,0.101869666025) (-3,4) | (10,10) | (0.05,0.35) (5.1,34.5) | (5.1,34.5) | (1,0) (5.1,34.5) | (10,10) | (1.98,1.47) (-5,-12) | (5.1,34.5) | (-0.361353657935,0.0915100389719) (-5,-12) | (10,10) | (-0.85,-0.35) (1e-300,-1e-300) | (5.1,34.5) | (-2.41724631247e-302,-3.25588278822e-302) (1e-300,-1e-300) | (10,10) | (0,-1e-301) (1e+300,Infinity) | (5.1,34.5) | (Infinity,Infinity) (1e+300,Infinity) | (10,10) | (Infinity,Infinity) (Infinity,1e+300) | (5.1,34.5) | (Infinity,-Infinity) (Infinity,1e+300) | (10,10) | (Infinity,-Infinity) (NaN,NaN) | (5.1,34.5) | (NaN,NaN) (NaN,NaN) | (10,10) | (NaN,NaN) (10,10) | (5.1,34.5) | (0.325588278822,-0.241724631247) (10,10) | (10,10) | (1,0) (20 rows) -- Overflow error SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] > 1000; ERROR: value out of range: overflow -- Division by 0 error SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1 ~= '(0,0)'::point; ERROR: division by zero -- Distance to line SELECT p.f1, l.s, p.f1 <-> l.s AS dist_pl, l.s <-> p.f1 AS dist_lp FROM POINT_TBL p, LINE_TBL l; f1 | s | dist_pl | dist_lp -------------------+---------------------------------------+--------------------+-------------------- (0,0) | {0,-1,5} | 5 | 5 (0,0) | {1,0,5} | 5 | 5 (0,0) | {0,3,0} | 0 | 0 (0,0) | {1,-1,0} | 0 | 0 (0,0) | {-0.4,-1,-6} | 5.57086014531 | 5.57086014531 (0,0) | {-0.000184615384615,-1,15.3846153846} | 15.3846151224 | 15.3846151224 (0,0) | {3,NaN,5} | NaN | NaN (0,0) | {NaN,NaN,NaN} | NaN | NaN (0,0) | {0,-1,3} | 3 | 3 (0,0) | {-1,0,3} | 3 | 3 (-10,0) | {0,-1,5} | 5 | 5 (-10,0) | {1,0,5} | 5 | 5 (-10,0) | {0,3,0} | 0 | 0 (-10,0) | {1,-1,0} | 7.07106781187 | 7.07106781187 (-10,0) | {-0.4,-1,-6} | 1.85695338177 | 1.85695338177 (-10,0) | {-0.000184615384615,-1,15.3846153846} | 15.3864612763 | 15.3864612763 (-10,0) | {3,NaN,5} | NaN | NaN (-10,0) | {NaN,NaN,NaN} | NaN | NaN (-10,0) | {0,-1,3} | 3 | 3 (-10,0) | {-1,0,3} | 13 | 13 (-3,4) | {0,-1,5} | 1 | 1 (-3,4) | {1,0,5} | 2 | 2 (-3,4) | {0,3,0} | 4 | 4 (-3,4) | {1,-1,0} | 4.94974746831 | 4.94974746831 (-3,4) | {-0.4,-1,-6} | 8.17059487979 | 8.17059487979 (-3,4) | {-0.000184615384615,-1,15.3846153846} | 11.3851690368 | 11.3851690368 (-3,4) | {3,NaN,5} | NaN | NaN (-3,4) | {NaN,NaN,NaN} | NaN | NaN (-3,4) | {0,-1,3} | 1 | 1 (-3,4) | {-1,0,3} | 6 | 6 (5.1,34.5) | {0,-1,5} | 29.5 | 29.5 (5.1,34.5) | {1,0,5} | 10.1 | 10.1 (5.1,34.5) | {0,3,0} | 34.5 | 34.5 (5.1,34.5) | {1,-1,0} | 20.7889393669 | 20.7889393669 (5.1,34.5) | {-0.4,-1,-6} | 39.4973984303 | 39.4973984303 (5.1,34.5) | {-0.000184615384615,-1,15.3846153846} | 19.1163258281 | 19.1163258281 (5.1,34.5) | {3,NaN,5} | NaN | NaN (5.1,34.5) | {NaN,NaN,NaN} | NaN | NaN (5.1,34.5) | {0,-1,3} | 31.5 | 31.5 (5.1,34.5) | {-1,0,3} | 2.1 | 2.1 (-5,-12) | {0,-1,5} | 17 | 17 (-5,-12) | {1,0,5} | 0 | 0 (-5,-12) | {0,3,0} | 12 | 12 (-5,-12) | {1,-1,0} | 4.94974746831 | 4.94974746831 (-5,-12) | {-0.4,-1,-6} | 7.42781352708 | 7.42781352708 (-5,-12) | {-0.000184615384615,-1,15.3846153846} | 27.3855379948 | 27.3855379948 (-5,-12) | {3,NaN,5} | NaN | NaN (-5,-12) | {NaN,NaN,NaN} | NaN | NaN (-5,-12) | {0,-1,3} | 15 | 15 (-5,-12) | {-1,0,3} | 8 | 8 (1e-300,-1e-300) | {0,-1,5} | 5 | 5 (1e-300,-1e-300) | {1,0,5} | 5 | 5 (1e-300,-1e-300) | {0,3,0} | 1e-300 | 1e-300 (1e-300,-1e-300) | {1,-1,0} | 1.41421356237e-300 | 1.41421356237e-300 (1e-300,-1e-300) | {-0.4,-1,-6} | 5.57086014531 | 5.57086014531 (1e-300,-1e-300) | {-0.000184615384615,-1,15.3846153846} | 15.3846151224 | 15.3846151224 (1e-300,-1e-300) | {3,NaN,5} | NaN | NaN (1e-300,-1e-300) | {NaN,NaN,NaN} | NaN | NaN (1e-300,-1e-300) | {0,-1,3} | 3 | 3 (1e-300,-1e-300) | {-1,0,3} | 3 | 3 (1e+300,Infinity) | {0,-1,5} | Infinity | Infinity (1e+300,Infinity) | {1,0,5} | NaN | NaN (1e+300,Infinity) | {0,3,0} | Infinity | Infinity (1e+300,Infinity) | {1,-1,0} | Infinity | Infinity (1e+300,Infinity) | {-0.4,-1,-6} | Infinity | Infinity (1e+300,Infinity) | {-0.000184615384615,-1,15.3846153846} | Infinity | Infinity (1e+300,Infinity) | {3,NaN,5} | NaN | NaN (1e+300,Infinity) | {NaN,NaN,NaN} | NaN | NaN (1e+300,Infinity) | {0,-1,3} | Infinity | Infinity (1e+300,Infinity) | {-1,0,3} | NaN | NaN (Infinity,1e+300) | {0,-1,5} | NaN | NaN (Infinity,1e+300) | {1,0,5} | Infinity | Infinity (Infinity,1e+300) | {0,3,0} | NaN | NaN (Infinity,1e+300) | {1,-1,0} | NaN | NaN (Infinity,1e+300) | {-0.4,-1,-6} | NaN | NaN (Infinity,1e+300) | {-0.000184615384615,-1,15.3846153846} | NaN | NaN (Infinity,1e+300) | {3,NaN,5} | NaN | NaN (Infinity,1e+300) | {NaN,NaN,NaN} | NaN | NaN (Infinity,1e+300) | {0,-1,3} | NaN | NaN (Infinity,1e+300) | {-1,0,3} | Infinity | Infinity (NaN,NaN) | {0,-1,5} | NaN | NaN (NaN,NaN) | {1,0,5} | NaN | NaN (NaN,NaN) | {0,3,0} | NaN | NaN (NaN,NaN) | {1,-1,0} | NaN | NaN (NaN,NaN) | {-0.4,-1,-6} | NaN | NaN (NaN,NaN) | {-0.000184615384615,-1,15.3846153846} | NaN | NaN (NaN,NaN) | {3,NaN,5} | NaN | NaN (NaN,NaN) | {NaN,NaN,NaN} | NaN | NaN (NaN,NaN) | {0,-1,3} | NaN | NaN (NaN,NaN) | {-1,0,3} | NaN | NaN (10,10) | {0,-1,5} | 5 | 5 (10,10) | {1,0,5} | 15 | 15 (10,10) | {0,3,0} | 10 | 10 (10,10) | {1,-1,0} | 0 | 0 (10,10) | {-0.4,-1,-6} | 18.5695338177 | 18.5695338177 (10,10) | {-0.000184615384615,-1,15.3846153846} | 5.38276913903 | 5.38276913903 (10,10) | {3,NaN,5} | NaN | NaN (10,10) | {NaN,NaN,NaN} | NaN | NaN (10,10) | {0,-1,3} | 7 | 7 (10,10) | {-1,0,3} | 7 | 7 (100 rows) -- Distance to line segment SELECT p.f1, l.s, p.f1 <-> l.s AS dist_ps, l.s <-> p.f1 AS dist_sp FROM POINT_TBL p, LSEG_TBL l; f1 | s | dist_ps | dist_sp -------------------+-------------------------------+--------------------+-------------------- (0,0) | [(1,2),(3,4)] | 2.2360679775 | 2.2360679775 (0,0) | [(0,0),(6,6)] | 0 | 0 (0,0) | [(10,-10),(-3,-4)] | 4.88901207039 | 4.88901207039 (0,0) | [(-1000000,200),(300000,-40)] | 15.3846151224 | 15.3846151224 (0,0) | [(11,22),(33,44)] | 24.5967477525 | 24.5967477525 (0,0) | [(-10,2),(-10,3)] | 10.1980390272 | 10.1980390272 (0,0) | [(0,-20),(30,-20)] | 20 | 20 (0,0) | [(NaN,1),(NaN,90)] | NaN | NaN (-10,0) | [(1,2),(3,4)] | 11.1803398875 | 11.1803398875 (-10,0) | [(0,0),(6,6)] | 10 | 10 (-10,0) | [(10,-10),(-3,-4)] | 8.0622577483 | 8.0622577483 (-10,0) | [(-1000000,200),(300000,-40)] | 15.3864612763 | 15.3864612763 (-10,0) | [(11,22),(33,44)] | 30.4138126515 | 30.4138126515 (-10,0) | [(-10,2),(-10,3)] | 2 | 2 (-10,0) | [(0,-20),(30,-20)] | 22.360679775 | 22.360679775 (-10,0) | [(NaN,1),(NaN,90)] | NaN | NaN (-3,4) | [(1,2),(3,4)] | 4.472135955 | 4.472135955 (-3,4) | [(0,0),(6,6)] | 4.94974746831 | 4.94974746831 (-3,4) | [(10,-10),(-3,-4)] | 8 | 8 (-3,4) | [(-1000000,200),(300000,-40)] | 11.3851690367 | 11.3851690367 (-3,4) | [(11,22),(33,44)] | 22.803508502 | 22.803508502 (-3,4) | [(-10,2),(-10,3)] | 7.07106781187 | 7.07106781187 (-3,4) | [(0,-20),(30,-20)] | 24.1867732449 | 24.1867732449 (-3,4) | [(NaN,1),(NaN,90)] | NaN | NaN (5.1,34.5) | [(1,2),(3,4)] | 30.5722096028 | 30.5722096028 (5.1,34.5) | [(0,0),(6,6)] | 28.5142069853 | 28.5142069853 (5.1,34.5) | [(10,-10),(-3,-4)] | 39.3428519556 | 39.3428519556 (5.1,34.5) | [(-1000000,200),(300000,-40)] | 19.1163258281 | 19.1163258281 (5.1,34.5) | [(11,22),(33,44)] | 13.0107647738 | 13.0107647738 (5.1,34.5) | [(-10,2),(-10,3)] | 34.932220084 | 34.932220084 (5.1,34.5) | [(0,-20),(30,-20)] | 54.5 | 54.5 (5.1,34.5) | [(NaN,1),(NaN,90)] | NaN | NaN (-5,-12) | [(1,2),(3,4)] | 15.2315462117 | 15.2315462117 (-5,-12) | [(0,0),(6,6)] | 13 | 13 (-5,-12) | [(10,-10),(-3,-4)] | 8.10179143093 | 8.10179143093 (-5,-12) | [(-1000000,200),(300000,-40)] | 27.3855379949 | 27.3855379949 (-5,-12) | [(11,22),(33,44)] | 37.5765884561 | 37.5765884561 (-5,-12) | [(-10,2),(-10,3)] | 14.8660687473 | 14.8660687473 (-5,-12) | [(0,-20),(30,-20)] | 9.43398113206 | 9.43398113206 (-5,-12) | [(NaN,1),(NaN,90)] | NaN | NaN (1e-300,-1e-300) | [(1,2),(3,4)] | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | [(0,0),(6,6)] | 1.41421356237e-300 | 1.41421356237e-300 (1e-300,-1e-300) | [(10,-10),(-3,-4)] | 4.88901207039 | 4.88901207039 (1e-300,-1e-300) | [(-1000000,200),(300000,-40)] | 15.3846151224 | 15.3846151224 (1e-300,-1e-300) | [(11,22),(33,44)] | 24.5967477525 | 24.5967477525 (1e-300,-1e-300) | [(-10,2),(-10,3)] | 10.1980390272 | 10.1980390272 (1e-300,-1e-300) | [(0,-20),(30,-20)] | 20 | 20 (1e-300,-1e-300) | [(NaN,1),(NaN,90)] | NaN | NaN (1e+300,Infinity) | [(1,2),(3,4)] | Infinity | Infinity (1e+300,Infinity) | [(0,0),(6,6)] | Infinity | Infinity (1e+300,Infinity) | [(10,-10),(-3,-4)] | Infinity | Infinity (1e+300,Infinity) | [(-1000000,200),(300000,-40)] | Infinity | Infinity (1e+300,Infinity) | [(11,22),(33,44)] | Infinity | Infinity (1e+300,Infinity) | [(-10,2),(-10,3)] | Infinity | Infinity (1e+300,Infinity) | [(0,-20),(30,-20)] | Infinity | Infinity (1e+300,Infinity) | [(NaN,1),(NaN,90)] | Infinity | Infinity (Infinity,1e+300) | [(1,2),(3,4)] | Infinity | Infinity (Infinity,1e+300) | [(0,0),(6,6)] | Infinity | Infinity (Infinity,1e+300) | [(10,-10),(-3,-4)] | Infinity | Infinity (Infinity,1e+300) | [(-1000000,200),(300000,-40)] | Infinity | Infinity (Infinity,1e+300) | [(11,22),(33,44)] | Infinity | Infinity (Infinity,1e+300) | [(-10,2),(-10,3)] | Infinity | Infinity (Infinity,1e+300) | [(0,-20),(30,-20)] | Infinity | Infinity (Infinity,1e+300) | [(NaN,1),(NaN,90)] | NaN | NaN (NaN,NaN) | [(1,2),(3,4)] | NaN | NaN (NaN,NaN) | [(0,0),(6,6)] | NaN | NaN (NaN,NaN) | [(10,-10),(-3,-4)] | NaN | NaN (NaN,NaN) | [(-1000000,200),(300000,-40)] | NaN | NaN (NaN,NaN) | [(11,22),(33,44)] | NaN | NaN (NaN,NaN) | [(-10,2),(-10,3)] | NaN | NaN (NaN,NaN) | [(0,-20),(30,-20)] | NaN | NaN (NaN,NaN) | [(NaN,1),(NaN,90)] | NaN | NaN (10,10) | [(1,2),(3,4)] | 9.21954445729 | 9.21954445729 (10,10) | [(0,0),(6,6)] | 5.65685424949 | 5.65685424949 (10,10) | [(10,-10),(-3,-4)] | 18.15918769 | 18.15918769 (10,10) | [(-1000000,200),(300000,-40)] | 5.38276913904 | 5.38276913904 (10,10) | [(11,22),(33,44)] | 12.0415945788 | 12.0415945788 (10,10) | [(-10,2),(-10,3)] | 21.1896201004 | 21.1896201004 (10,10) | [(0,-20),(30,-20)] | 30 | 30 (10,10) | [(NaN,1),(NaN,90)] | NaN | NaN (80 rows) -- Distance to box SELECT p.f1, b.f1, p.f1 <-> b.f1 AS dist_pb, b.f1 <-> p.f1 AS dist_bp FROM POINT_TBL p, BOX_TBL b; f1 | f1 | dist_pb | dist_bp -------------------+---------------------+--------------------+-------------------- (0,0) | (2,2),(0,0) | 0 | 0 (0,0) | (3,3),(1,1) | 1.41421356237 | 1.41421356237 (0,0) | (-2,2),(-8,-10) | 2 | 2 (0,0) | (2.5,3.5),(2.5,2.5) | 3.53553390593 | 3.53553390593 (0,0) | (3,3),(3,3) | 4.24264068712 | 4.24264068712 (-10,0) | (2,2),(0,0) | 10 | 10 (-10,0) | (3,3),(1,1) | 11.0453610172 | 11.0453610172 (-10,0) | (-2,2),(-8,-10) | 2 | 2 (-10,0) | (2.5,3.5),(2.5,2.5) | 12.747548784 | 12.747548784 (-10,0) | (3,3),(3,3) | 13.3416640641 | 13.3416640641 (-3,4) | (2,2),(0,0) | 3.60555127546 | 3.60555127546 (-3,4) | (3,3),(1,1) | 4.12310562562 | 4.12310562562 (-3,4) | (-2,2),(-8,-10) | 2 | 2 (-3,4) | (2.5,3.5),(2.5,2.5) | 5.52268050859 | 5.52268050859 (-3,4) | (3,3),(3,3) | 6.0827625303 | 6.0827625303 (5.1,34.5) | (2,2),(0,0) | 32.6475113906 | 32.6475113906 (5.1,34.5) | (3,3),(1,1) | 31.5699223946 | 31.5699223946 (5.1,34.5) | (-2,2),(-8,-10) | 33.2664996656 | 33.2664996656 (5.1,34.5) | (2.5,3.5),(2.5,2.5) | 31.108841187 | 31.108841187 (5.1,34.5) | (3,3),(3,3) | 31.5699223946 | 31.5699223946 (-5,-12) | (2,2),(0,0) | 13 | 13 (-5,-12) | (3,3),(1,1) | 14.3178210633 | 14.3178210633 (-5,-12) | (-2,2),(-8,-10) | 2 | 2 (-5,-12) | (2.5,3.5),(2.5,2.5) | 16.3248277173 | 16.3248277173 (-5,-12) | (3,3),(3,3) | 17 | 17 (1e-300,-1e-300) | (2,2),(0,0) | 1.41421356237e-300 | 1.41421356237e-300 (1e-300,-1e-300) | (3,3),(1,1) | 1.41421356237 | 1.41421356237 (1e-300,-1e-300) | (-2,2),(-8,-10) | 2 | 2 (1e-300,-1e-300) | (2.5,3.5),(2.5,2.5) | 3.53553390593 | 3.53553390593 (1e-300,-1e-300) | (3,3),(3,3) | 4.24264068712 | 4.24264068712 (1e+300,Infinity) | (2,2),(0,0) | Infinity | Infinity (1e+300,Infinity) | (3,3),(1,1) | Infinity | Infinity (1e+300,Infinity) | (-2,2),(-8,-10) | Infinity | Infinity (1e+300,Infinity) | (2.5,3.5),(2.5,2.5) | Infinity | Infinity (1e+300,Infinity) | (3,3),(3,3) | Infinity | Infinity (Infinity,1e+300) | (2,2),(0,0) | Infinity | Infinity (Infinity,1e+300) | (3,3),(1,1) | Infinity | Infinity (Infinity,1e+300) | (-2,2),(-8,-10) | Infinity | Infinity (Infinity,1e+300) | (2.5,3.5),(2.5,2.5) | Infinity | Infinity (Infinity,1e+300) | (3,3),(3,3) | Infinity | Infinity (NaN,NaN) | (2,2),(0,0) | NaN | NaN (NaN,NaN) | (3,3),(1,1) | NaN | NaN (NaN,NaN) | (-2,2),(-8,-10) | NaN | NaN (NaN,NaN) | (2.5,3.5),(2.5,2.5) | NaN | NaN (NaN,NaN) | (3,3),(3,3) | NaN | NaN (10,10) | (2,2),(0,0) | 11.313708499 | 11.313708499 (10,10) | (3,3),(1,1) | 9.89949493661 | 9.89949493661 (10,10) | (-2,2),(-8,-10) | 14.4222051019 | 14.4222051019 (10,10) | (2.5,3.5),(2.5,2.5) | 9.92471662064 | 9.92471662064 (10,10) | (3,3),(3,3) | 9.89949493661 | 9.89949493661 (50 rows) -- Distance to path SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppath, p1.f1 <-> p.f1 AS dist_pathp FROM POINT_TBL p, PATH_TBL p1; f1 | f1 | dist_ppath | dist_pathp -------------------+---------------------------+--------------------+-------------------- (0,0) | [(1,2),(3,4)] | 2.2360679775 | 2.2360679775 (0,0) | ((1,2),(3,4)) | 2.2360679775 | 2.2360679775 (0,0) | [(0,0),(3,0),(4,5),(1,6)] | 0 | 0 (0,0) | ((1,2),(3,4)) | 2.2360679775 | 2.2360679775 (0,0) | ((1,2),(3,4)) | 2.2360679775 | 2.2360679775 (0,0) | [(1,2),(3,4)] | 2.2360679775 | 2.2360679775 (0,0) | ((10,20)) | 22.360679775 | 22.360679775 (0,0) | [(11,12),(13,14)] | 16.2788205961 | 16.2788205961 (0,0) | ((11,12),(13,14)) | 16.2788205961 | 16.2788205961 (-10,0) | [(1,2),(3,4)] | 11.1803398875 | 11.1803398875 (-10,0) | ((1,2),(3,4)) | 11.1803398875 | 11.1803398875 (-10,0) | [(0,0),(3,0),(4,5),(1,6)] | 10 | 10 (-10,0) | ((1,2),(3,4)) | 11.1803398875 | 11.1803398875 (-10,0) | ((1,2),(3,4)) | 11.1803398875 | 11.1803398875 (-10,0) | [(1,2),(3,4)] | 11.1803398875 | 11.1803398875 (-10,0) | ((10,20)) | 28.2842712475 | 28.2842712475 (-10,0) | [(11,12),(13,14)] | 24.1867732449 | 24.1867732449 (-10,0) | ((11,12),(13,14)) | 24.1867732449 | 24.1867732449 (-3,4) | [(1,2),(3,4)] | 4.472135955 | 4.472135955 (-3,4) | ((1,2),(3,4)) | 4.472135955 | 4.472135955 (-3,4) | [(0,0),(3,0),(4,5),(1,6)] | 4.472135955 | 4.472135955 (-3,4) | ((1,2),(3,4)) | 4.472135955 | 4.472135955 (-3,4) | ((1,2),(3,4)) | 4.472135955 | 4.472135955 (-3,4) | [(1,2),(3,4)] | 4.472135955 | 4.472135955 (-3,4) | ((10,20)) | 20.6155281281 | 20.6155281281 (-3,4) | [(11,12),(13,14)] | 16.1245154966 | 16.1245154966 (-3,4) | ((11,12),(13,14)) | 16.1245154966 | 16.1245154966 (5.1,34.5) | [(1,2),(3,4)] | 30.5722096028 | 30.5722096028 (5.1,34.5) | ((1,2),(3,4)) | 30.5722096028 | 30.5722096028 (5.1,34.5) | [(0,0),(3,0),(4,5),(1,6)] | 28.793402022 | 28.793402022 (5.1,34.5) | ((1,2),(3,4)) | 30.5722096028 | 30.5722096028 (5.1,34.5) | ((1,2),(3,4)) | 30.5722096028 | 30.5722096028 (5.1,34.5) | [(1,2),(3,4)] | 30.5722096028 | 30.5722096028 (5.1,34.5) | ((10,20)) | 15.3055545473 | 15.3055545473 (5.1,34.5) | [(11,12),(13,14)] | 21.9695243462 | 21.9695243462 (5.1,34.5) | ((11,12),(13,14)) | 21.9695243462 | 21.9695243462 (-5,-12) | [(1,2),(3,4)] | 15.2315462117 | 15.2315462117 (-5,-12) | ((1,2),(3,4)) | 15.2315462117 | 15.2315462117 (-5,-12) | [(0,0),(3,0),(4,5),(1,6)] | 13 | 13 (-5,-12) | ((1,2),(3,4)) | 15.2315462117 | 15.2315462117 (-5,-12) | ((1,2),(3,4)) | 15.2315462117 | 15.2315462117 (-5,-12) | [(1,2),(3,4)] | 15.2315462117 | 15.2315462117 (-5,-12) | ((10,20)) | 35.3411940941 | 35.3411940941 (-5,-12) | [(11,12),(13,14)] | 28.8444102037 | 28.8444102037 (-5,-12) | ((11,12),(13,14)) | 28.8444102037 | 28.8444102037 (1e-300,-1e-300) | [(1,2),(3,4)] | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | ((1,2),(3,4)) | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | [(0,0),(3,0),(4,5),(1,6)] | 1.41421356237e-300 | 1.41421356237e-300 (1e-300,-1e-300) | ((1,2),(3,4)) | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | ((1,2),(3,4)) | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | [(1,2),(3,4)] | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | ((10,20)) | 22.360679775 | 22.360679775 (1e-300,-1e-300) | [(11,12),(13,14)] | 16.2788205961 | 16.2788205961 (1e-300,-1e-300) | ((11,12),(13,14)) | 16.2788205961 | 16.2788205961 (1e+300,Infinity) | [(1,2),(3,4)] | Infinity | Infinity (1e+300,Infinity) | ((1,2),(3,4)) | Infinity | Infinity (1e+300,Infinity) | [(0,0),(3,0),(4,5),(1,6)] | Infinity | Infinity (1e+300,Infinity) | ((1,2),(3,4)) | Infinity | Infinity (1e+300,Infinity) | ((1,2),(3,4)) | Infinity | Infinity (1e+300,Infinity) | [(1,2),(3,4)] | Infinity | Infinity (1e+300,Infinity) | ((10,20)) | Infinity | Infinity (1e+300,Infinity) | [(11,12),(13,14)] | Infinity | Infinity (1e+300,Infinity) | ((11,12),(13,14)) | Infinity | Infinity (Infinity,1e+300) | [(1,2),(3,4)] | Infinity | Infinity (Infinity,1e+300) | ((1,2),(3,4)) | Infinity | Infinity (Infinity,1e+300) | [(0,0),(3,0),(4,5),(1,6)] | Infinity | Infinity (Infinity,1e+300) | ((1,2),(3,4)) | Infinity | Infinity (Infinity,1e+300) | ((1,2),(3,4)) | Infinity | Infinity (Infinity,1e+300) | [(1,2),(3,4)] | Infinity | Infinity (Infinity,1e+300) | ((10,20)) | Infinity | Infinity (Infinity,1e+300) | [(11,12),(13,14)] | Infinity | Infinity (Infinity,1e+300) | ((11,12),(13,14)) | Infinity | Infinity (NaN,NaN) | [(1,2),(3,4)] | NaN | NaN (NaN,NaN) | ((1,2),(3,4)) | NaN | NaN (NaN,NaN) | [(0,0),(3,0),(4,5),(1,6)] | NaN | NaN (NaN,NaN) | ((1,2),(3,4)) | NaN | NaN (NaN,NaN) | ((1,2),(3,4)) | NaN | NaN (NaN,NaN) | [(1,2),(3,4)] | NaN | NaN (NaN,NaN) | ((10,20)) | NaN | NaN (NaN,NaN) | [(11,12),(13,14)] | NaN | NaN (NaN,NaN) | ((11,12),(13,14)) | NaN | NaN (10,10) | [(1,2),(3,4)] | 9.21954445729 | 9.21954445729 (10,10) | ((1,2),(3,4)) | 9.21954445729 | 9.21954445729 (10,10) | [(0,0),(3,0),(4,5),(1,6)] | 7.81024967591 | 7.81024967591 (10,10) | ((1,2),(3,4)) | 9.21954445729 | 9.21954445729 (10,10) | ((1,2),(3,4)) | 9.21954445729 | 9.21954445729 (10,10) | [(1,2),(3,4)] | 9.21954445729 | 9.21954445729 (10,10) | ((10,20)) | 10 | 10 (10,10) | [(11,12),(13,14)] | 2.2360679775 | 2.2360679775 (10,10) | ((11,12),(13,14)) | 2.2360679775 | 2.2360679775 (90 rows) -- Distance to polygon SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppoly, p1.f1 <-> p.f1 AS dist_polyp FROM POINT_TBL p, POLYGON_TBL p1; f1 | f1 | dist_ppoly | dist_polyp -------------------+----------------------------+---------------+--------------- (0,0) | ((2,0),(2,4),(0,0)) | 0 | 0 (0,0) | ((3,1),(3,3),(1,0)) | 1 | 1 (0,0) | ((1,2),(3,4),(5,6),(7,8)) | 2.2360679775 | 2.2360679775 (0,0) | ((7,8),(5,6),(3,4),(1,2)) | 2.2360679775 | 2.2360679775 (0,0) | ((1,2),(7,8),(5,6),(3,-4)) | 1.58113883008 | 1.58113883008 (0,0) | ((0,0)) | 0 | 0 (0,0) | ((0,1),(0,1)) | 1 | 1 (-10,0) | ((2,0),(2,4),(0,0)) | 10 | 10 (-10,0) | ((3,1),(3,3),(1,0)) | 11 | 11 (-10,0) | ((1,2),(3,4),(5,6),(7,8)) | 11.1803398875 | 11.1803398875 (-10,0) | ((7,8),(5,6),(3,4),(1,2)) | 11.1803398875 | 11.1803398875 (-10,0) | ((1,2),(7,8),(5,6),(3,-4)) | 11.1803398875 | 11.1803398875 (-10,0) | ((0,0)) | 10 | 10 (-10,0) | ((0,1),(0,1)) | 10.0498756211 | 10.0498756211 (-3,4) | ((2,0),(2,4),(0,0)) | 4.472135955 | 4.472135955 (-3,4) | ((3,1),(3,3),(1,0)) | 5.54700196225 | 5.54700196225 (-3,4) | ((1,2),(3,4),(5,6),(7,8)) | 4.472135955 | 4.472135955 (-3,4) | ((7,8),(5,6),(3,4),(1,2)) | 4.472135955 | 4.472135955 (-3,4) | ((1,2),(7,8),(5,6),(3,-4)) | 4.472135955 | 4.472135955 (-3,4) | ((0,0)) | 5 | 5 (-3,4) | ((0,1),(0,1)) | 4.24264068712 | 4.24264068712 (5.1,34.5) | ((2,0),(2,4),(0,0)) | 30.6571362002 | 30.6571362002 (5.1,34.5) | ((3,1),(3,3),(1,0)) | 31.5699223946 | 31.5699223946 (5.1,34.5) | ((1,2),(3,4),(5,6),(7,8)) | 26.5680258958 | 26.5680258958 (5.1,34.5) | ((7,8),(5,6),(3,4),(1,2)) | 26.5680258958 | 26.5680258958 (5.1,34.5) | ((1,2),(7,8),(5,6),(3,-4)) | 26.5680258958 | 26.5680258958 (5.1,34.5) | ((0,0)) | 34.8749193547 | 34.8749193547 (5.1,34.5) | ((0,1),(0,1)) | 33.8859853037 | 33.8859853037 (-5,-12) | ((2,0),(2,4),(0,0)) | 13 | 13 (-5,-12) | ((3,1),(3,3),(1,0)) | 13.416407865 | 13.416407865 (-5,-12) | ((1,2),(3,4),(5,6),(7,8)) | 15.2315462117 | 15.2315462117 (-5,-12) | ((7,8),(5,6),(3,4),(1,2)) | 15.2315462117 | 15.2315462117 (-5,-12) | ((1,2),(7,8),(5,6),(3,-4)) | 11.313708499 | 11.313708499 (-5,-12) | ((0,0)) | 13 | 13 (-5,-12) | ((0,1),(0,1)) | 13.9283882772 | 13.9283882772 (1e-300,-1e-300) | ((2,0),(2,4),(0,0)) | 0 | 0 (1e-300,-1e-300) | ((3,1),(3,3),(1,0)) | 1 | 1 (1e-300,-1e-300) | ((1,2),(3,4),(5,6),(7,8)) | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | ((7,8),(5,6),(3,4),(1,2)) | 2.2360679775 | 2.2360679775 (1e-300,-1e-300) | ((1,2),(7,8),(5,6),(3,-4)) | 1.58113883008 | 1.58113883008 (1e-300,-1e-300) | ((0,0)) | 0 | 0 (1e-300,-1e-300) | ((0,1),(0,1)) | 1 | 1 (1e+300,Infinity) | ((2,0),(2,4),(0,0)) | Infinity | Infinity (1e+300,Infinity) | ((3,1),(3,3),(1,0)) | Infinity | Infinity (1e+300,Infinity) | ((1,2),(3,4),(5,6),(7,8)) | Infinity | Infinity (1e+300,Infinity) | ((7,8),(5,6),(3,4),(1,2)) | Infinity | Infinity (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | Infinity | Infinity (1e+300,Infinity) | ((0,0)) | Infinity | Infinity (1e+300,Infinity) | ((0,1),(0,1)) | Infinity | Infinity (Infinity,1e+300) | ((2,0),(2,4),(0,0)) | Infinity | Infinity (Infinity,1e+300) | ((3,1),(3,3),(1,0)) | Infinity | Infinity (Infinity,1e+300) | ((1,2),(3,4),(5,6),(7,8)) | Infinity | Infinity (Infinity,1e+300) | ((7,8),(5,6),(3,4),(1,2)) | Infinity | Infinity (Infinity,1e+300) | ((1,2),(7,8),(5,6),(3,-4)) | Infinity | Infinity (Infinity,1e+300) | ((0,0)) | Infinity | Infinity (Infinity,1e+300) | ((0,1),(0,1)) | Infinity | Infinity (NaN,NaN) | ((2,0),(2,4),(0,0)) | 0 | 0 (NaN,NaN) | ((3,1),(3,3),(1,0)) | 0 | 0 (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | 0 | 0 (NaN,NaN) | ((7,8),(5,6),(3,4),(1,2)) | 0 | 0 (NaN,NaN) | ((1,2),(7,8),(5,6),(3,-4)) | 0 | 0 (NaN,NaN) | ((0,0)) | 0 | 0 (NaN,NaN) | ((0,1),(0,1)) | 0 | 0 (10,10) | ((2,0),(2,4),(0,0)) | 10 | 10 (10,10) | ((3,1),(3,3),(1,0)) | 9.89949493661 | 9.89949493661 (10,10) | ((1,2),(3,4),(5,6),(7,8)) | 3.60555127546 | 3.60555127546 (10,10) | ((7,8),(5,6),(3,4),(1,2)) | 3.60555127546 | 3.60555127546 (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | 3.60555127546 | 3.60555127546 (10,10) | ((0,0)) | 14.1421356237 | 14.1421356237 (10,10) | ((0,1),(0,1)) | 13.4536240471 | 13.4536240471 (70 rows) -- Construct line through two points SELECT p1.f1, p2.f1, line(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1 <> p2.f1; f1 | f1 | line -------------------+-------------------+---------------------------------------- (0,0) | (-10,0) | {0,-1,0} (0,0) | (-3,4) | {-1.33333333333,-1,0} (0,0) | (5.1,34.5) | {6.76470588235,-1,0} (0,0) | (-5,-12) | {2.4,-1,0} (0,0) | (1e+300,Infinity) | {-1,0,0} (0,0) | (Infinity,1e+300) | {0,-1,0} (0,0) | (NaN,NaN) | {NaN,-1,NaN} (0,0) | (10,10) | {1,-1,0} (-10,0) | (0,0) | {0,-1,0} (-10,0) | (-3,4) | {0.571428571429,-1,5.71428571429} (-10,0) | (5.1,34.5) | {2.28476821192,-1,22.8476821192} (-10,0) | (-5,-12) | {-2.4,-1,-24} (-10,0) | (1e-300,-1e-300) | {0,-1,0} (-10,0) | (1e+300,Infinity) | {-1,0,-10} (-10,0) | (Infinity,1e+300) | {0,-1,0} (-10,0) | (NaN,NaN) | {NaN,-1,NaN} (-10,0) | (10,10) | {0.5,-1,5} (-3,4) | (0,0) | {-1.33333333333,-1,0} (-3,4) | (-10,0) | {0.571428571429,-1,5.71428571429} (-3,4) | (5.1,34.5) | {3.76543209877,-1,15.2962962963} (-3,4) | (-5,-12) | {8,-1,28} (-3,4) | (1e-300,-1e-300) | {-1.33333333333,-1,0} (-3,4) | (1e+300,Infinity) | {-1,0,-3} (-3,4) | (Infinity,1e+300) | {0,-1,4} (-3,4) | (NaN,NaN) | {NaN,-1,NaN} (-3,4) | (10,10) | {0.461538461538,-1,5.38461538462} (5.1,34.5) | (0,0) | {6.76470588235,-1,0} (5.1,34.5) | (-10,0) | {2.28476821192,-1,22.8476821192} (5.1,34.5) | (-3,4) | {3.76543209877,-1,15.2962962963} (5.1,34.5) | (-5,-12) | {4.60396039604,-1,11.0198019802} (5.1,34.5) | (1e-300,-1e-300) | {6.76470588235,-1,0} (5.1,34.5) | (1e+300,Infinity) | {-1,0,5.1} (5.1,34.5) | (Infinity,1e+300) | {0,-1,34.5} (5.1,34.5) | (NaN,NaN) | {NaN,-1,NaN} (5.1,34.5) | (10,10) | {-5,-1,60} (-5,-12) | (0,0) | {2.4,-1,0} (-5,-12) | (-10,0) | {-2.4,-1,-24} (-5,-12) | (-3,4) | {8,-1,28} (-5,-12) | (5.1,34.5) | {4.60396039604,-1,11.0198019802} (-5,-12) | (1e-300,-1e-300) | {2.4,-1,0} (-5,-12) | (1e+300,Infinity) | {-1,0,-5} (-5,-12) | (Infinity,1e+300) | {0,-1,-12} (-5,-12) | (NaN,NaN) | {NaN,-1,NaN} (-5,-12) | (10,10) | {1.46666666667,-1,-4.66666666667} (1e-300,-1e-300) | (-10,0) | {0,-1,-1e-300} (1e-300,-1e-300) | (-3,4) | {-1.33333333333,-1,3.33333333333e-301} (1e-300,-1e-300) | (5.1,34.5) | {6.76470588235,-1,-7.76470588235e-300} (1e-300,-1e-300) | (-5,-12) | {2.4,-1,-3.4e-300} (1e-300,-1e-300) | (1e+300,Infinity) | {-1,0,1e-300} (1e-300,-1e-300) | (Infinity,1e+300) | {0,-1,-1e-300} (1e-300,-1e-300) | (NaN,NaN) | {NaN,-1,NaN} (1e-300,-1e-300) | (10,10) | {1,-1,-2e-300} (1e+300,Infinity) | (0,0) | {-1,0,1e+300} (1e+300,Infinity) | (-10,0) | {-1,0,1e+300} (1e+300,Infinity) | (-3,4) | {-1,0,1e+300} (1e+300,Infinity) | (5.1,34.5) | {-1,0,1e+300} (1e+300,Infinity) | (-5,-12) | {-1,0,1e+300} (1e+300,Infinity) | (1e-300,-1e-300) | {-1,0,1e+300} (1e+300,Infinity) | (Infinity,1e+300) | {NaN,-1,NaN} (1e+300,Infinity) | (NaN,NaN) | {NaN,-1,NaN} (1e+300,Infinity) | (10,10) | {-1,0,1e+300} (Infinity,1e+300) | (0,0) | {0,-1,1e+300} (Infinity,1e+300) | (-10,0) | {0,-1,1e+300} (Infinity,1e+300) | (-3,4) | {0,-1,1e+300} (Infinity,1e+300) | (5.1,34.5) | {0,-1,1e+300} (Infinity,1e+300) | (-5,-12) | {0,-1,1e+300} (Infinity,1e+300) | (1e-300,-1e-300) | {0,-1,1e+300} (Infinity,1e+300) | (1e+300,Infinity) | {NaN,-1,NaN} (Infinity,1e+300) | (NaN,NaN) | {NaN,-1,NaN} (Infinity,1e+300) | (10,10) | {0,-1,1e+300} (NaN,NaN) | (0,0) | {NaN,-1,NaN} (NaN,NaN) | (-10,0) | {NaN,-1,NaN} (NaN,NaN) | (-3,4) | {NaN,-1,NaN} (NaN,NaN) | (5.1,34.5) | {NaN,-1,NaN} (NaN,NaN) | (-5,-12) | {NaN,-1,NaN} (NaN,NaN) | (1e-300,-1e-300) | {NaN,-1,NaN} (NaN,NaN) | (1e+300,Infinity) | {NaN,-1,NaN} (NaN,NaN) | (Infinity,1e+300) | {NaN,-1,NaN} (NaN,NaN) | (10,10) | {NaN,-1,NaN} (10,10) | (0,0) | {1,-1,0} (10,10) | (-10,0) | {0.5,-1,5} (10,10) | (-3,4) | {0.461538461538,-1,5.38461538462} (10,10) | (5.1,34.5) | {-5,-1,60} (10,10) | (-5,-12) | {1.46666666667,-1,-4.66666666667} (10,10) | (1e-300,-1e-300) | {1,-1,0} (10,10) | (1e+300,Infinity) | {-1,0,10} (10,10) | (Infinity,1e+300) | {0,-1,10} (10,10) | (NaN,NaN) | {NaN,-1,NaN} (88 rows) -- Closest point to line SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l; f1 | s | ?column? -------------------+---------------------------------------+---------------------------------- (0,0) | {0,-1,5} | (0,5) (0,0) | {1,0,5} | (-5,0) (0,0) | {0,3,0} | (0,0) (0,0) | {1,-1,0} | (0,0) (0,0) | {-0.4,-1,-6} | (-2.06896551724,-5.1724137931) (0,0) | {-0.000184615384615,-1,15.3846153846} | (0.00284023658959,15.3846148603) (0,0) | {3,NaN,5} | (0,0) | {NaN,NaN,NaN} | (0,0) | {0,-1,3} | (0,3) (0,0) | {-1,0,3} | (3,0) (-10,0) | {0,-1,5} | (-10,5) (-10,0) | {1,0,5} | (-5,0) (-10,0) | {0,3,0} | (-10,0) (-10,0) | {1,-1,0} | (-5,-5) (-10,0) | {-0.4,-1,-6} | (-10.6896551724,-1.72413793103) (-10,0) | {-0.000184615384615,-1,15.3846153846} | (-9.99715942258,15.386461014) (-10,0) | {3,NaN,5} | (-10,0) | {NaN,NaN,NaN} | (-10,0) | {0,-1,3} | (-10,3) (-10,0) | {-1,0,3} | (3,0) (-3,4) | {0,-1,5} | (-3,5) (-3,4) | {1,0,5} | (-5,4) (-3,4) | {0,3,0} | (-3,0) (-3,4) | {1,-1,0} | (0.5,0.5) (-3,4) | {-0.4,-1,-6} | (-6.03448275862,-3.58620689655) (-3,4) | {-0.000184615384615,-1,15.3846153846} | (-2.99789812268,15.3851688427) (-3,4) | {3,NaN,5} | (-3,4) | {NaN,NaN,NaN} | (-3,4) | {0,-1,3} | (-3,3) (-3,4) | {-1,0,3} | (3,4) (5.1,34.5) | {0,-1,5} | (5.1,5) (5.1,34.5) | {1,0,5} | (-5,34.5) (5.1,34.5) | {0,3,0} | (5.1,0) (5.1,34.5) | {1,-1,0} | (19.8,19.8) (5.1,34.5) | {-0.4,-1,-6} | (-9.56896551724,-2.1724137931) (5.1,34.5) | {-0.000184615384615,-1,15.3846153846} | (5.09647083221,15.3836744977) (5.1,34.5) | {3,NaN,5} | (5.1,34.5) | {NaN,NaN,NaN} | (5.1,34.5) | {0,-1,3} | (5.1,3) (5.1,34.5) | {-1,0,3} | (3,34.5) (-5,-12) | {0,-1,5} | (-5,5) (-5,-12) | {1,0,5} | (-5,-12) (-5,-12) | {0,3,0} | (-5,0) (-5,-12) | {1,-1,0} | (-8.5,-8.5) (-5,-12) | {-0.4,-1,-6} | (-2.24137931034,-5.10344827586) (-5,-12) | {-0.000184615384615,-1,15.3846153846} | (-4.99494420846,15.3855375282) (-5,-12) | {3,NaN,5} | (-5,-12) | {NaN,NaN,NaN} | (-5,-12) | {0,-1,3} | (-5,3) (-5,-12) | {-1,0,3} | (3,-12) (1e-300,-1e-300) | {0,-1,5} | (1e-300,5) (1e-300,-1e-300) | {1,0,5} | (-5,-1e-300) (1e-300,-1e-300) | {0,3,0} | (1e-300,0) (1e-300,-1e-300) | {1,-1,0} | (0,0) (1e-300,-1e-300) | {-0.4,-1,-6} | (-2.06896551724,-5.1724137931) (1e-300,-1e-300) | {-0.000184615384615,-1,15.3846153846} | (0.00284023658959,15.3846148603) (1e-300,-1e-300) | {3,NaN,5} | (1e-300,-1e-300) | {NaN,NaN,NaN} | (1e-300,-1e-300) | {0,-1,3} | (1e-300,3) (1e-300,-1e-300) | {-1,0,3} | (3,-1e-300) (1e+300,Infinity) | {0,-1,5} | (1e+300,5) (1e+300,Infinity) | {1,0,5} | (1e+300,Infinity) | {0,3,0} | (1e+300,0) (1e+300,Infinity) | {1,-1,0} | (Infinity,NaN) (1e+300,Infinity) | {-0.4,-1,-6} | (-Infinity,NaN) (1e+300,Infinity) | {-0.000184615384615,-1,15.3846153846} | (-Infinity,NaN) (1e+300,Infinity) | {3,NaN,5} | (1e+300,Infinity) | {NaN,NaN,NaN} | (1e+300,Infinity) | {0,-1,3} | (1e+300,3) (1e+300,Infinity) | {-1,0,3} | (Infinity,1e+300) | {0,-1,5} | (Infinity,1e+300) | {1,0,5} | (-5,1e+300) (Infinity,1e+300) | {0,3,0} | (Infinity,1e+300) | {1,-1,0} | (Infinity,1e+300) | {-0.4,-1,-6} | (Infinity,1e+300) | {-0.000184615384615,-1,15.3846153846} | (Infinity,1e+300) | {3,NaN,5} | (Infinity,1e+300) | {NaN,NaN,NaN} | (Infinity,1e+300) | {0,-1,3} | (Infinity,1e+300) | {-1,0,3} | (3,1e+300) (NaN,NaN) | {0,-1,5} | (NaN,NaN) | {1,0,5} | (NaN,NaN) | {0,3,0} | (NaN,NaN) | {1,-1,0} | (NaN,NaN) | {-0.4,-1,-6} | (NaN,NaN) | {-0.000184615384615,-1,15.3846153846} | (NaN,NaN) | {3,NaN,5} | (NaN,NaN) | {NaN,NaN,NaN} | (NaN,NaN) | {0,-1,3} | (NaN,NaN) | {-1,0,3} | (10,10) | {0,-1,5} | (10,5) (10,10) | {1,0,5} | (-5,10) (10,10) | {0,3,0} | (10,0) (10,10) | {1,-1,0} | (10,10) (10,10) | {-0.4,-1,-6} | (3.10344827586,-7.24137931034) (10,10) | {-0.000184615384615,-1,15.3846153846} | (10.000993742,15.3827690473) (10,10) | {3,NaN,5} | (10,10) | {NaN,NaN,NaN} | (10,10) | {0,-1,3} | (10,3) (10,10) | {-1,0,3} | (3,10) (100 rows) -- Closest point to line segment SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l; f1 | s | ?column? -------------------+-------------------------------+---------------------------------- (0,0) | [(1,2),(3,4)] | (1,2) (0,0) | [(0,0),(6,6)] | (0,0) (0,0) | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024) (0,0) | [(-1000000,200),(300000,-40)] | (0.00284023658959,15.3846148603) (0,0) | [(11,22),(33,44)] | (11,22) (0,0) | [(-10,2),(-10,3)] | (-10,2) (0,0) | [(0,-20),(30,-20)] | (0,-20) (0,0) | [(NaN,1),(NaN,90)] | (-10,0) | [(1,2),(3,4)] | (1,2) (-10,0) | [(0,0),(6,6)] | (0,0) (-10,0) | [(10,-10),(-3,-4)] | (-3,-4) (-10,0) | [(-1000000,200),(300000,-40)] | (-9.99715942258,15.386461014) (-10,0) | [(11,22),(33,44)] | (11,22) (-10,0) | [(-10,2),(-10,3)] | (-10,2) (-10,0) | [(0,-20),(30,-20)] | (0,-20) (-10,0) | [(NaN,1),(NaN,90)] | (-3,4) | [(1,2),(3,4)] | (1,2) (-3,4) | [(0,0),(6,6)] | (0.5,0.5) (-3,4) | [(10,-10),(-3,-4)] | (-3,-4) (-3,4) | [(-1000000,200),(300000,-40)] | (-2.99789812268,15.3851688427) (-3,4) | [(11,22),(33,44)] | (11,22) (-3,4) | [(-10,2),(-10,3)] | (-10,3) (-3,4) | [(0,-20),(30,-20)] | (0,-20) (-3,4) | [(NaN,1),(NaN,90)] | (5.1,34.5) | [(1,2),(3,4)] | (3,4) (5.1,34.5) | [(0,0),(6,6)] | (6,6) (5.1,34.5) | [(10,-10),(-3,-4)] | (-3,-4) (5.1,34.5) | [(-1000000,200),(300000,-40)] | (5.09647083221,15.3836744977) (5.1,34.5) | [(11,22),(33,44)] | (14.3,25.3) (5.1,34.5) | [(-10,2),(-10,3)] | (-10,3) (5.1,34.5) | [(0,-20),(30,-20)] | (5.1,-20) (5.1,34.5) | [(NaN,1),(NaN,90)] | (-5,-12) | [(1,2),(3,4)] | (1,2) (-5,-12) | [(0,0),(6,6)] | (0,0) (-5,-12) | [(10,-10),(-3,-4)] | (-1.60487804878,-4.64390243902) (-5,-12) | [(-1000000,200),(300000,-40)] | (-4.99494420846,15.3855375282) (-5,-12) | [(11,22),(33,44)] | (11,22) (-5,-12) | [(-10,2),(-10,3)] | (-10,2) (-5,-12) | [(0,-20),(30,-20)] | (0,-20) (-5,-12) | [(NaN,1),(NaN,90)] | (1e-300,-1e-300) | [(1,2),(3,4)] | (1,2) (1e-300,-1e-300) | [(0,0),(6,6)] | (0,0) (1e-300,-1e-300) | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024) (1e-300,-1e-300) | [(-1000000,200),(300000,-40)] | (0.00284023658959,15.3846148603) (1e-300,-1e-300) | [(11,22),(33,44)] | (11,22) (1e-300,-1e-300) | [(-10,2),(-10,3)] | (-10,2) (1e-300,-1e-300) | [(0,-20),(30,-20)] | (0,-20) (1e-300,-1e-300) | [(NaN,1),(NaN,90)] | (1e+300,Infinity) | [(1,2),(3,4)] | (3,4) (1e+300,Infinity) | [(0,0),(6,6)] | (6,6) (1e+300,Infinity) | [(10,-10),(-3,-4)] | (-3,-4) (1e+300,Infinity) | [(-1000000,200),(300000,-40)] | (300000,-40) (1e+300,Infinity) | [(11,22),(33,44)] | (33,44) (1e+300,Infinity) | [(-10,2),(-10,3)] | (-10,3) (1e+300,Infinity) | [(0,-20),(30,-20)] | (30,-20) (1e+300,Infinity) | [(NaN,1),(NaN,90)] | (NaN,90) (Infinity,1e+300) | [(1,2),(3,4)] | (3,4) (Infinity,1e+300) | [(0,0),(6,6)] | (6,6) (Infinity,1e+300) | [(10,-10),(-3,-4)] | (-3,-4) (Infinity,1e+300) | [(-1000000,200),(300000,-40)] | (300000,-40) (Infinity,1e+300) | [(11,22),(33,44)] | (33,44) (Infinity,1e+300) | [(-10,2),(-10,3)] | (-10,3) (Infinity,1e+300) | [(0,-20),(30,-20)] | (30,-20) (Infinity,1e+300) | [(NaN,1),(NaN,90)] | (NaN,NaN) | [(1,2),(3,4)] | (NaN,NaN) | [(0,0),(6,6)] | (NaN,NaN) | [(10,-10),(-3,-4)] | (NaN,NaN) | [(-1000000,200),(300000,-40)] | (NaN,NaN) | [(11,22),(33,44)] | (NaN,NaN) | [(-10,2),(-10,3)] | (NaN,NaN) | [(0,-20),(30,-20)] | (NaN,NaN) | [(NaN,1),(NaN,90)] | (10,10) | [(1,2),(3,4)] | (3,4) (10,10) | [(0,0),(6,6)] | (6,6) (10,10) | [(10,-10),(-3,-4)] | (2.39024390244,-6.48780487805) (10,10) | [(-1000000,200),(300000,-40)] | (10.000993742,15.3827690473) (10,10) | [(11,22),(33,44)] | (11,22) (10,10) | [(-10,2),(-10,3)] | (-10,3) (10,10) | [(0,-20),(30,-20)] | (10,-20) (10,10) | [(NaN,1),(NaN,90)] | (80 rows) -- Closest point to box SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b; f1 | f1 | ?column? -------------------+---------------------+-------------- (0,0) | (2,2),(0,0) | (0,0) (0,0) | (3,3),(1,1) | (1,1) (0,0) | (-2,2),(-8,-10) | (-2,0) (0,0) | (2.5,3.5),(2.5,2.5) | (2.5,2.5) (0,0) | (3,3),(3,3) | (3,3) (-10,0) | (2,2),(0,0) | (0,0) (-10,0) | (3,3),(1,1) | (1,1) (-10,0) | (-2,2),(-8,-10) | (-8,0) (-10,0) | (2.5,3.5),(2.5,2.5) | (2.5,2.5) (-10,0) | (3,3),(3,3) | (3,3) (-3,4) | (2,2),(0,0) | (0,2) (-3,4) | (3,3),(1,1) | (1,3) (-3,4) | (-2,2),(-8,-10) | (-3,2) (-3,4) | (2.5,3.5),(2.5,2.5) | (2.5,3.5) (-3,4) | (3,3),(3,3) | (3,3) (5.1,34.5) | (2,2),(0,0) | (2,2) (5.1,34.5) | (3,3),(1,1) | (3,3) (5.1,34.5) | (-2,2),(-8,-10) | (-2,2) (5.1,34.5) | (2.5,3.5),(2.5,2.5) | (2.5,3.5) (5.1,34.5) | (3,3),(3,3) | (3,3) (-5,-12) | (2,2),(0,0) | (0,0) (-5,-12) | (3,3),(1,1) | (1,1) (-5,-12) | (-2,2),(-8,-10) | (-5,-10) (-5,-12) | (2.5,3.5),(2.5,2.5) | (2.5,2.5) (-5,-12) | (3,3),(3,3) | (3,3) (1e-300,-1e-300) | (2,2),(0,0) | (0,0) (1e-300,-1e-300) | (3,3),(1,1) | (1,1) (1e-300,-1e-300) | (-2,2),(-8,-10) | (-2,-1e-300) (1e-300,-1e-300) | (2.5,3.5),(2.5,2.5) | (2.5,2.5) (1e-300,-1e-300) | (3,3),(3,3) | (3,3) (1e+300,Infinity) | (2,2),(0,0) | (0,2) (1e+300,Infinity) | (3,3),(1,1) | (1,3) (1e+300,Infinity) | (-2,2),(-8,-10) | (-8,2) (1e+300,Infinity) | (2.5,3.5),(2.5,2.5) | (2.5,3.5) (1e+300,Infinity) | (3,3),(3,3) | (3,3) (Infinity,1e+300) | (2,2),(0,0) | (0,2) (Infinity,1e+300) | (3,3),(1,1) | (1,3) (Infinity,1e+300) | (-2,2),(-8,-10) | (-8,2) (Infinity,1e+300) | (2.5,3.5),(2.5,2.5) | (2.5,3.5) (Infinity,1e+300) | (3,3),(3,3) | (3,3) (NaN,NaN) | (2,2),(0,0) | (NaN,NaN) | (3,3),(1,1) | (NaN,NaN) | (-2,2),(-8,-10) | (NaN,NaN) | (2.5,3.5),(2.5,2.5) | (NaN,NaN) | (3,3),(3,3) | (10,10) | (2,2),(0,0) | (2,2) (10,10) | (3,3),(1,1) | (3,3) (10,10) | (-2,2),(-8,-10) | (-2,2) (10,10) | (2.5,3.5),(2.5,2.5) | (2.5,3.5) (10,10) | (3,3),(3,3) | (3,3) (50 rows) -- On line SELECT p.f1, l.s FROM POINT_TBL p, LINE_TBL l WHERE p.f1 <@ l.s; f1 | s ------------------+---------- (0,0) | {0,3,0} (0,0) | {1,-1,0} (-10,0) | {0,3,0} (-5,-12) | {1,0,5} (1e-300,-1e-300) | {0,3,0} (1e-300,-1e-300) | {1,-1,0} (10,10) | {1,-1,0} (7 rows) -- On line segment SELECT p.f1, l.s FROM POINT_TBL p, LSEG_TBL l WHERE p.f1 <@ l.s; f1 | s ------------------+--------------- (0,0) | [(0,0),(6,6)] (1e-300,-1e-300) | [(0,0),(6,6)] (2 rows) -- On path SELECT p.f1, p1.f1 FROM POINT_TBL p, PATH_TBL p1 WHERE p.f1 <@ p1.f1; f1 | f1 ------------------+--------------------------- (0,0) | [(0,0),(3,0),(4,5),(1,6)] (1e-300,-1e-300) | [(0,0),(3,0),(4,5),(1,6)] (NaN,NaN) | ((1,2),(3,4)) (NaN,NaN) | ((1,2),(3,4)) (NaN,NaN) | ((1,2),(3,4)) (NaN,NaN) | ((10,20)) (NaN,NaN) | ((11,12),(13,14)) (7 rows) -- -- Lines -- -- Vertical SELECT s FROM LINE_TBL WHERE ?| s; s ---------- {1,0,5} {-1,0,3} (2 rows) -- Horizontal SELECT s FROM LINE_TBL WHERE ?- s; s ---------- {0,-1,5} {0,3,0} {0,-1,3} (3 rows) -- Same as line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s = l2.s; s | s ---------------------------------------+--------------------------------------- {0,-1,5} | {0,-1,5} {1,0,5} | {1,0,5} {0,3,0} | {0,3,0} {1,-1,0} | {1,-1,0} {-0.4,-1,-6} | {-0.4,-1,-6} {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} {3,NaN,5} | {3,NaN,5} {NaN,NaN,NaN} | {NaN,NaN,NaN} {0,-1,3} | {0,-1,3} {-1,0,3} | {-1,0,3} (10 rows) -- Parallel to line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?|| l2.s; s | s ---------------------------------------+--------------------------------------- {0,-1,5} | {0,-1,5} {0,-1,5} | {0,3,0} {0,-1,5} | {0,-1,3} {1,0,5} | {1,0,5} {1,0,5} | {-1,0,3} {0,3,0} | {0,-1,5} {0,3,0} | {0,3,0} {0,3,0} | {0,-1,3} {1,-1,0} | {1,-1,0} {-0.4,-1,-6} | {-0.4,-1,-6} {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} {0,-1,3} | {0,-1,5} {0,-1,3} | {0,3,0} {0,-1,3} | {0,-1,3} {-1,0,3} | {1,0,5} {-1,0,3} | {-1,0,3} (16 rows) -- Perpendicular to line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?-| l2.s; s | s ----------+---------- {0,-1,5} | {1,0,5} {0,-1,5} | {-1,0,3} {1,0,5} | {0,-1,5} {1,0,5} | {0,3,0} {1,0,5} | {0,-1,3} {0,3,0} | {1,0,5} {0,3,0} | {-1,0,3} {0,-1,3} | {1,0,5} {0,-1,3} | {-1,0,3} {-1,0,3} | {0,-1,5} {-1,0,3} | {0,3,0} {-1,0,3} | {0,-1,3} (12 rows) -- Distance to line SELECT l1.s, l2.s, l1.s <-> l2.s FROM LINE_TBL l1, LINE_TBL l2; s | s | ?column? ---------------------------------------+---------------------------------------+---------- {0,-1,5} | {0,-1,5} | 0 {0,-1,5} | {1,0,5} | 0 {0,-1,5} | {0,3,0} | 5 {0,-1,5} | {1,-1,0} | 0 {0,-1,5} | {-0.4,-1,-6} | 0 {0,-1,5} | {-0.000184615384615,-1,15.3846153846} | 0 {0,-1,5} | {3,NaN,5} | 0 {0,-1,5} | {NaN,NaN,NaN} | 0 {0,-1,5} | {0,-1,3} | 2 {0,-1,5} | {-1,0,3} | 0 {1,0,5} | {0,-1,5} | 0 {1,0,5} | {1,0,5} | 0 {1,0,5} | {0,3,0} | 0 {1,0,5} | {1,-1,0} | 0 {1,0,5} | {-0.4,-1,-6} | 0 {1,0,5} | {-0.000184615384615,-1,15.3846153846} | 0 {1,0,5} | {3,NaN,5} | 0 {1,0,5} | {NaN,NaN,NaN} | 0 {1,0,5} | {0,-1,3} | 0 {1,0,5} | {-1,0,3} | 8 {0,3,0} | {0,-1,5} | 5 {0,3,0} | {1,0,5} | 0 {0,3,0} | {0,3,0} | 0 {0,3,0} | {1,-1,0} | 0 {0,3,0} | {-0.4,-1,-6} | 0 {0,3,0} | {-0.000184615384615,-1,15.3846153846} | 0 {0,3,0} | {3,NaN,5} | 0 {0,3,0} | {NaN,NaN,NaN} | 0 {0,3,0} | {0,-1,3} | 3 {0,3,0} | {-1,0,3} | 0 {1,-1,0} | {0,-1,5} | 0 {1,-1,0} | {1,0,5} | 0 {1,-1,0} | {0,3,0} | 0 {1,-1,0} | {1,-1,0} | 0 {1,-1,0} | {-0.4,-1,-6} | 0 {1,-1,0} | {-0.000184615384615,-1,15.3846153846} | 0 {1,-1,0} | {3,NaN,5} | 0 {1,-1,0} | {NaN,NaN,NaN} | 0 {1,-1,0} | {0,-1,3} | 0 {1,-1,0} | {-1,0,3} | 0 {-0.4,-1,-6} | {0,-1,5} | 0 {-0.4,-1,-6} | {1,0,5} | 0 {-0.4,-1,-6} | {0,3,0} | 0 {-0.4,-1,-6} | {1,-1,0} | 0 {-0.4,-1,-6} | {-0.4,-1,-6} | 0 {-0.4,-1,-6} | {-0.000184615384615,-1,15.3846153846} | 0 {-0.4,-1,-6} | {3,NaN,5} | 0 {-0.4,-1,-6} | {NaN,NaN,NaN} | 0 {-0.4,-1,-6} | {0,-1,3} | 0 {-0.4,-1,-6} | {-1,0,3} | 0 {-0.000184615384615,-1,15.3846153846} | {0,-1,5} | 0 {-0.000184615384615,-1,15.3846153846} | {1,0,5} | 0 {-0.000184615384615,-1,15.3846153846} | {0,3,0} | 0 {-0.000184615384615,-1,15.3846153846} | {1,-1,0} | 0 {-0.000184615384615,-1,15.3846153846} | {-0.4,-1,-6} | 0 {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} | 0 {-0.000184615384615,-1,15.3846153846} | {3,NaN,5} | 0 {-0.000184615384615,-1,15.3846153846} | {NaN,NaN,NaN} | 0 {-0.000184615384615,-1,15.3846153846} | {0,-1,3} | 0 {-0.000184615384615,-1,15.3846153846} | {-1,0,3} | 0 {3,NaN,5} | {0,-1,5} | 0 {3,NaN,5} | {1,0,5} | 0 {3,NaN,5} | {0,3,0} | 0 {3,NaN,5} | {1,-1,0} | 0 {3,NaN,5} | {-0.4,-1,-6} | 0 {3,NaN,5} | {-0.000184615384615,-1,15.3846153846} | 0 {3,NaN,5} | {3,NaN,5} | 0 {3,NaN,5} | {NaN,NaN,NaN} | 0 {3,NaN,5} | {0,-1,3} | 0 {3,NaN,5} | {-1,0,3} | 0 {NaN,NaN,NaN} | {0,-1,5} | 0 {NaN,NaN,NaN} | {1,0,5} | 0 {NaN,NaN,NaN} | {0,3,0} | 0 {NaN,NaN,NaN} | {1,-1,0} | 0 {NaN,NaN,NaN} | {-0.4,-1,-6} | 0 {NaN,NaN,NaN} | {-0.000184615384615,-1,15.3846153846} | 0 {NaN,NaN,NaN} | {3,NaN,5} | 0 {NaN,NaN,NaN} | {NaN,NaN,NaN} | 0 {NaN,NaN,NaN} | {0,-1,3} | 0 {NaN,NaN,NaN} | {-1,0,3} | 0 {0,-1,3} | {0,-1,5} | 2 {0,-1,3} | {1,0,5} | 0 {0,-1,3} | {0,3,0} | 3 {0,-1,3} | {1,-1,0} | 0 {0,-1,3} | {-0.4,-1,-6} | 0 {0,-1,3} | {-0.000184615384615,-1,15.3846153846} | 0 {0,-1,3} | {3,NaN,5} | 0 {0,-1,3} | {NaN,NaN,NaN} | 0 {0,-1,3} | {0,-1,3} | 0 {0,-1,3} | {-1,0,3} | 0 {-1,0,3} | {0,-1,5} | 0 {-1,0,3} | {1,0,5} | 8 {-1,0,3} | {0,3,0} | 0 {-1,0,3} | {1,-1,0} | 0 {-1,0,3} | {-0.4,-1,-6} | 0 {-1,0,3} | {-0.000184615384615,-1,15.3846153846} | 0 {-1,0,3} | {3,NaN,5} | 0 {-1,0,3} | {NaN,NaN,NaN} | 0 {-1,0,3} | {0,-1,3} | 0 {-1,0,3} | {-1,0,3} | 0 (100 rows) -- Intersect with line SELECT l1.s, l2.s FROM LINE_TBL l1, LINE_TBL l2 WHERE l1.s ?# l2.s; s | s ---------------------------------------+--------------------------------------- {0,-1,5} | {1,0,5} {0,-1,5} | {1,-1,0} {0,-1,5} | {-0.4,-1,-6} {0,-1,5} | {-0.000184615384615,-1,15.3846153846} {0,-1,5} | {3,NaN,5} {0,-1,5} | {NaN,NaN,NaN} {0,-1,5} | {-1,0,3} {1,0,5} | {0,-1,5} {1,0,5} | {0,3,0} {1,0,5} | {1,-1,0} {1,0,5} | {-0.4,-1,-6} {1,0,5} | {-0.000184615384615,-1,15.3846153846} {1,0,5} | {3,NaN,5} {1,0,5} | {NaN,NaN,NaN} {1,0,5} | {0,-1,3} {0,3,0} | {1,0,5} {0,3,0} | {1,-1,0} {0,3,0} | {-0.4,-1,-6} {0,3,0} | {-0.000184615384615,-1,15.3846153846} {0,3,0} | {3,NaN,5} {0,3,0} | {NaN,NaN,NaN} {0,3,0} | {-1,0,3} {1,-1,0} | {0,-1,5} {1,-1,0} | {1,0,5} {1,-1,0} | {0,3,0} {1,-1,0} | {-0.4,-1,-6} {1,-1,0} | {-0.000184615384615,-1,15.3846153846} {1,-1,0} | {3,NaN,5} {1,-1,0} | {NaN,NaN,NaN} {1,-1,0} | {0,-1,3} {1,-1,0} | {-1,0,3} {-0.4,-1,-6} | {0,-1,5} {-0.4,-1,-6} | {1,0,5} {-0.4,-1,-6} | {0,3,0} {-0.4,-1,-6} | {1,-1,0} {-0.4,-1,-6} | {-0.000184615384615,-1,15.3846153846} {-0.4,-1,-6} | {3,NaN,5} {-0.4,-1,-6} | {NaN,NaN,NaN} {-0.4,-1,-6} | {0,-1,3} {-0.4,-1,-6} | {-1,0,3} {-0.000184615384615,-1,15.3846153846} | {0,-1,5} {-0.000184615384615,-1,15.3846153846} | {1,0,5} {-0.000184615384615,-1,15.3846153846} | {0,3,0} {-0.000184615384615,-1,15.3846153846} | {1,-1,0} {-0.000184615384615,-1,15.3846153846} | {-0.4,-1,-6} {-0.000184615384615,-1,15.3846153846} | {3,NaN,5} {-0.000184615384615,-1,15.3846153846} | {NaN,NaN,NaN} {-0.000184615384615,-1,15.3846153846} | {0,-1,3} {-0.000184615384615,-1,15.3846153846} | {-1,0,3} {3,NaN,5} | {0,-1,5} {3,NaN,5} | {1,0,5} {3,NaN,5} | {0,3,0} {3,NaN,5} | {1,-1,0} {3,NaN,5} | {-0.4,-1,-6} {3,NaN,5} | {-0.000184615384615,-1,15.3846153846} {3,NaN,5} | {3,NaN,5} {3,NaN,5} | {NaN,NaN,NaN} {3,NaN,5} | {0,-1,3} {3,NaN,5} | {-1,0,3} {NaN,NaN,NaN} | {0,-1,5} {NaN,NaN,NaN} | {1,0,5} {NaN,NaN,NaN} | {0,3,0} {NaN,NaN,NaN} | {1,-1,0} {NaN,NaN,NaN} | {-0.4,-1,-6} {NaN,NaN,NaN} | {-0.000184615384615,-1,15.3846153846} {NaN,NaN,NaN} | {3,NaN,5} {NaN,NaN,NaN} | {NaN,NaN,NaN} {NaN,NaN,NaN} | {0,-1,3} {NaN,NaN,NaN} | {-1,0,3} {0,-1,3} | {1,0,5} {0,-1,3} | {1,-1,0} {0,-1,3} | {-0.4,-1,-6} {0,-1,3} | {-0.000184615384615,-1,15.3846153846} {0,-1,3} | {3,NaN,5} {0,-1,3} | {NaN,NaN,NaN} {0,-1,3} | {-1,0,3} {-1,0,3} | {0,-1,5} {-1,0,3} | {0,3,0} {-1,0,3} | {1,-1,0} {-1,0,3} | {-0.4,-1,-6} {-1,0,3} | {-0.000184615384615,-1,15.3846153846} {-1,0,3} | {3,NaN,5} {-1,0,3} | {NaN,NaN,NaN} {-1,0,3} | {0,-1,3} (84 rows) -- Intersect with box SELECT l.s, b.f1 FROM LINE_TBL l, BOX_TBL b WHERE l.s ?# b.f1; s | f1 --------------+--------------------- {1,0,5} | (-2,2),(-8,-10) {0,3,0} | (2,2),(0,0) {0,3,0} | (-2,2),(-8,-10) {1,-1,0} | (2,2),(0,0) {1,-1,0} | (3,3),(1,1) {1,-1,0} | (-2,2),(-8,-10) {1,-1,0} | (2.5,3.5),(2.5,2.5) {1,-1,0} | (3,3),(3,3) {-0.4,-1,-6} | (-2,2),(-8,-10) {0,-1,3} | (3,3),(1,1) {0,-1,3} | (2.5,3.5),(2.5,2.5) {0,-1,3} | (3,3),(3,3) {-1,0,3} | (3,3),(1,1) (13 rows) -- Intersection point with line SELECT l1.s, l2.s, l1.s # l2.s FROM LINE_TBL l1, LINE_TBL l2; s | s | ?column? ---------------------------------------+---------------------------------------+----------------------------------- {0,-1,5} | {0,-1,5} | {0,-1,5} | {1,0,5} | (-5,5) {0,-1,5} | {0,3,0} | {0,-1,5} | {1,-1,0} | (5,5) {0,-1,5} | {-0.4,-1,-6} | (-27.5,5) {0,-1,5} | {-0.000184615384615,-1,15.3846153846} | (56250,5) {0,-1,5} | {3,NaN,5} | (NaN,NaN) {0,-1,5} | {NaN,NaN,NaN} | (NaN,NaN) {0,-1,5} | {0,-1,3} | {0,-1,5} | {-1,0,3} | (3,5) {1,0,5} | {0,-1,5} | (-5,5) {1,0,5} | {1,0,5} | {1,0,5} | {0,3,0} | (-5,0) {1,0,5} | {1,-1,0} | (-5,-5) {1,0,5} | {-0.4,-1,-6} | (-5,-4) {1,0,5} | {-0.000184615384615,-1,15.3846153846} | (-5,15.3855384615) {1,0,5} | {3,NaN,5} | (NaN,NaN) {1,0,5} | {NaN,NaN,NaN} | (NaN,NaN) {1,0,5} | {0,-1,3} | (-5,3) {1,0,5} | {-1,0,3} | {0,3,0} | {0,-1,5} | {0,3,0} | {1,0,5} | (-5,0) {0,3,0} | {0,3,0} | {0,3,0} | {1,-1,0} | (0,0) {0,3,0} | {-0.4,-1,-6} | (-15,0) {0,3,0} | {-0.000184615384615,-1,15.3846153846} | (83333.3333333,0) {0,3,0} | {3,NaN,5} | (NaN,NaN) {0,3,0} | {NaN,NaN,NaN} | (NaN,NaN) {0,3,0} | {0,-1,3} | {0,3,0} | {-1,0,3} | (3,0) {1,-1,0} | {0,-1,5} | (5,5) {1,-1,0} | {1,0,5} | (-5,-5) {1,-1,0} | {0,3,0} | (0,0) {1,-1,0} | {1,-1,0} | {1,-1,0} | {-0.4,-1,-6} | (-4.28571428571,-4.28571428571) {1,-1,0} | {-0.000184615384615,-1,15.3846153846} | (15.3817756722,15.3817756722) {1,-1,0} | {3,NaN,5} | (NaN,NaN) {1,-1,0} | {NaN,NaN,NaN} | (NaN,NaN) {1,-1,0} | {0,-1,3} | (3,3) {1,-1,0} | {-1,0,3} | (3,3) {-0.4,-1,-6} | {0,-1,5} | (-27.5,5) {-0.4,-1,-6} | {1,0,5} | (-5,-4) {-0.4,-1,-6} | {0,3,0} | (-15,0) {-0.4,-1,-6} | {1,-1,0} | (-4.28571428571,-4.28571428571) {-0.4,-1,-6} | {-0.4,-1,-6} | {-0.4,-1,-6} | {-0.000184615384615,-1,15.3846153846} | (-53.4862244113,15.3944897645) {-0.4,-1,-6} | {3,NaN,5} | (NaN,NaN) {-0.4,-1,-6} | {NaN,NaN,NaN} | (NaN,NaN) {-0.4,-1,-6} | {0,-1,3} | (-22.5,3) {-0.4,-1,-6} | {-1,0,3} | (3,-7.2) {-0.000184615384615,-1,15.3846153846} | {0,-1,5} | (56250,5) {-0.000184615384615,-1,15.3846153846} | {1,0,5} | (-5,15.3855384615) {-0.000184615384615,-1,15.3846153846} | {0,3,0} | (83333.3333333,-1.7763568394e-15) {-0.000184615384615,-1,15.3846153846} | {1,-1,0} | (15.3817756722,15.3817756722) {-0.000184615384615,-1,15.3846153846} | {-0.4,-1,-6} | (-53.4862244113,15.3944897645) {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} | {-0.000184615384615,-1,15.3846153846} | {3,NaN,5} | (NaN,NaN) {-0.000184615384615,-1,15.3846153846} | {NaN,NaN,NaN} | (NaN,NaN) {-0.000184615384615,-1,15.3846153846} | {0,-1,3} | (67083.3333333,3) {-0.000184615384615,-1,15.3846153846} | {-1,0,3} | (3,15.3840615385) {3,NaN,5} | {0,-1,5} | (NaN,NaN) {3,NaN,5} | {1,0,5} | (NaN,NaN) {3,NaN,5} | {0,3,0} | (NaN,NaN) {3,NaN,5} | {1,-1,0} | (NaN,NaN) {3,NaN,5} | {-0.4,-1,-6} | (NaN,NaN) {3,NaN,5} | {-0.000184615384615,-1,15.3846153846} | (NaN,NaN) {3,NaN,5} | {3,NaN,5} | (NaN,NaN) {3,NaN,5} | {NaN,NaN,NaN} | (NaN,NaN) {3,NaN,5} | {0,-1,3} | (NaN,NaN) {3,NaN,5} | {-1,0,3} | (NaN,NaN) {NaN,NaN,NaN} | {0,-1,5} | (NaN,NaN) {NaN,NaN,NaN} | {1,0,5} | (NaN,NaN) {NaN,NaN,NaN} | {0,3,0} | (NaN,NaN) {NaN,NaN,NaN} | {1,-1,0} | (NaN,NaN) {NaN,NaN,NaN} | {-0.4,-1,-6} | (NaN,NaN) {NaN,NaN,NaN} | {-0.000184615384615,-1,15.3846153846} | (NaN,NaN) {NaN,NaN,NaN} | {3,NaN,5} | (NaN,NaN) {NaN,NaN,NaN} | {NaN,NaN,NaN} | (NaN,NaN) {NaN,NaN,NaN} | {0,-1,3} | (NaN,NaN) {NaN,NaN,NaN} | {-1,0,3} | (NaN,NaN) {0,-1,3} | {0,-1,5} | {0,-1,3} | {1,0,5} | (-5,3) {0,-1,3} | {0,3,0} | {0,-1,3} | {1,-1,0} | (3,3) {0,-1,3} | {-0.4,-1,-6} | (-22.5,3) {0,-1,3} | {-0.000184615384615,-1,15.3846153846} | (67083.3333333,3) {0,-1,3} | {3,NaN,5} | (NaN,NaN) {0,-1,3} | {NaN,NaN,NaN} | (NaN,NaN) {0,-1,3} | {0,-1,3} | {0,-1,3} | {-1,0,3} | (3,3) {-1,0,3} | {0,-1,5} | (3,5) {-1,0,3} | {1,0,5} | {-1,0,3} | {0,3,0} | (3,0) {-1,0,3} | {1,-1,0} | (3,3) {-1,0,3} | {-0.4,-1,-6} | (3,-7.2) {-1,0,3} | {-0.000184615384615,-1,15.3846153846} | (3,15.3840615385) {-1,0,3} | {3,NaN,5} | (NaN,NaN) {-1,0,3} | {NaN,NaN,NaN} | (NaN,NaN) {-1,0,3} | {0,-1,3} | (3,3) {-1,0,3} | {-1,0,3} | (100 rows) -- Closest point to line segment SELECT l.s, l1.s, l.s ## l1.s FROM LINE_TBL l, LSEG_TBL l1; s | s | ?column? ---------------------------------------+-------------------------------+----------------------------------- {0,-1,5} | [(1,2),(3,4)] | (3,4) {0,-1,5} | [(0,0),(6,6)] | (5,5) {0,-1,5} | [(10,-10),(-3,-4)] | (-3,-4) {0,-1,5} | [(-1000000,200),(300000,-40)] | (56250,5) {0,-1,5} | [(11,22),(33,44)] | (11,22) {0,-1,5} | [(-10,2),(-10,3)] | (-10,3) {0,-1,5} | [(0,-20),(30,-20)] | {0,-1,5} | [(NaN,1),(NaN,90)] | {1,0,5} | [(1,2),(3,4)] | (1,2) {1,0,5} | [(0,0),(6,6)] | (0,0) {1,0,5} | [(10,-10),(-3,-4)] | (-3,-4) {1,0,5} | [(-1000000,200),(300000,-40)] | (-5,15.3855384615) {1,0,5} | [(11,22),(33,44)] | (11,22) {1,0,5} | [(-10,2),(-10,3)] | {1,0,5} | [(0,-20),(30,-20)] | (0,-20) {1,0,5} | [(NaN,1),(NaN,90)] | {0,3,0} | [(1,2),(3,4)] | (1,2) {0,3,0} | [(0,0),(6,6)] | (0,0) {0,3,0} | [(10,-10),(-3,-4)] | (-3,-4) {0,3,0} | [(-1000000,200),(300000,-40)] | (83333.3333333,-1.7763568394e-15) {0,3,0} | [(11,22),(33,44)] | (11,22) {0,3,0} | [(-10,2),(-10,3)] | (-10,2) {0,3,0} | [(0,-20),(30,-20)] | {0,3,0} | [(NaN,1),(NaN,90)] | {1,-1,0} | [(1,2),(3,4)] | {1,-1,0} | [(0,0),(6,6)] | {1,-1,0} | [(10,-10),(-3,-4)] | (-3,-4) {1,-1,0} | [(-1000000,200),(300000,-40)] | (15.3817756722,15.3817756722) {1,-1,0} | [(11,22),(33,44)] | {1,-1,0} | [(-10,2),(-10,3)] | (-10,2) {1,-1,0} | [(0,-20),(30,-20)] | (0,-20) {1,-1,0} | [(NaN,1),(NaN,90)] | {-0.4,-1,-6} | [(1,2),(3,4)] | (1,2) {-0.4,-1,-6} | [(0,0),(6,6)] | (0,0) {-0.4,-1,-6} | [(10,-10),(-3,-4)] | (10,-10) {-0.4,-1,-6} | [(-1000000,200),(300000,-40)] | (-53.4862244113,15.3944897645) {-0.4,-1,-6} | [(11,22),(33,44)] | (11,22) {-0.4,-1,-6} | [(-10,2),(-10,3)] | (-10,2) {-0.4,-1,-6} | [(0,-20),(30,-20)] | (30,-20) {-0.4,-1,-6} | [(NaN,1),(NaN,90)] | {-0.000184615384615,-1,15.3846153846} | [(1,2),(3,4)] | (3,4) {-0.000184615384615,-1,15.3846153846} | [(0,0),(6,6)] | (6,6) {-0.000184615384615,-1,15.3846153846} | [(10,-10),(-3,-4)] | (-3,-4) {-0.000184615384615,-1,15.3846153846} | [(-1000000,200),(300000,-40)] | {-0.000184615384615,-1,15.3846153846} | [(11,22),(33,44)] | (11,22) {-0.000184615384615,-1,15.3846153846} | [(-10,2),(-10,3)] | (-10,3) {-0.000184615384615,-1,15.3846153846} | [(0,-20),(30,-20)] | (30,-20) {-0.000184615384615,-1,15.3846153846} | [(NaN,1),(NaN,90)] | {3,NaN,5} | [(1,2),(3,4)] | {3,NaN,5} | [(0,0),(6,6)] | {3,NaN,5} | [(10,-10),(-3,-4)] | {3,NaN,5} | [(-1000000,200),(300000,-40)] | {3,NaN,5} | [(11,22),(33,44)] | {3,NaN,5} | [(-10,2),(-10,3)] | {3,NaN,5} | [(0,-20),(30,-20)] | {3,NaN,5} | [(NaN,1),(NaN,90)] | {NaN,NaN,NaN} | [(1,2),(3,4)] | {NaN,NaN,NaN} | [(0,0),(6,6)] | {NaN,NaN,NaN} | [(10,-10),(-3,-4)] | {NaN,NaN,NaN} | [(-1000000,200),(300000,-40)] | {NaN,NaN,NaN} | [(11,22),(33,44)] | {NaN,NaN,NaN} | [(-10,2),(-10,3)] | {NaN,NaN,NaN} | [(0,-20),(30,-20)] | {NaN,NaN,NaN} | [(NaN,1),(NaN,90)] | {0,-1,3} | [(1,2),(3,4)] | (2,3) {0,-1,3} | [(0,0),(6,6)] | (3,3) {0,-1,3} | [(10,-10),(-3,-4)] | (-3,-4) {0,-1,3} | [(-1000000,200),(300000,-40)] | (67083.3333333,3) {0,-1,3} | [(11,22),(33,44)] | (11,22) {0,-1,3} | [(-10,2),(-10,3)] | (-10,3) {0,-1,3} | [(0,-20),(30,-20)] | {0,-1,3} | [(NaN,1),(NaN,90)] | {-1,0,3} | [(1,2),(3,4)] | (3,4) {-1,0,3} | [(0,0),(6,6)] | (3,3) {-1,0,3} | [(10,-10),(-3,-4)] | (3,-6.76923076923) {-1,0,3} | [(-1000000,200),(300000,-40)] | (3,15.3840615385) {-1,0,3} | [(11,22),(33,44)] | (11,22) {-1,0,3} | [(-10,2),(-10,3)] | {-1,0,3} | [(0,-20),(30,-20)] | (3,-20) {-1,0,3} | [(NaN,1),(NaN,90)] | (80 rows) -- -- Line segments -- -- intersection SELECT p.f1, l.s, l.s # p.f1 AS intersection FROM LSEG_TBL l, POINT_TBL p; ERROR: operator does not exist: lseg # point LINE 1: SELECT p.f1, l.s, l.s # p.f1 AS intersection ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts. -- Length SELECT s, @-@ s FROM LSEG_TBL; s | ?column? -------------------------------+--------------- [(1,2),(3,4)] | 2.82842712475 [(0,0),(6,6)] | 8.48528137424 [(10,-10),(-3,-4)] | 14.3178210633 [(-1000000,200),(300000,-40)] | 1300000.02215 [(11,22),(33,44)] | 31.1126983722 [(-10,2),(-10,3)] | 1 [(0,-20),(30,-20)] | 30 [(NaN,1),(NaN,90)] | NaN (8 rows) -- Vertical SELECT s FROM LSEG_TBL WHERE ?| s; s ------------------- [(-10,2),(-10,3)] (1 row) -- Horizontal SELECT s FROM LSEG_TBL WHERE ?- s; s -------------------- [(0,-20),(30,-20)] (1 row) -- Center SELECT s, @@ s FROM LSEG_TBL; s | ?column? -------------------------------+-------------- [(1,2),(3,4)] | (2,3) [(0,0),(6,6)] | (3,3) [(10,-10),(-3,-4)] | (3.5,-7) [(-1000000,200),(300000,-40)] | (-350000,80) [(11,22),(33,44)] | (22,33) [(-10,2),(-10,3)] | (-10,2.5) [(0,-20),(30,-20)] | (15,-20) [(NaN,1),(NaN,90)] | (NaN,45.5) (8 rows) -- To point SELECT s, s::point FROM LSEG_TBL; s | s -------------------------------+-------------- [(1,2),(3,4)] | (2,3) [(0,0),(6,6)] | (3,3) [(10,-10),(-3,-4)] | (3.5,-7) [(-1000000,200),(300000,-40)] | (-350000,80) [(11,22),(33,44)] | (22,33) [(-10,2),(-10,3)] | (-10,2.5) [(0,-20),(30,-20)] | (15,-20) [(NaN,1),(NaN,90)] | (NaN,45.5) (8 rows) -- Has points less than line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s < l2.s; s | s --------------------+------------------------------- [(1,2),(3,4)] | [(0,0),(6,6)] [(1,2),(3,4)] | [(10,-10),(-3,-4)] [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] [(1,2),(3,4)] | [(11,22),(33,44)] [(1,2),(3,4)] | [(0,-20),(30,-20)] [(0,0),(6,6)] | [(10,-10),(-3,-4)] [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] [(0,0),(6,6)] | [(11,22),(33,44)] [(0,0),(6,6)] | [(0,-20),(30,-20)] [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] [(10,-10),(-3,-4)] | [(11,22),(33,44)] [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] [(-10,2),(-10,3)] | [(1,2),(3,4)] [(-10,2),(-10,3)] | [(0,0),(6,6)] [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] [(-10,2),(-10,3)] | [(11,22),(33,44)] [(-10,2),(-10,3)] | [(0,-20),(30,-20)] [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] [(0,-20),(30,-20)] | [(11,22),(33,44)] (21 rows) -- Has points less than or equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s <= l2.s; s | s -------------------------------+------------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(0,0),(6,6)] [(1,2),(3,4)] | [(10,-10),(-3,-4)] [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] [(1,2),(3,4)] | [(11,22),(33,44)] [(1,2),(3,4)] | [(0,-20),(30,-20)] [(0,0),(6,6)] | [(0,0),(6,6)] [(0,0),(6,6)] | [(10,-10),(-3,-4)] [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] [(0,0),(6,6)] | [(11,22),(33,44)] [(0,0),(6,6)] | [(0,-20),(30,-20)] [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] [(10,-10),(-3,-4)] | [(11,22),(33,44)] [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] [(11,22),(33,44)] | [(11,22),(33,44)] [(-10,2),(-10,3)] | [(1,2),(3,4)] [(-10,2),(-10,3)] | [(0,0),(6,6)] [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] [(-10,2),(-10,3)] | [(11,22),(33,44)] [(-10,2),(-10,3)] | [(-10,2),(-10,3)] [(-10,2),(-10,3)] | [(0,-20),(30,-20)] [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] [(0,-20),(30,-20)] | [(11,22),(33,44)] [(0,-20),(30,-20)] | [(0,-20),(30,-20)] (28 rows) -- Has points equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s = l2.s; s | s -------------------------------+------------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(0,0),(6,6)] | [(0,0),(6,6)] [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] [(11,22),(33,44)] | [(11,22),(33,44)] [(-10,2),(-10,3)] | [(-10,2),(-10,3)] [(0,-20),(30,-20)] | [(0,-20),(30,-20)] [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] (8 rows) -- Has points greater than or equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s >= l2.s; s | s -------------------------------+------------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(-10,2),(-10,3)] [(0,0),(6,6)] | [(1,2),(3,4)] [(0,0),(6,6)] | [(0,0),(6,6)] [(0,0),(6,6)] | [(-10,2),(-10,3)] [(10,-10),(-3,-4)] | [(1,2),(3,4)] [(10,-10),(-3,-4)] | [(0,0),(6,6)] [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] [(11,22),(33,44)] | [(1,2),(3,4)] [(11,22),(33,44)] | [(0,0),(6,6)] [(11,22),(33,44)] | [(10,-10),(-3,-4)] [(11,22),(33,44)] | [(11,22),(33,44)] [(11,22),(33,44)] | [(-10,2),(-10,3)] [(11,22),(33,44)] | [(0,-20),(30,-20)] [(-10,2),(-10,3)] | [(-10,2),(-10,3)] [(0,-20),(30,-20)] | [(1,2),(3,4)] [(0,-20),(30,-20)] | [(0,0),(6,6)] [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] [(0,-20),(30,-20)] | [(-10,2),(-10,3)] [(0,-20),(30,-20)] | [(0,-20),(30,-20)] (28 rows) -- Has points greater than line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s > l2.s; s | s -------------------------------+-------------------- [(1,2),(3,4)] | [(-10,2),(-10,3)] [(0,0),(6,6)] | [(1,2),(3,4)] [(0,0),(6,6)] | [(-10,2),(-10,3)] [(10,-10),(-3,-4)] | [(1,2),(3,4)] [(10,-10),(-3,-4)] | [(0,0),(6,6)] [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] [(11,22),(33,44)] | [(1,2),(3,4)] [(11,22),(33,44)] | [(0,0),(6,6)] [(11,22),(33,44)] | [(10,-10),(-3,-4)] [(11,22),(33,44)] | [(-10,2),(-10,3)] [(11,22),(33,44)] | [(0,-20),(30,-20)] [(0,-20),(30,-20)] | [(1,2),(3,4)] [(0,-20),(30,-20)] | [(0,0),(6,6)] [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] [(0,-20),(30,-20)] | [(-10,2),(-10,3)] (21 rows) -- Has points not equal to line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s != l2.s; s | s -------------------------------+------------------------------- [(1,2),(3,4)] | [(0,0),(6,6)] [(1,2),(3,4)] | [(10,-10),(-3,-4)] [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] [(1,2),(3,4)] | [(11,22),(33,44)] [(1,2),(3,4)] | [(-10,2),(-10,3)] [(1,2),(3,4)] | [(0,-20),(30,-20)] [(1,2),(3,4)] | [(NaN,1),(NaN,90)] [(0,0),(6,6)] | [(1,2),(3,4)] [(0,0),(6,6)] | [(10,-10),(-3,-4)] [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] [(0,0),(6,6)] | [(11,22),(33,44)] [(0,0),(6,6)] | [(-10,2),(-10,3)] [(0,0),(6,6)] | [(0,-20),(30,-20)] [(0,0),(6,6)] | [(NaN,1),(NaN,90)] [(10,-10),(-3,-4)] | [(1,2),(3,4)] [(10,-10),(-3,-4)] | [(0,0),(6,6)] [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] [(10,-10),(-3,-4)] | [(11,22),(33,44)] [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] [(11,22),(33,44)] | [(1,2),(3,4)] [(11,22),(33,44)] | [(0,0),(6,6)] [(11,22),(33,44)] | [(10,-10),(-3,-4)] [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] [(11,22),(33,44)] | [(-10,2),(-10,3)] [(11,22),(33,44)] | [(0,-20),(30,-20)] [(11,22),(33,44)] | [(NaN,1),(NaN,90)] [(-10,2),(-10,3)] | [(1,2),(3,4)] [(-10,2),(-10,3)] | [(0,0),(6,6)] [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] [(-10,2),(-10,3)] | [(11,22),(33,44)] [(-10,2),(-10,3)] | [(0,-20),(30,-20)] [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] [(0,-20),(30,-20)] | [(1,2),(3,4)] [(0,-20),(30,-20)] | [(0,0),(6,6)] [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] [(0,-20),(30,-20)] | [(11,22),(33,44)] [(0,-20),(30,-20)] | [(-10,2),(-10,3)] [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] [(NaN,1),(NaN,90)] | [(1,2),(3,4)] [(NaN,1),(NaN,90)] | [(0,0),(6,6)] [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] [(NaN,1),(NaN,90)] | [(11,22),(33,44)] [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] (56 rows) -- Parallel with line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s ?|| l2.s; s | s -------------------------------+------------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(0,0),(6,6)] [(1,2),(3,4)] | [(11,22),(33,44)] [(0,0),(6,6)] | [(1,2),(3,4)] [(0,0),(6,6)] | [(0,0),(6,6)] [(0,0),(6,6)] | [(11,22),(33,44)] [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] [(11,22),(33,44)] | [(1,2),(3,4)] [(11,22),(33,44)] | [(0,0),(6,6)] [(11,22),(33,44)] | [(11,22),(33,44)] [(-10,2),(-10,3)] | [(-10,2),(-10,3)] [(0,-20),(30,-20)] | [(0,-20),(30,-20)] (13 rows) -- Perpendicular with line segment SELECT l1.s, l2.s FROM LSEG_TBL l1, LSEG_TBL l2 WHERE l1.s ?-| l2.s; s | s --------------------+-------------------- [(-10,2),(-10,3)] | [(0,-20),(30,-20)] [(0,-20),(30,-20)] | [(-10,2),(-10,3)] (2 rows) -- Distance to line SELECT l.s, l1.s, l.s <-> l1.s AS dist_sl, l1.s <-> l.s AS dist_ls FROM LSEG_TBL l, LINE_TBL l1; s | s | dist_sl | dist_ls -------------------------------+---------------------------------------+----------------+---------------- [(1,2),(3,4)] | {0,-1,5} | 1 | 1 [(0,0),(6,6)] | {0,-1,5} | 0 | 0 [(10,-10),(-3,-4)] | {0,-1,5} | 9 | 9 [(-1000000,200),(300000,-40)] | {0,-1,5} | 0 | 0 [(11,22),(33,44)] | {0,-1,5} | 17 | 17 [(-10,2),(-10,3)] | {0,-1,5} | 2 | 2 [(0,-20),(30,-20)] | {0,-1,5} | 25 | 25 [(NaN,1),(NaN,90)] | {0,-1,5} | NaN | NaN [(1,2),(3,4)] | {1,0,5} | 6 | 6 [(0,0),(6,6)] | {1,0,5} | 5 | 5 [(10,-10),(-3,-4)] | {1,0,5} | 2 | 2 [(-1000000,200),(300000,-40)] | {1,0,5} | 0 | 0 [(11,22),(33,44)] | {1,0,5} | 16 | 16 [(-10,2),(-10,3)] | {1,0,5} | 5 | 5 [(0,-20),(30,-20)] | {1,0,5} | 5 | 5 [(NaN,1),(NaN,90)] | {1,0,5} | NaN | NaN [(1,2),(3,4)] | {0,3,0} | 2 | 2 [(0,0),(6,6)] | {0,3,0} | 0 | 0 [(10,-10),(-3,-4)] | {0,3,0} | 4 | 4 [(-1000000,200),(300000,-40)] | {0,3,0} | 0 | 0 [(11,22),(33,44)] | {0,3,0} | 22 | 22 [(-10,2),(-10,3)] | {0,3,0} | 2 | 2 [(0,-20),(30,-20)] | {0,3,0} | 20 | 20 [(NaN,1),(NaN,90)] | {0,3,0} | NaN | NaN [(1,2),(3,4)] | {1,-1,0} | 0.707106781187 | 0.707106781187 [(0,0),(6,6)] | {1,-1,0} | 0 | 0 [(10,-10),(-3,-4)] | {1,-1,0} | 0.707106781187 | 0.707106781187 [(-1000000,200),(300000,-40)] | {1,-1,0} | 0 | 0 [(11,22),(33,44)] | {1,-1,0} | 7.77817459305 | 7.77817459305 [(-10,2),(-10,3)] | {1,-1,0} | 8.48528137424 | 8.48528137424 [(0,-20),(30,-20)] | {1,-1,0} | 14.1421356237 | 14.1421356237 [(NaN,1),(NaN,90)] | {1,-1,0} | NaN | NaN [(1,2),(3,4)] | {-0.4,-1,-6} | 7.79920420344 | 7.79920420344 [(0,0),(6,6)] | {-0.4,-1,-6} | 5.57086014531 | 5.57086014531 [(10,-10),(-3,-4)] | {-0.4,-1,-6} | 0 | 0 [(-1000000,200),(300000,-40)] | {-0.4,-1,-6} | 0 | 0 [(11,22),(33,44)] | {-0.4,-1,-6} | 30.0826447847 | 30.0826447847 [(-10,2),(-10,3)] | {-0.4,-1,-6} | 3.71390676354 | 3.71390676354 [(0,-20),(30,-20)] | {-0.4,-1,-6} | 1.85695338177 | 1.85695338177 [(NaN,1),(NaN,90)] | {-0.4,-1,-6} | NaN | NaN [(1,2),(3,4)] | {-0.000184615384615,-1,15.3846153846} | 11.3840613445 | 11.3840613445 [(0,0),(6,6)] | {-0.000184615384615,-1,15.3846153846} | 9.3835075324 | 9.3835075324 [(10,-10),(-3,-4)] | {-0.000184615384615,-1,15.3846153846} | 19.3851689004 | 19.3851689004 [(-1000000,200),(300000,-40)] | {-0.000184615384615,-1,15.3846153846} | 0 | 0 [(11,22),(33,44)] | {-0.000184615384615,-1,15.3846153846} | 6.61741527185 | 6.61741527185 [(-10,2),(-10,3)] | {-0.000184615384615,-1,15.3846153846} | 12.3864613274 | 12.3864613274 [(0,-20),(30,-20)] | {-0.000184615384615,-1,15.3846153846} | 35.3790763202 | 35.3790763202 [(NaN,1),(NaN,90)] | {-0.000184615384615,-1,15.3846153846} | NaN | NaN [(1,2),(3,4)] | {3,NaN,5} | NaN | NaN [(0,0),(6,6)] | {3,NaN,5} | NaN | NaN [(10,-10),(-3,-4)] | {3,NaN,5} | NaN | NaN [(-1000000,200),(300000,-40)] | {3,NaN,5} | NaN | NaN [(11,22),(33,44)] | {3,NaN,5} | NaN | NaN [(-10,2),(-10,3)] | {3,NaN,5} | NaN | NaN [(0,-20),(30,-20)] | {3,NaN,5} | NaN | NaN [(NaN,1),(NaN,90)] | {3,NaN,5} | NaN | NaN [(1,2),(3,4)] | {NaN,NaN,NaN} | NaN | NaN [(0,0),(6,6)] | {NaN,NaN,NaN} | NaN | NaN [(10,-10),(-3,-4)] | {NaN,NaN,NaN} | NaN | NaN [(-1000000,200),(300000,-40)] | {NaN,NaN,NaN} | NaN | NaN [(11,22),(33,44)] | {NaN,NaN,NaN} | NaN | NaN [(-10,2),(-10,3)] | {NaN,NaN,NaN} | NaN | NaN [(0,-20),(30,-20)] | {NaN,NaN,NaN} | NaN | NaN [(NaN,1),(NaN,90)] | {NaN,NaN,NaN} | NaN | NaN [(1,2),(3,4)] | {0,-1,3} | 0 | 0 [(0,0),(6,6)] | {0,-1,3} | 0 | 0 [(10,-10),(-3,-4)] | {0,-1,3} | 7 | 7 [(-1000000,200),(300000,-40)] | {0,-1,3} | 0 | 0 [(11,22),(33,44)] | {0,-1,3} | 19 | 19 [(-10,2),(-10,3)] | {0,-1,3} | 0 | 0 [(0,-20),(30,-20)] | {0,-1,3} | 23 | 23 [(NaN,1),(NaN,90)] | {0,-1,3} | NaN | NaN [(1,2),(3,4)] | {-1,0,3} | 0 | 0 [(0,0),(6,6)] | {-1,0,3} | 0 | 0 [(10,-10),(-3,-4)] | {-1,0,3} | 0 | 0 [(-1000000,200),(300000,-40)] | {-1,0,3} | 0 | 0 [(11,22),(33,44)] | {-1,0,3} | 8 | 8 [(-10,2),(-10,3)] | {-1,0,3} | 13 | 13 [(0,-20),(30,-20)] | {-1,0,3} | 0 | 0 [(NaN,1),(NaN,90)] | {-1,0,3} | NaN | NaN (80 rows) -- Distance to line segment SELECT l1.s, l2.s, l1.s <-> l2.s FROM LSEG_TBL l1, LSEG_TBL l2; s | s | ?column? -------------------------------+-------------------------------+---------------- [(1,2),(3,4)] | [(1,2),(3,4)] | 0 [(1,2),(3,4)] | [(0,0),(6,6)] | 0.707106781187 [(1,2),(3,4)] | [(10,-10),(-3,-4)] | 7.12398901685 [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] | 11.3840613445 [(1,2),(3,4)] | [(11,22),(33,44)] | 19.6977156036 [(1,2),(3,4)] | [(-10,2),(-10,3)] | 11 [(1,2),(3,4)] | [(0,-20),(30,-20)] | 22 [(1,2),(3,4)] | [(NaN,1),(NaN,90)] | NaN [(0,0),(6,6)] | [(1,2),(3,4)] | 0.707106781187 [(0,0),(6,6)] | [(0,0),(6,6)] | 0 [(0,0),(6,6)] | [(10,-10),(-3,-4)] | 4.88901207039 [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] | 9.3835075324 [(0,0),(6,6)] | [(11,22),(33,44)] | 16.7630546142 [(0,0),(6,6)] | [(-10,2),(-10,3)] | 10.1980390272 [(0,0),(6,6)] | [(0,-20),(30,-20)] | 20 [(0,0),(6,6)] | [(NaN,1),(NaN,90)] | NaN [(10,-10),(-3,-4)] | [(1,2),(3,4)] | 7.12398901685 [(10,-10),(-3,-4)] | [(0,0),(6,6)] | 4.88901207039 [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] | 0 [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] | 19.3851689004 [(10,-10),(-3,-4)] | [(11,22),(33,44)] | 29.4737584815 [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] | 9.21954445729 [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] | 10 [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] | NaN [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] | 11.3840613445 [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] | 9.3835075324 [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] | 19.3851689004 [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] | 0 [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] | 6.61741527185 [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] | 12.3864613274 [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] | 35.3790763202 [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] | NaN [(11,22),(33,44)] | [(1,2),(3,4)] | 19.6977156036 [(11,22),(33,44)] | [(0,0),(6,6)] | 16.7630546142 [(11,22),(33,44)] | [(10,-10),(-3,-4)] | 29.4737584815 [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] | 6.61741527185 [(11,22),(33,44)] | [(11,22),(33,44)] | 0 [(11,22),(33,44)] | [(-10,2),(-10,3)] | 28.319604517 [(11,22),(33,44)] | [(0,-20),(30,-20)] | 42 [(11,22),(33,44)] | [(NaN,1),(NaN,90)] | NaN [(-10,2),(-10,3)] | [(1,2),(3,4)] | 11 [(-10,2),(-10,3)] | [(0,0),(6,6)] | 10.1980390272 [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] | 9.21954445729 [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] | 12.3864613274 [(-10,2),(-10,3)] | [(11,22),(33,44)] | 28.319604517 [(-10,2),(-10,3)] | [(-10,2),(-10,3)] | 0 [(-10,2),(-10,3)] | [(0,-20),(30,-20)] | 24.1660919472 [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] | NaN [(0,-20),(30,-20)] | [(1,2),(3,4)] | 22 [(0,-20),(30,-20)] | [(0,0),(6,6)] | 20 [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] | 10 [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] | 35.3790763202 [(0,-20),(30,-20)] | [(11,22),(33,44)] | 42 [(0,-20),(30,-20)] | [(-10,2),(-10,3)] | 24.1660919472 [(0,-20),(30,-20)] | [(0,-20),(30,-20)] | 0 [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] | NaN [(NaN,1),(NaN,90)] | [(1,2),(3,4)] | NaN [(NaN,1),(NaN,90)] | [(0,0),(6,6)] | NaN [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] | NaN [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] | NaN [(NaN,1),(NaN,90)] | [(11,22),(33,44)] | NaN [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] | NaN [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] | NaN [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] | NaN (64 rows) -- Distance to box SELECT l.s, b.f1, l.s <-> b.f1 AS dist_sb, b.f1 <-> l.s AS dist_bs FROM LSEG_TBL l, BOX_TBL b; s | f1 | dist_sb | dist_bs -------------------------------+---------------------+----------------+---------------- [(1,2),(3,4)] | (2,2),(0,0) | 0 | 0 [(1,2),(3,4)] | (3,3),(1,1) | 0 | 0 [(1,2),(3,4)] | (-2,2),(-8,-10) | 3 | 3 [(1,2),(3,4)] | (2.5,3.5),(2.5,2.5) | 0 | 0 [(1,2),(3,4)] | (3,3),(3,3) | 0.707106781187 | 0.707106781187 [(0,0),(6,6)] | (2,2),(0,0) | 0 | 0 [(0,0),(6,6)] | (3,3),(1,1) | 0 | 0 [(0,0),(6,6)] | (-2,2),(-8,-10) | 2 | 2 [(0,0),(6,6)] | (2.5,3.5),(2.5,2.5) | 0 | 0 [(0,0),(6,6)] | (3,3),(3,3) | 0 | 0 [(10,-10),(-3,-4)] | (2,2),(0,0) | 4.88901207039 | 4.88901207039 [(10,-10),(-3,-4)] | (3,3),(1,1) | 6.21602963235 | 6.21602963235 [(10,-10),(-3,-4)] | (-2,2),(-8,-10) | 0 | 0 [(10,-10),(-3,-4)] | (2.5,3.5),(2.5,2.5) | 8.20655597529 | 8.20655597529 [(10,-10),(-3,-4)] | (3,3),(3,3) | 8.87006475627 | 8.87006475627 [(-1000000,200),(300000,-40)] | (2,2),(0,0) | 13.3842459258 | 13.3842459258 [(-1000000,200),(300000,-40)] | (3,3),(1,1) | 12.3840613274 | 12.3840613274 [(-1000000,200),(300000,-40)] | (-2,2),(-8,-10) | 13.3849843873 | 13.3849843873 [(-1000000,200),(300000,-40)] | (2.5,3.5),(2.5,2.5) | 11.8841536436 | 11.8841536436 [(-1000000,200),(300000,-40)] | (3,3),(3,3) | 12.3840613274 | 12.3840613274 [(11,22),(33,44)] | (2,2),(0,0) | 21.9317121995 | 21.9317121995 [(11,22),(33,44)] | (3,3),(1,1) | 20.6155281281 | 20.6155281281 [(11,22),(33,44)] | (-2,2),(-8,-10) | 23.8537208838 | 23.8537208838 [(11,22),(33,44)] | (2.5,3.5),(2.5,2.5) | 20.3592730715 | 20.3592730715 [(11,22),(33,44)] | (3,3),(3,3) | 20.6155281281 | 20.6155281281 [(-10,2),(-10,3)] | (2,2),(0,0) | 10 | 10 [(-10,2),(-10,3)] | (3,3),(1,1) | 11 | 11 [(-10,2),(-10,3)] | (-2,2),(-8,-10) | 2 | 2 [(-10,2),(-10,3)] | (2.5,3.5),(2.5,2.5) | 12.5 | 12.5 [(-10,2),(-10,3)] | (3,3),(3,3) | 13 | 13 [(0,-20),(30,-20)] | (2,2),(0,0) | 20 | 20 [(0,-20),(30,-20)] | (3,3),(1,1) | 21 | 21 [(0,-20),(30,-20)] | (-2,2),(-8,-10) | 10.1980390272 | 10.1980390272 [(0,-20),(30,-20)] | (2.5,3.5),(2.5,2.5) | 22.5 | 22.5 [(0,-20),(30,-20)] | (3,3),(3,3) | 23 | 23 [(NaN,1),(NaN,90)] | (2,2),(0,0) | NaN | NaN [(NaN,1),(NaN,90)] | (3,3),(1,1) | NaN | NaN [(NaN,1),(NaN,90)] | (-2,2),(-8,-10) | NaN | NaN [(NaN,1),(NaN,90)] | (2.5,3.5),(2.5,2.5) | NaN | NaN [(NaN,1),(NaN,90)] | (3,3),(3,3) | NaN | NaN (40 rows) -- Intersect with line segment SELECT l.s, l1.s FROM LSEG_TBL l, LINE_TBL l1 WHERE l.s ?# l1.s; s | s -------------------------------+-------------- [(0,0),(6,6)] | {0,-1,5} [(-1000000,200),(300000,-40)] | {0,-1,5} [(-1000000,200),(300000,-40)] | {1,0,5} [(0,0),(6,6)] | {0,3,0} [(-1000000,200),(300000,-40)] | {0,3,0} [(-1000000,200),(300000,-40)] | {1,-1,0} [(10,-10),(-3,-4)] | {-0.4,-1,-6} [(-1000000,200),(300000,-40)] | {-0.4,-1,-6} [(1,2),(3,4)] | {0,-1,3} [(0,0),(6,6)] | {0,-1,3} [(-1000000,200),(300000,-40)] | {0,-1,3} [(-10,2),(-10,3)] | {0,-1,3} [(1,2),(3,4)] | {-1,0,3} [(0,0),(6,6)] | {-1,0,3} [(10,-10),(-3,-4)] | {-1,0,3} [(-1000000,200),(300000,-40)] | {-1,0,3} [(0,-20),(30,-20)] | {-1,0,3} (17 rows) -- Intersect with box SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s ?# b.f1; s | f1 --------------------+--------------------- [(1,2),(3,4)] | (2,2),(0,0) [(1,2),(3,4)] | (3,3),(1,1) [(1,2),(3,4)] | (2.5,3.5),(2.5,2.5) [(0,0),(6,6)] | (2,2),(0,0) [(0,0),(6,6)] | (3,3),(1,1) [(0,0),(6,6)] | (2.5,3.5),(2.5,2.5) [(0,0),(6,6)] | (3,3),(3,3) [(10,-10),(-3,-4)] | (-2,2),(-8,-10) (8 rows) -- Intersection point with line segment SELECT l1.s, l2.s, l1.s # l2.s FROM LSEG_TBL l1, LSEG_TBL l2; s | s | ?column? -------------------------------+-------------------------------+---------- [(1,2),(3,4)] | [(1,2),(3,4)] | [(1,2),(3,4)] | [(0,0),(6,6)] | [(1,2),(3,4)] | [(10,-10),(-3,-4)] | [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] | [(11,22),(33,44)] | [(1,2),(3,4)] | [(-10,2),(-10,3)] | [(1,2),(3,4)] | [(0,-20),(30,-20)] | [(1,2),(3,4)] | [(NaN,1),(NaN,90)] | [(0,0),(6,6)] | [(1,2),(3,4)] | [(0,0),(6,6)] | [(0,0),(6,6)] | [(0,0),(6,6)] | [(10,-10),(-3,-4)] | [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] | [(11,22),(33,44)] | [(0,0),(6,6)] | [(-10,2),(-10,3)] | [(0,0),(6,6)] | [(0,-20),(30,-20)] | [(0,0),(6,6)] | [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] | [(1,2),(3,4)] | [(10,-10),(-3,-4)] | [(0,0),(6,6)] | [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] | [(11,22),(33,44)] | [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] | [(11,22),(33,44)] | [(1,2),(3,4)] | [(11,22),(33,44)] | [(0,0),(6,6)] | [(11,22),(33,44)] | [(10,-10),(-3,-4)] | [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] | [(11,22),(33,44)] | [(11,22),(33,44)] | [(-10,2),(-10,3)] | [(11,22),(33,44)] | [(0,-20),(30,-20)] | [(11,22),(33,44)] | [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] | [(1,2),(3,4)] | [(-10,2),(-10,3)] | [(0,0),(6,6)] | [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] | [(11,22),(33,44)] | [(-10,2),(-10,3)] | [(-10,2),(-10,3)] | [(-10,2),(-10,3)] | [(0,-20),(30,-20)] | [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] | [(1,2),(3,4)] | [(0,-20),(30,-20)] | [(0,0),(6,6)] | [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] | [(11,22),(33,44)] | [(0,-20),(30,-20)] | [(-10,2),(-10,3)] | [(0,-20),(30,-20)] | [(0,-20),(30,-20)] | [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] | [(1,2),(3,4)] | [(NaN,1),(NaN,90)] | [(0,0),(6,6)] | [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] | [(11,22),(33,44)] | [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] | (64 rows) -- Closest point to line segment SELECT l1.s, l2.s, l1.s ## l2.s FROM LSEG_TBL l1, LSEG_TBL l2; s | s | ?column? -------------------------------+-------------------------------+--------------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] | [(1,2),(3,4)] | [(0,0),(6,6)] | [(1,2),(3,4)] | [(10,-10),(-3,-4)] | (-1.98536585366,-4.46829268293) [(1,2),(3,4)] | [(-1000000,200),(300000,-40)] | (3.00210167283,15.3840611505) [(1,2),(3,4)] | [(11,22),(33,44)] | [(1,2),(3,4)] | [(-10,2),(-10,3)] | (-10,2) [(1,2),(3,4)] | [(0,-20),(30,-20)] | (1,-20) [(1,2),(3,4)] | [(NaN,1),(NaN,90)] | [(0,0),(6,6)] | [(1,2),(3,4)] | [(0,0),(6,6)] | [(0,0),(6,6)] | [(0,0),(6,6)] | [(10,-10),(-3,-4)] | (-2.0487804878,-4.43902439024) [(0,0),(6,6)] | [(-1000000,200),(300000,-40)] | (6.00173233982,15.3835073725) [(0,0),(6,6)] | [(11,22),(33,44)] | [(0,0),(6,6)] | [(-10,2),(-10,3)] | (-10,2) [(0,0),(6,6)] | [(0,-20),(30,-20)] | (0,-20) [(0,0),(6,6)] | [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] | [(1,2),(3,4)] | (1,2) [(10,-10),(-3,-4)] | [(0,0),(6,6)] | (0,0) [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] | [(10,-10),(-3,-4)] | [(-1000000,200),(300000,-40)] | (-2.99642119965,15.3851685701) [(10,-10),(-3,-4)] | [(11,22),(33,44)] | (11,22) [(10,-10),(-3,-4)] | [(-10,2),(-10,3)] | (-10,2) [(10,-10),(-3,-4)] | [(0,-20),(30,-20)] | (10,-20) [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] | [(1,2),(3,4)] | (3,4) [(-1000000,200),(300000,-40)] | [(0,0),(6,6)] | (6,6) [(-1000000,200),(300000,-40)] | [(10,-10),(-3,-4)] | (-3,-4) [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] | [(-1000000,200),(300000,-40)] | [(11,22),(33,44)] | (11,22) [(-1000000,200),(300000,-40)] | [(-10,2),(-10,3)] | (-10,3) [(-1000000,200),(300000,-40)] | [(0,-20),(30,-20)] | (30,-20) [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] | [(11,22),(33,44)] | [(1,2),(3,4)] | [(11,22),(33,44)] | [(0,0),(6,6)] | [(11,22),(33,44)] | [(10,-10),(-3,-4)] | (-1.3512195122,-4.76097560976) [(11,22),(33,44)] | [(-1000000,200),(300000,-40)] | (10.9987783234,15.3825848409) [(11,22),(33,44)] | [(11,22),(33,44)] | [(11,22),(33,44)] | [(-10,2),(-10,3)] | (-10,3) [(11,22),(33,44)] | [(0,-20),(30,-20)] | (11,-20) [(11,22),(33,44)] | [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] | [(1,2),(3,4)] | (1,2) [(-10,2),(-10,3)] | [(0,0),(6,6)] | (0,0) [(-10,2),(-10,3)] | [(10,-10),(-3,-4)] | (-3,-4) [(-10,2),(-10,3)] | [(-1000000,200),(300000,-40)] | (-9.99771326872,15.3864611163) [(-10,2),(-10,3)] | [(11,22),(33,44)] | (11,22) [(-10,2),(-10,3)] | [(-10,2),(-10,3)] | [(-10,2),(-10,3)] | [(0,-20),(30,-20)] | (0,-20) [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] | [(1,2),(3,4)] | (1,2) [(0,-20),(30,-20)] | [(0,0),(6,6)] | (0,0) [(0,-20),(30,-20)] | [(10,-10),(-3,-4)] | (10,-10) [(0,-20),(30,-20)] | [(-1000000,200),(300000,-40)] | (30.0065315217,15.3790757173) [(0,-20),(30,-20)] | [(11,22),(33,44)] | (11,22) [(0,-20),(30,-20)] | [(-10,2),(-10,3)] | (-10,2) [(0,-20),(30,-20)] | [(0,-20),(30,-20)] | [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] | [(1,2),(3,4)] | [(NaN,1),(NaN,90)] | [(0,0),(6,6)] | [(NaN,1),(NaN,90)] | [(10,-10),(-3,-4)] | [(NaN,1),(NaN,90)] | [(-1000000,200),(300000,-40)] | [(NaN,1),(NaN,90)] | [(11,22),(33,44)] | [(NaN,1),(NaN,90)] | [(-10,2),(-10,3)] | [(NaN,1),(NaN,90)] | [(0,-20),(30,-20)] | [(NaN,1),(NaN,90)] | [(NaN,1),(NaN,90)] | (64 rows) -- Closest point to box SELECT l.s, b.f1, l.s ## b.f1 FROM LSEG_TBL l, BOX_TBL b; s | f1 | ?column? -------------------------------+---------------------+------------- [(1,2),(3,4)] | (2,2),(0,0) | (1,2) [(1,2),(3,4)] | (3,3),(1,1) | (1.5,2.5) [(1,2),(3,4)] | (-2,2),(-8,-10) | (-2,2) [(1,2),(3,4)] | (2.5,3.5),(2.5,2.5) | (2.25,3.25) [(1,2),(3,4)] | (3,3),(3,3) | (3,3) [(0,0),(6,6)] | (2,2),(0,0) | (1,1) [(0,0),(6,6)] | (3,3),(1,1) | (2,2) [(0,0),(6,6)] | (-2,2),(-8,-10) | (-2,0) [(0,0),(6,6)] | (2.5,3.5),(2.5,2.5) | (2.75,2.75) [(0,0),(6,6)] | (3,3),(3,3) | (3,3) [(10,-10),(-3,-4)] | (2,2),(0,0) | (0,0) [(10,-10),(-3,-4)] | (3,3),(1,1) | (1,1) [(10,-10),(-3,-4)] | (-2,2),(-8,-10) | (-3,-4) [(10,-10),(-3,-4)] | (2.5,3.5),(2.5,2.5) | (2.5,2.5) [(10,-10),(-3,-4)] | (3,3),(3,3) | (3,3) [(-1000000,200),(300000,-40)] | (2,2),(0,0) | (2,2) [(-1000000,200),(300000,-40)] | (3,3),(1,1) | (3,3) [(-1000000,200),(300000,-40)] | (-2,2),(-8,-10) | (-2,2) [(-1000000,200),(300000,-40)] | (2.5,3.5),(2.5,2.5) | (2.5,3.5) [(-1000000,200),(300000,-40)] | (3,3),(3,3) | (3,3) [(11,22),(33,44)] | (2,2),(0,0) | (2,2) [(11,22),(33,44)] | (3,3),(1,1) | (3,3) [(11,22),(33,44)] | (-2,2),(-8,-10) | (-2,2) [(11,22),(33,44)] | (2.5,3.5),(2.5,2.5) | (2.5,3.5) [(11,22),(33,44)] | (3,3),(3,3) | (3,3) [(-10,2),(-10,3)] | (2,2),(0,0) | (0,2) [(-10,2),(-10,3)] | (3,3),(1,1) | (1,2) [(-10,2),(-10,3)] | (-2,2),(-8,-10) | (-8,2) [(-10,2),(-10,3)] | (2.5,3.5),(2.5,2.5) | (2.5,3) [(-10,2),(-10,3)] | (3,3),(3,3) | (3,3) [(0,-20),(30,-20)] | (2,2),(0,0) | (0,0) [(0,-20),(30,-20)] | (3,3),(1,1) | (1,1) [(0,-20),(30,-20)] | (-2,2),(-8,-10) | (-2,-10) [(0,-20),(30,-20)] | (2.5,3.5),(2.5,2.5) | (2.5,2.5) [(0,-20),(30,-20)] | (3,3),(3,3) | (3,3) [(NaN,1),(NaN,90)] | (2,2),(0,0) | [(NaN,1),(NaN,90)] | (3,3),(1,1) | [(NaN,1),(NaN,90)] | (-2,2),(-8,-10) | [(NaN,1),(NaN,90)] | (2.5,3.5),(2.5,2.5) | [(NaN,1),(NaN,90)] | (3,3),(3,3) | (40 rows) -- On line SELECT l.s, l1.s FROM LSEG_TBL l, LINE_TBL l1 WHERE l.s <@ l1.s; s | s -------------------------------+--------------------------------------- [(0,0),(6,6)] | {1,-1,0} [(-1000000,200),(300000,-40)] | {-0.000184615384615,-1,15.3846153846} (2 rows) -- On box SELECT l.s, b.f1 FROM LSEG_TBL l, BOX_TBL b WHERE l.s <@ b.f1; s | f1 ---+---- (0 rows) -- -- Boxes -- SELECT box(f1) AS box FROM CIRCLE_TBL; box ---------------------------------------------------------------- (7.12132034356,3.12132034356),(2.87867965644,-1.12132034356) (71.7106781187,72.7106781187),(-69.7106781187,-68.7106781187) (4.53553390593,6.53553390593),(-2.53553390593,-0.535533905933) (3.12132034356,4.12132034356),(-1.12132034356,-0.12132034356) (107.071067812,207.071067812),(92.9289321881,192.928932188) (181.317279836,82.3172798365),(18.6827201635,-80.3172798365) (3,5),(3,5) (NaN,NaN),(NaN,NaN) (8 rows) -- translation SELECT b.f1 + p.f1 AS translation FROM BOX_TBL b, POINT_TBL p; translation ------------------------------------- (2,2),(0,0) (3,3),(1,1) (-2,2),(-8,-10) (2.5,3.5),(2.5,2.5) (3,3),(3,3) (-8,2),(-10,0) (-7,3),(-9,1) (-12,2),(-18,-10) (-7.5,3.5),(-7.5,2.5) (-7,3),(-7,3) (-1,6),(-3,4) (0,7),(-2,5) (-5,6),(-11,-6) (-0.5,7.5),(-0.5,6.5) (0,7),(0,7) (7.1,36.5),(5.1,34.5) (8.1,37.5),(6.1,35.5) (3.1,36.5),(-2.9,24.5) (7.6,38),(7.6,37) (8.1,37.5),(8.1,37.5) (-3,-10),(-5,-12) (-2,-9),(-4,-11) (-7,-10),(-13,-22) (-2.5,-8.5),(-2.5,-9.5) (-2,-9),(-2,-9) (2,2),(1e-300,-1e-300) (3,3),(1,1) (-2,2),(-8,-10) (2.5,3.5),(2.5,2.5) (3,3),(3,3) (1e+300,Infinity),(1e+300,Infinity) (1e+300,Infinity),(1e+300,Infinity) (1e+300,Infinity),(1e+300,Infinity) (1e+300,Infinity),(1e+300,Infinity) (1e+300,Infinity),(1e+300,Infinity) (Infinity,1e+300),(Infinity,1e+300) (Infinity,1e+300),(Infinity,1e+300) (Infinity,1e+300),(Infinity,1e+300) (Infinity,1e+300),(Infinity,1e+300) (Infinity,1e+300),(Infinity,1e+300) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (12,12),(10,10) (13,13),(11,11) (8,12),(2,0) (12.5,13.5),(12.5,12.5) (13,13),(13,13) (50 rows) SELECT b.f1 - p.f1 AS translation FROM BOX_TBL b, POINT_TBL p; translation ----------------------------------------- (2,2),(0,0) (3,3),(1,1) (-2,2),(-8,-10) (2.5,3.5),(2.5,2.5) (3,3),(3,3) (12,2),(10,0) (13,3),(11,1) (8,2),(2,-10) (12.5,3.5),(12.5,2.5) (13,3),(13,3) (5,-2),(3,-4) (6,-1),(4,-3) (1,-2),(-5,-14) (5.5,-0.5),(5.5,-1.5) (6,-1),(6,-1) (-3.1,-32.5),(-5.1,-34.5) (-2.1,-31.5),(-4.1,-33.5) (-7.1,-32.5),(-13.1,-44.5) (-2.6,-31),(-2.6,-32) (-2.1,-31.5),(-2.1,-31.5) (7,14),(5,12) (8,15),(6,13) (3,14),(-3,2) (7.5,15.5),(7.5,14.5) (8,15),(8,15) (2,2),(-1e-300,1e-300) (3,3),(1,1) (-2,2),(-8,-10) (2.5,3.5),(2.5,2.5) (3,3),(3,3) (-1e+300,-Infinity),(-1e+300,-Infinity) (-1e+300,-Infinity),(-1e+300,-Infinity) (-1e+300,-Infinity),(-1e+300,-Infinity) (-1e+300,-Infinity),(-1e+300,-Infinity) (-1e+300,-Infinity),(-1e+300,-Infinity) (-Infinity,-1e+300),(-Infinity,-1e+300) (-Infinity,-1e+300),(-Infinity,-1e+300) (-Infinity,-1e+300),(-Infinity,-1e+300) (-Infinity,-1e+300),(-Infinity,-1e+300) (-Infinity,-1e+300),(-Infinity,-1e+300) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN) (-8,-8),(-10,-10) (-7,-7),(-9,-9) (-12,-8),(-18,-20) (-7.5,-6.5),(-7.5,-7.5) (-7,-7),(-7,-7) (50 rows) -- Multiply with point SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000; f1 | f1 | ?column? ---------------------+------------+----------------------------- (2,2),(0,0) | (5.1,34.5) | (0,79.2),(-58.8,0) (2,2),(0,0) | (10,10) | (0,40),(0,0) (3,3),(1,1) | (5.1,34.5) | (-29.4,118.8),(-88.2,39.6) (3,3),(1,1) | (10,10) | (0,60),(0,20) (-2,2),(-8,-10) | (5.1,34.5) | (304.2,-58.8),(-79.2,-327) (-2,2),(-8,-10) | (10,10) | (20,0),(-40,-180) (2.5,3.5),(2.5,2.5) | (5.1,34.5) | (-73.5,104.1),(-108,99) (2.5,3.5),(2.5,2.5) | (10,10) | (0,60),(-10,50) (3,3),(3,3) | (5.1,34.5) | (-88.2,118.8),(-88.2,118.8) (3,3),(3,3) | (10,10) | (0,60),(0,60) (10 rows) -- Overflow error SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] > 1000; f1 | f1 | ?column? ---------------------+-------------------+-------------------------------------------- (2,2),(0,0) | (1e+300,Infinity) | (NaN,NaN),(-Infinity,Infinity) (2,2),(0,0) | (Infinity,1e+300) | (NaN,NaN),(Infinity,Infinity) (2,2),(0,0) | (NaN,NaN) | (NaN,NaN),(NaN,NaN) (3,3),(1,1) | (1e+300,Infinity) | (-Infinity,Infinity),(-Infinity,Infinity) (3,3),(1,1) | (Infinity,1e+300) | (Infinity,Infinity),(Infinity,Infinity) (3,3),(1,1) | (NaN,NaN) | (NaN,NaN),(NaN,NaN) (-2,2),(-8,-10) | (1e+300,Infinity) | (Infinity,-Infinity),(-Infinity,-Infinity) (-2,2),(-8,-10) | (Infinity,1e+300) | (-Infinity,Infinity),(-Infinity,-Infinity) (-2,2),(-8,-10) | (NaN,NaN) | (NaN,NaN),(NaN,NaN) (2.5,3.5),(2.5,2.5) | (1e+300,Infinity) | (-Infinity,Infinity),(-Infinity,Infinity) (2.5,3.5),(2.5,2.5) | (Infinity,1e+300) | (Infinity,Infinity),(Infinity,Infinity) (2.5,3.5),(2.5,2.5) | (NaN,NaN) | (NaN,NaN),(NaN,NaN) (3,3),(3,3) | (1e+300,Infinity) | (-Infinity,Infinity),(-Infinity,Infinity) (3,3),(3,3) | (Infinity,1e+300) | (Infinity,Infinity),(Infinity,Infinity) (3,3),(3,3) | (NaN,NaN) | (NaN,NaN),(NaN,NaN) (15 rows) -- Divide by point SELECT b.f1, p.f1, b.f1 / p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000; f1 | f1 | ?column? ---------------------+------------+---------------------------------------------------------------------- (2,2),(0,0) | (5.1,34.5) | (0.0651176557644,0),(0,-0.0483449262493) (2,2),(0,0) | (10,10) | (0.2,0),(0,0) (3,3),(1,1) | (5.1,34.5) | (0.0976764836466,-0.0241724631247),(0.0325588278822,-0.072517389374) (3,3),(1,1) | (10,10) | (0.3,0),(0.1,0) (-2,2),(-8,-10) | (5.1,34.5) | (0.0483449262493,0.18499334024),(-0.317201914064,0.0651176557644) (-2,2),(-8,-10) | (10,10) | (0,0.2),(-0.9,-0.1) (2.5,3.5),(2.5,2.5) | (5.1,34.5) | (0.109762715209,-0.0562379754329),(0.0813970697055,-0.0604311578117) (2.5,3.5),(2.5,2.5) | (10,10) | (0.3,0.05),(0.25,0) (3,3),(3,3) | (5.1,34.5) | (0.0976764836466,-0.072517389374),(0.0976764836466,-0.072517389374) (3,3),(3,3) | (10,10) | (0.3,0),(0.3,0) (10 rows) -- To box SELECT f1::box FROM POINT_TBL; f1 ------------------------------------- (0,0),(0,0) (-10,0),(-10,0) (-3,4),(-3,4) (5.1,34.5),(5.1,34.5) (-5,-12),(-5,-12) (1e-300,-1e-300),(1e-300,-1e-300) (1e+300,Infinity),(1e+300,Infinity) (Infinity,1e+300),(Infinity,1e+300) (NaN,NaN),(NaN,NaN) (10,10),(10,10) (10 rows) SELECT bound_box(a.f1, b.f1) FROM BOX_TBL a, BOX_TBL b; bound_box --------------------- (2,2),(0,0) (3,3),(0,0) (2,2),(-8,-10) (2.5,3.5),(0,0) (3,3),(0,0) (3,3),(0,0) (3,3),(1,1) (3,3),(-8,-10) (3,3.5),(1,1) (3,3),(1,1) (2,2),(-8,-10) (3,3),(-8,-10) (-2,2),(-8,-10) (2.5,3.5),(-8,-10) (3,3),(-8,-10) (2.5,3.5),(0,0) (3,3.5),(1,1) (2.5,3.5),(-8,-10) (2.5,3.5),(2.5,2.5) (3,3.5),(2.5,2.5) (3,3),(0,0) (3,3),(1,1) (3,3),(-8,-10) (3,3.5),(2.5,2.5) (3,3),(3,3) (25 rows) -- Below box SELECT b1.f1, b2.f1, b1.f1 <^ b2.f1 FROM BOX_TBL b1, BOX_TBL b2; f1 | f1 | ?column? ---------------------+---------------------+---------- (2,2),(0,0) | (2,2),(0,0) | f (2,2),(0,0) | (3,3),(1,1) | f (2,2),(0,0) | (-2,2),(-8,-10) | f (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | t (2,2),(0,0) | (3,3),(3,3) | t (3,3),(1,1) | (2,2),(0,0) | f (3,3),(1,1) | (3,3),(1,1) | f (3,3),(1,1) | (-2,2),(-8,-10) | f (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | f (3,3),(1,1) | (3,3),(3,3) | t (-2,2),(-8,-10) | (2,2),(0,0) | f (-2,2),(-8,-10) | (3,3),(1,1) | f (-2,2),(-8,-10) | (-2,2),(-8,-10) | f (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | t (-2,2),(-8,-10) | (3,3),(3,3) | t (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | f (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | f (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | f (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | f (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | f (3,3),(3,3) | (2,2),(0,0) | f (3,3),(3,3) | (3,3),(1,1) | f (3,3),(3,3) | (-2,2),(-8,-10) | f (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | f (3,3),(3,3) | (3,3),(3,3) | t (25 rows) -- Above box SELECT b1.f1, b2.f1, b1.f1 >^ b2.f1 FROM BOX_TBL b1, BOX_TBL b2; f1 | f1 | ?column? ---------------------+---------------------+---------- (2,2),(0,0) | (2,2),(0,0) | f (2,2),(0,0) | (3,3),(1,1) | f (2,2),(0,0) | (-2,2),(-8,-10) | f (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | f (2,2),(0,0) | (3,3),(3,3) | f (3,3),(1,1) | (2,2),(0,0) | f (3,3),(1,1) | (3,3),(1,1) | f (3,3),(1,1) | (-2,2),(-8,-10) | f (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | f (3,3),(1,1) | (3,3),(3,3) | f (-2,2),(-8,-10) | (2,2),(0,0) | f (-2,2),(-8,-10) | (3,3),(1,1) | f (-2,2),(-8,-10) | (-2,2),(-8,-10) | f (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | f (-2,2),(-8,-10) | (3,3),(3,3) | f (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | t (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | f (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | t (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | f (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | f (3,3),(3,3) | (2,2),(0,0) | t (3,3),(3,3) | (3,3),(1,1) | t (3,3),(3,3) | (-2,2),(-8,-10) | t (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | f (3,3),(3,3) | (3,3),(3,3) | t (25 rows) -- Intersection point with box SELECT b1.f1, b2.f1, b1.f1 # b2.f1 FROM BOX_TBL b1, BOX_TBL b2; f1 | f1 | ?column? ---------------------+---------------------+--------------------- (2,2),(0,0) | (2,2),(0,0) | (2,2),(0,0) (2,2),(0,0) | (3,3),(1,1) | (2,2),(1,1) (2,2),(0,0) | (-2,2),(-8,-10) | (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | (3,3),(3,3) | (3,3),(1,1) | (2,2),(0,0) | (2,2),(1,1) (3,3),(1,1) | (3,3),(1,1) | (3,3),(1,1) (3,3),(1,1) | (-2,2),(-8,-10) | (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | (2.5,3),(2.5,2.5) (3,3),(1,1) | (3,3),(3,3) | (3,3),(3,3) (-2,2),(-8,-10) | (2,2),(0,0) | (-2,2),(-8,-10) | (3,3),(1,1) | (-2,2),(-8,-10) | (-2,2),(-8,-10) | (-2,2),(-8,-10) (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | (2.5,3),(2.5,2.5) (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | (3,3),(3,3) | (2,2),(0,0) | (3,3),(3,3) | (3,3),(1,1) | (3,3),(3,3) (3,3),(3,3) | (-2,2),(-8,-10) | (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | (3,3),(3,3) | (3,3),(3,3) (25 rows) -- Diagonal SELECT f1, diagonal(f1) FROM BOX_TBL; f1 | diagonal ---------------------+----------------------- (2,2),(0,0) | [(2,2),(0,0)] (3,3),(1,1) | [(3,3),(1,1)] (-2,2),(-8,-10) | [(-2,2),(-8,-10)] (2.5,3.5),(2.5,2.5) | [(2.5,3.5),(2.5,2.5)] (3,3),(3,3) | [(3,3),(3,3)] (5 rows) -- Distance to box SELECT b1.f1, b2.f1, b1.f1 <-> b2.f1 FROM BOX_TBL b1, BOX_TBL b2; f1 | f1 | ?column? ---------------------+---------------------+--------------- (2,2),(0,0) | (2,2),(0,0) | 0 (2,2),(0,0) | (3,3),(1,1) | 1.41421356237 (2,2),(0,0) | (-2,2),(-8,-10) | 7.81024967591 (2,2),(0,0) | (2.5,3.5),(2.5,2.5) | 2.5 (2,2),(0,0) | (3,3),(3,3) | 2.82842712475 (3,3),(1,1) | (2,2),(0,0) | 1.41421356237 (3,3),(1,1) | (3,3),(1,1) | 0 (3,3),(1,1) | (-2,2),(-8,-10) | 9.21954445729 (3,3),(1,1) | (2.5,3.5),(2.5,2.5) | 1.11803398875 (3,3),(1,1) | (3,3),(3,3) | 1.41421356237 (-2,2),(-8,-10) | (2,2),(0,0) | 7.81024967591 (-2,2),(-8,-10) | (3,3),(1,1) | 9.21954445729 (-2,2),(-8,-10) | (-2,2),(-8,-10) | 0 (-2,2),(-8,-10) | (2.5,3.5),(2.5,2.5) | 10.2591422643 (-2,2),(-8,-10) | (3,3),(3,3) | 10.6301458127 (2.5,3.5),(2.5,2.5) | (2,2),(0,0) | 2.5 (2.5,3.5),(2.5,2.5) | (3,3),(1,1) | 1.11803398875 (2.5,3.5),(2.5,2.5) | (-2,2),(-8,-10) | 10.2591422643 (2.5,3.5),(2.5,2.5) | (2.5,3.5),(2.5,2.5) | 0 (2.5,3.5),(2.5,2.5) | (3,3),(3,3) | 0.5 (3,3),(3,3) | (2,2),(0,0) | 2.82842712475 (3,3),(3,3) | (3,3),(1,1) | 1.41421356237 (3,3),(3,3) | (-2,2),(-8,-10) | 10.6301458127 (3,3),(3,3) | (2.5,3.5),(2.5,2.5) | 0.5 (3,3),(3,3) | (3,3),(3,3) | 0 (25 rows) -- -- Paths -- -- Points SELECT f1, npoints(f1) FROM PATH_TBL; f1 | npoints ---------------------------+--------- [(1,2),(3,4)] | 2 ((1,2),(3,4)) | 2 [(0,0),(3,0),(4,5),(1,6)] | 4 ((1,2),(3,4)) | 2 ((1,2),(3,4)) | 2 [(1,2),(3,4)] | 2 ((10,20)) | 1 [(11,12),(13,14)] | 2 ((11,12),(13,14)) | 2 (9 rows) -- Area SELECT f1, area(f1) FROM PATH_TBL; f1 | area ---------------------------+------ [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | 0 [(1,2),(3,4)] | ((10,20)) | 0 [(11,12),(13,14)] | ((11,12),(13,14)) | 0 (9 rows) -- Length SELECT f1, @-@ f1 FROM PATH_TBL; f1 | ?column? ---------------------------+--------------- [(1,2),(3,4)] | 2.82842712475 ((1,2),(3,4)) | 5.65685424949 [(0,0),(3,0),(4,5),(1,6)] | 11.2612971738 ((1,2),(3,4)) | 5.65685424949 ((1,2),(3,4)) | 5.65685424949 [(1,2),(3,4)] | 2.82842712475 ((10,20)) | 0 [(11,12),(13,14)] | 2.82842712475 ((11,12),(13,14)) | 5.65685424949 (9 rows) -- To polygon SELECT f1, f1::polygon FROM PATH_TBL WHERE isclosed(f1); f1 | f1 -------------------+------------------- ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((10,20)) | ((10,20)) ((11,12),(13,14)) | ((11,12),(13,14)) (5 rows) -- Open path cannot be converted to polygon error SELECT f1, f1::polygon FROM PATH_TBL WHERE isopen(f1); ERROR: open path cannot be converted to polygon -- Has points less than path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 < p2.f1; f1 | f1 -------------------+--------------------------- [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6)] ((10,20)) | [(1,2),(3,4)] ((10,20)) | ((1,2),(3,4)) ((10,20)) | [(0,0),(3,0),(4,5),(1,6)] ((10,20)) | ((1,2),(3,4)) ((10,20)) | ((1,2),(3,4)) ((10,20)) | [(1,2),(3,4)] ((10,20)) | [(11,12),(13,14)] ((10,20)) | ((11,12),(13,14)) [(11,12),(13,14)] | [(0,0),(3,0),(4,5),(1,6)] ((11,12),(13,14)) | [(0,0),(3,0),(4,5),(1,6)] (15 rows) -- Has points less than or equal to path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 <= p2.f1; f1 | f1 ---------------------------+--------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((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)] | ((1,2),(3,4)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((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)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) [(0,0),(3,0),(4,5),(1,6)] | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((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)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((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)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((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)] | ((1,2),(3,4)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) ((10,20)) | [(1,2),(3,4)] ((10,20)) | ((1,2),(3,4)) ((10,20)) | [(0,0),(3,0),(4,5),(1,6)] ((10,20)) | ((1,2),(3,4)) ((10,20)) | ((1,2),(3,4)) ((10,20)) | [(1,2),(3,4)] ((10,20)) | ((10,20)) ((10,20)) | [(11,12),(13,14)] ((10,20)) | ((11,12),(13,14)) [(11,12),(13,14)] | [(1,2),(3,4)] [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | [(0,0),(3,0),(4,5),(1,6)] [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | [(1,2),(3,4)] [(11,12),(13,14)] | [(11,12),(13,14)] [(11,12),(13,14)] | ((11,12),(13,14)) ((11,12),(13,14)) | [(1,2),(3,4)] ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | [(0,0),(3,0),(4,5),(1,6)] ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | [(1,2),(3,4)] ((11,12),(13,14)) | [(11,12),(13,14)] ((11,12),(13,14)) | ((11,12),(13,14)) (66 rows) -- Has points equal to path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 = p2.f1; f1 | f1 ---------------------------+--------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) [(0,0),(3,0),(4,5),(1,6)] | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | [(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) ((10,20)) | ((10,20)) [(11,12),(13,14)] | [(1,2),(3,4)] [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | [(1,2),(3,4)] [(11,12),(13,14)] | [(11,12),(13,14)] [(11,12),(13,14)] | ((11,12),(13,14)) ((11,12),(13,14)) | [(1,2),(3,4)] ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | [(1,2),(3,4)] ((11,12),(13,14)) | [(11,12),(13,14)] ((11,12),(13,14)) | ((11,12),(13,14)) (51 rows) -- Has points greater than or equal to path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 >= p2.f1; f1 | f1 ---------------------------+--------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((10,20)) [(1,2),(3,4)] | [(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((10,20)) ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | [(0,0),(3,0),(4,5),(1,6)] [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] | ((10,20)) [(0,0),(3,0),(4,5),(1,6)] | [(11,12),(13,14)] [(0,0),(3,0),(4,5),(1,6)] | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((10,20)) ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | ((1,2),(3,4)) ((1,2),(3,4)) | [(1,2),(3,4)] ((1,2),(3,4)) | ((10,20)) ((1,2),(3,4)) | [(11,12),(13,14)] ((1,2),(3,4)) | ((11,12),(13,14)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | ((1,2),(3,4)) [(1,2),(3,4)] | [(1,2),(3,4)] [(1,2),(3,4)] | ((10,20)) [(1,2),(3,4)] | [(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) ((10,20)) | ((10,20)) [(11,12),(13,14)] | [(1,2),(3,4)] [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | ((1,2),(3,4)) [(11,12),(13,14)] | [(1,2),(3,4)] [(11,12),(13,14)] | ((10,20)) [(11,12),(13,14)] | [(11,12),(13,14)] [(11,12),(13,14)] | ((11,12),(13,14)) ((11,12),(13,14)) | [(1,2),(3,4)] ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | ((1,2),(3,4)) ((11,12),(13,14)) | [(1,2),(3,4)] ((11,12),(13,14)) | ((10,20)) ((11,12),(13,14)) | [(11,12),(13,14)] ((11,12),(13,14)) | ((11,12),(13,14)) (66 rows) -- Has points greater than path SELECT p1.f1, p2.f1 FROM PATH_TBL p1, PATH_TBL p2 WHERE p1.f1 > p2.f1; f1 | f1 ---------------------------+------------------- [(1,2),(3,4)] | ((10,20)) ((1,2),(3,4)) | ((10,20)) [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] | ((10,20)) [(0,0),(3,0),(4,5),(1,6)] | [(11,12),(13,14)] [(0,0),(3,0),(4,5),(1,6)] | ((11,12),(13,14)) ((1,2),(3,4)) | ((10,20)) ((1,2),(3,4)) | ((10,20)) [(1,2),(3,4)] | ((10,20)) [(11,12),(13,14)] | ((10,20)) ((11,12),(13,14)) | ((10,20)) (15 rows) -- Add path SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM PATH_TBL p1, PATH_TBL p2; f1 | f1 | ?column? ---------------------------+---------------------------+--------------------------------------------------- [(1,2),(3,4)] | [(1,2),(3,4)] | [(1,2),(3,4),(1,2),(3,4)] [(1,2),(3,4)] | ((1,2),(3,4)) | [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4),(0,0),(3,0),(4,5),(1,6)] [(1,2),(3,4)] | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | [(1,2),(3,4)] | [(1,2),(3,4)] | [(1,2),(3,4),(1,2),(3,4)] [(1,2),(3,4)] | ((10,20)) | [(1,2),(3,4)] | [(11,12),(13,14)] | [(1,2),(3,4),(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | ((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)) | ((1,2),(3,4)) | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | ((10,20)) | ((1,2),(3,4)) | [(11,12),(13,14)] | ((1,2),(3,4)) | ((11,12),(13,14)) | [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6),(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] | [(0,0),(3,0),(4,5),(1,6)] | [(0,0),(3,0),(4,5),(1,6),(0,0),(3,0),(4,5),(1,6)] [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6),(1,2),(3,4)] [(0,0),(3,0),(4,5),(1,6)] | ((10,20)) | [(0,0),(3,0),(4,5),(1,6)] | [(11,12),(13,14)] | [(0,0),(3,0),(4,5),(1,6),(11,12),(13,14)] [(0,0),(3,0),(4,5),(1,6)] | ((11,12),(13,14)) | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | ((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)) | ((1,2),(3,4)) | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | ((10,20)) | ((1,2),(3,4)) | [(11,12),(13,14)] | ((1,2),(3,4)) | ((11,12),(13,14)) | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | ((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)) | ((1,2),(3,4)) | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | ((10,20)) | ((1,2),(3,4)) | [(11,12),(13,14)] | ((1,2),(3,4)) | ((11,12),(13,14)) | [(1,2),(3,4)] | [(1,2),(3,4)] | [(1,2),(3,4),(1,2),(3,4)] [(1,2),(3,4)] | ((1,2),(3,4)) | [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4),(0,0),(3,0),(4,5),(1,6)] [(1,2),(3,4)] | ((1,2),(3,4)) | [(1,2),(3,4)] | ((1,2),(3,4)) | [(1,2),(3,4)] | [(1,2),(3,4)] | [(1,2),(3,4),(1,2),(3,4)] [(1,2),(3,4)] | ((10,20)) | [(1,2),(3,4)] | [(11,12),(13,14)] | [(1,2),(3,4),(11,12),(13,14)] [(1,2),(3,4)] | ((11,12),(13,14)) | ((10,20)) | [(1,2),(3,4)] | ((10,20)) | ((1,2),(3,4)) | ((10,20)) | [(0,0),(3,0),(4,5),(1,6)] | ((10,20)) | ((1,2),(3,4)) | ((10,20)) | ((1,2),(3,4)) | ((10,20)) | [(1,2),(3,4)] | ((10,20)) | ((10,20)) | ((10,20)) | [(11,12),(13,14)] | ((10,20)) | ((11,12),(13,14)) | [(11,12),(13,14)] | [(1,2),(3,4)] | [(11,12),(13,14),(1,2),(3,4)] [(11,12),(13,14)] | ((1,2),(3,4)) | [(11,12),(13,14)] | [(0,0),(3,0),(4,5),(1,6)] | [(11,12),(13,14),(0,0),(3,0),(4,5),(1,6)] [(11,12),(13,14)] | ((1,2),(3,4)) | [(11,12),(13,14)] | ((1,2),(3,4)) | [(11,12),(13,14)] | [(1,2),(3,4)] | [(11,12),(13,14),(1,2),(3,4)] [(11,12),(13,14)] | ((10,20)) | [(11,12),(13,14)] | [(11,12),(13,14)] | [(11,12),(13,14),(11,12),(13,14)] [(11,12),(13,14)] | ((11,12),(13,14)) | ((11,12),(13,14)) | [(1,2),(3,4)] | ((11,12),(13,14)) | ((1,2),(3,4)) | ((11,12),(13,14)) | [(0,0),(3,0),(4,5),(1,6)] | ((11,12),(13,14)) | ((1,2),(3,4)) | ((11,12),(13,14)) | ((1,2),(3,4)) | ((11,12),(13,14)) | [(1,2),(3,4)] | ((11,12),(13,14)) | ((10,20)) | ((11,12),(13,14)) | [(11,12),(13,14)] | ((11,12),(13,14)) | ((11,12),(13,14)) | (81 rows) -- Add point SELECT p.f1, p1.f1, p.f1 + p1.f1 FROM PATH_TBL p, POINT_TBL p1; f1 | f1 | ?column? ---------------------------+-------------------+--------------------------------------------------------------------------- [(1,2),(3,4)] | (0,0) | [(1,2),(3,4)] ((1,2),(3,4)) | (0,0) | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | (0,0) | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | (0,0) | ((1,2),(3,4)) ((1,2),(3,4)) | (0,0) | ((1,2),(3,4)) [(1,2),(3,4)] | (0,0) | [(1,2),(3,4)] ((10,20)) | (0,0) | ((10,20)) [(11,12),(13,14)] | (0,0) | [(11,12),(13,14)] ((11,12),(13,14)) | (0,0) | ((11,12),(13,14)) [(1,2),(3,4)] | (-10,0) | [(-9,2),(-7,4)] ((1,2),(3,4)) | (-10,0) | ((-9,2),(-7,4)) [(0,0),(3,0),(4,5),(1,6)] | (-10,0) | [(-10,0),(-7,0),(-6,5),(-9,6)] ((1,2),(3,4)) | (-10,0) | ((-9,2),(-7,4)) ((1,2),(3,4)) | (-10,0) | ((-9,2),(-7,4)) [(1,2),(3,4)] | (-10,0) | [(-9,2),(-7,4)] ((10,20)) | (-10,0) | ((0,20)) [(11,12),(13,14)] | (-10,0) | [(1,12),(3,14)] ((11,12),(13,14)) | (-10,0) | ((1,12),(3,14)) [(1,2),(3,4)] | (-3,4) | [(-2,6),(0,8)] ((1,2),(3,4)) | (-3,4) | ((-2,6),(0,8)) [(0,0),(3,0),(4,5),(1,6)] | (-3,4) | [(-3,4),(0,4),(1,9),(-2,10)] ((1,2),(3,4)) | (-3,4) | ((-2,6),(0,8)) ((1,2),(3,4)) | (-3,4) | ((-2,6),(0,8)) [(1,2),(3,4)] | (-3,4) | [(-2,6),(0,8)] ((10,20)) | (-3,4) | ((7,24)) [(11,12),(13,14)] | (-3,4) | [(8,16),(10,18)] ((11,12),(13,14)) | (-3,4) | ((8,16),(10,18)) [(1,2),(3,4)] | (5.1,34.5) | [(6.1,36.5),(8.1,38.5)] ((1,2),(3,4)) | (5.1,34.5) | ((6.1,36.5),(8.1,38.5)) [(0,0),(3,0),(4,5),(1,6)] | (5.1,34.5) | [(5.1,34.5),(8.1,34.5),(9.1,39.5),(6.1,40.5)] ((1,2),(3,4)) | (5.1,34.5) | ((6.1,36.5),(8.1,38.5)) ((1,2),(3,4)) | (5.1,34.5) | ((6.1,36.5),(8.1,38.5)) [(1,2),(3,4)] | (5.1,34.5) | [(6.1,36.5),(8.1,38.5)] ((10,20)) | (5.1,34.5) | ((15.1,54.5)) [(11,12),(13,14)] | (5.1,34.5) | [(16.1,46.5),(18.1,48.5)] ((11,12),(13,14)) | (5.1,34.5) | ((16.1,46.5),(18.1,48.5)) [(1,2),(3,4)] | (-5,-12) | [(-4,-10),(-2,-8)] ((1,2),(3,4)) | (-5,-12) | ((-4,-10),(-2,-8)) [(0,0),(3,0),(4,5),(1,6)] | (-5,-12) | [(-5,-12),(-2,-12),(-1,-7),(-4,-6)] ((1,2),(3,4)) | (-5,-12) | ((-4,-10),(-2,-8)) ((1,2),(3,4)) | (-5,-12) | ((-4,-10),(-2,-8)) [(1,2),(3,4)] | (-5,-12) | [(-4,-10),(-2,-8)] ((10,20)) | (-5,-12) | ((5,8)) [(11,12),(13,14)] | (-5,-12) | [(6,0),(8,2)] ((11,12),(13,14)) | (-5,-12) | ((6,0),(8,2)) [(1,2),(3,4)] | (1e-300,-1e-300) | [(1,2),(3,4)] ((1,2),(3,4)) | (1e-300,-1e-300) | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | (1e-300,-1e-300) | [(1e-300,-1e-300),(3,-1e-300),(4,5),(1,6)] ((1,2),(3,4)) | (1e-300,-1e-300) | ((1,2),(3,4)) ((1,2),(3,4)) | (1e-300,-1e-300) | ((1,2),(3,4)) [(1,2),(3,4)] | (1e-300,-1e-300) | [(1,2),(3,4)] ((10,20)) | (1e-300,-1e-300) | ((10,20)) [(11,12),(13,14)] | (1e-300,-1e-300) | [(11,12),(13,14)] ((11,12),(13,14)) | (1e-300,-1e-300) | ((11,12),(13,14)) [(1,2),(3,4)] | (1e+300,Infinity) | [(1e+300,Infinity),(1e+300,Infinity)] ((1,2),(3,4)) | (1e+300,Infinity) | ((1e+300,Infinity),(1e+300,Infinity)) [(0,0),(3,0),(4,5),(1,6)] | (1e+300,Infinity) | [(1e+300,Infinity),(1e+300,Infinity),(1e+300,Infinity),(1e+300,Infinity)] ((1,2),(3,4)) | (1e+300,Infinity) | ((1e+300,Infinity),(1e+300,Infinity)) ((1,2),(3,4)) | (1e+300,Infinity) | ((1e+300,Infinity),(1e+300,Infinity)) [(1,2),(3,4)] | (1e+300,Infinity) | [(1e+300,Infinity),(1e+300,Infinity)] ((10,20)) | (1e+300,Infinity) | ((1e+300,Infinity)) [(11,12),(13,14)] | (1e+300,Infinity) | [(1e+300,Infinity),(1e+300,Infinity)] ((11,12),(13,14)) | (1e+300,Infinity) | ((1e+300,Infinity),(1e+300,Infinity)) [(1,2),(3,4)] | (Infinity,1e+300) | [(Infinity,1e+300),(Infinity,1e+300)] ((1,2),(3,4)) | (Infinity,1e+300) | ((Infinity,1e+300),(Infinity,1e+300)) [(0,0),(3,0),(4,5),(1,6)] | (Infinity,1e+300) | [(Infinity,1e+300),(Infinity,1e+300),(Infinity,1e+300),(Infinity,1e+300)] ((1,2),(3,4)) | (Infinity,1e+300) | ((Infinity,1e+300),(Infinity,1e+300)) ((1,2),(3,4)) | (Infinity,1e+300) | ((Infinity,1e+300),(Infinity,1e+300)) [(1,2),(3,4)] | (Infinity,1e+300) | [(Infinity,1e+300),(Infinity,1e+300)] ((10,20)) | (Infinity,1e+300) | ((Infinity,1e+300)) [(11,12),(13,14)] | (Infinity,1e+300) | [(Infinity,1e+300),(Infinity,1e+300)] ((11,12),(13,14)) | (Infinity,1e+300) | ((Infinity,1e+300),(Infinity,1e+300)) [(1,2),(3,4)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(0,0),(3,0),(4,5),(1,6)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN),(NaN,NaN),(NaN,NaN)] ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(1,2),(3,4)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((10,20)) | (NaN,NaN) | ((NaN,NaN)) [(11,12),(13,14)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((11,12),(13,14)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(1,2),(3,4)] | (10,10) | [(11,12),(13,14)] ((1,2),(3,4)) | (10,10) | ((11,12),(13,14)) [(0,0),(3,0),(4,5),(1,6)] | (10,10) | [(10,10),(13,10),(14,15),(11,16)] ((1,2),(3,4)) | (10,10) | ((11,12),(13,14)) ((1,2),(3,4)) | (10,10) | ((11,12),(13,14)) [(1,2),(3,4)] | (10,10) | [(11,12),(13,14)] ((10,20)) | (10,10) | ((20,30)) [(11,12),(13,14)] | (10,10) | [(21,22),(23,24)] ((11,12),(13,14)) | (10,10) | ((21,22),(23,24)) (90 rows) -- Subtract point SELECT p.f1, p1.f1, p.f1 - p1.f1 FROM PATH_TBL p, POINT_TBL p1; f1 | f1 | ?column? ---------------------------+-------------------+----------------------------------------------------------------------------------- [(1,2),(3,4)] | (0,0) | [(1,2),(3,4)] ((1,2),(3,4)) | (0,0) | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | (0,0) | [(0,0),(3,0),(4,5),(1,6)] ((1,2),(3,4)) | (0,0) | ((1,2),(3,4)) ((1,2),(3,4)) | (0,0) | ((1,2),(3,4)) [(1,2),(3,4)] | (0,0) | [(1,2),(3,4)] ((10,20)) | (0,0) | ((10,20)) [(11,12),(13,14)] | (0,0) | [(11,12),(13,14)] ((11,12),(13,14)) | (0,0) | ((11,12),(13,14)) [(1,2),(3,4)] | (-10,0) | [(11,2),(13,4)] ((1,2),(3,4)) | (-10,0) | ((11,2),(13,4)) [(0,0),(3,0),(4,5),(1,6)] | (-10,0) | [(10,0),(13,0),(14,5),(11,6)] ((1,2),(3,4)) | (-10,0) | ((11,2),(13,4)) ((1,2),(3,4)) | (-10,0) | ((11,2),(13,4)) [(1,2),(3,4)] | (-10,0) | [(11,2),(13,4)] ((10,20)) | (-10,0) | ((20,20)) [(11,12),(13,14)] | (-10,0) | [(21,12),(23,14)] ((11,12),(13,14)) | (-10,0) | ((21,12),(23,14)) [(1,2),(3,4)] | (-3,4) | [(4,-2),(6,0)] ((1,2),(3,4)) | (-3,4) | ((4,-2),(6,0)) [(0,0),(3,0),(4,5),(1,6)] | (-3,4) | [(3,-4),(6,-4),(7,1),(4,2)] ((1,2),(3,4)) | (-3,4) | ((4,-2),(6,0)) ((1,2),(3,4)) | (-3,4) | ((4,-2),(6,0)) [(1,2),(3,4)] | (-3,4) | [(4,-2),(6,0)] ((10,20)) | (-3,4) | ((13,16)) [(11,12),(13,14)] | (-3,4) | [(14,8),(16,10)] ((11,12),(13,14)) | (-3,4) | ((14,8),(16,10)) [(1,2),(3,4)] | (5.1,34.5) | [(-4.1,-32.5),(-2.1,-30.5)] ((1,2),(3,4)) | (5.1,34.5) | ((-4.1,-32.5),(-2.1,-30.5)) [(0,0),(3,0),(4,5),(1,6)] | (5.1,34.5) | [(-5.1,-34.5),(-2.1,-34.5),(-1.1,-29.5),(-4.1,-28.5)] ((1,2),(3,4)) | (5.1,34.5) | ((-4.1,-32.5),(-2.1,-30.5)) ((1,2),(3,4)) | (5.1,34.5) | ((-4.1,-32.5),(-2.1,-30.5)) [(1,2),(3,4)] | (5.1,34.5) | [(-4.1,-32.5),(-2.1,-30.5)] ((10,20)) | (5.1,34.5) | ((4.9,-14.5)) [(11,12),(13,14)] | (5.1,34.5) | [(5.9,-22.5),(7.9,-20.5)] ((11,12),(13,14)) | (5.1,34.5) | ((5.9,-22.5),(7.9,-20.5)) [(1,2),(3,4)] | (-5,-12) | [(6,14),(8,16)] ((1,2),(3,4)) | (-5,-12) | ((6,14),(8,16)) [(0,0),(3,0),(4,5),(1,6)] | (-5,-12) | [(5,12),(8,12),(9,17),(6,18)] ((1,2),(3,4)) | (-5,-12) | ((6,14),(8,16)) ((1,2),(3,4)) | (-5,-12) | ((6,14),(8,16)) [(1,2),(3,4)] | (-5,-12) | [(6,14),(8,16)] ((10,20)) | (-5,-12) | ((15,32)) [(11,12),(13,14)] | (-5,-12) | [(16,24),(18,26)] ((11,12),(13,14)) | (-5,-12) | ((16,24),(18,26)) [(1,2),(3,4)] | (1e-300,-1e-300) | [(1,2),(3,4)] ((1,2),(3,4)) | (1e-300,-1e-300) | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | (1e-300,-1e-300) | [(-1e-300,1e-300),(3,1e-300),(4,5),(1,6)] ((1,2),(3,4)) | (1e-300,-1e-300) | ((1,2),(3,4)) ((1,2),(3,4)) | (1e-300,-1e-300) | ((1,2),(3,4)) [(1,2),(3,4)] | (1e-300,-1e-300) | [(1,2),(3,4)] ((10,20)) | (1e-300,-1e-300) | ((10,20)) [(11,12),(13,14)] | (1e-300,-1e-300) | [(11,12),(13,14)] ((11,12),(13,14)) | (1e-300,-1e-300) | ((11,12),(13,14)) [(1,2),(3,4)] | (1e+300,Infinity) | [(-1e+300,-Infinity),(-1e+300,-Infinity)] ((1,2),(3,4)) | (1e+300,Infinity) | ((-1e+300,-Infinity),(-1e+300,-Infinity)) [(0,0),(3,0),(4,5),(1,6)] | (1e+300,Infinity) | [(-1e+300,-Infinity),(-1e+300,-Infinity),(-1e+300,-Infinity),(-1e+300,-Infinity)] ((1,2),(3,4)) | (1e+300,Infinity) | ((-1e+300,-Infinity),(-1e+300,-Infinity)) ((1,2),(3,4)) | (1e+300,Infinity) | ((-1e+300,-Infinity),(-1e+300,-Infinity)) [(1,2),(3,4)] | (1e+300,Infinity) | [(-1e+300,-Infinity),(-1e+300,-Infinity)] ((10,20)) | (1e+300,Infinity) | ((-1e+300,-Infinity)) [(11,12),(13,14)] | (1e+300,Infinity) | [(-1e+300,-Infinity),(-1e+300,-Infinity)] ((11,12),(13,14)) | (1e+300,Infinity) | ((-1e+300,-Infinity),(-1e+300,-Infinity)) [(1,2),(3,4)] | (Infinity,1e+300) | [(-Infinity,-1e+300),(-Infinity,-1e+300)] ((1,2),(3,4)) | (Infinity,1e+300) | ((-Infinity,-1e+300),(-Infinity,-1e+300)) [(0,0),(3,0),(4,5),(1,6)] | (Infinity,1e+300) | [(-Infinity,-1e+300),(-Infinity,-1e+300),(-Infinity,-1e+300),(-Infinity,-1e+300)] ((1,2),(3,4)) | (Infinity,1e+300) | ((-Infinity,-1e+300),(-Infinity,-1e+300)) ((1,2),(3,4)) | (Infinity,1e+300) | ((-Infinity,-1e+300),(-Infinity,-1e+300)) [(1,2),(3,4)] | (Infinity,1e+300) | [(-Infinity,-1e+300),(-Infinity,-1e+300)] ((10,20)) | (Infinity,1e+300) | ((-Infinity,-1e+300)) [(11,12),(13,14)] | (Infinity,1e+300) | [(-Infinity,-1e+300),(-Infinity,-1e+300)] ((11,12),(13,14)) | (Infinity,1e+300) | ((-Infinity,-1e+300),(-Infinity,-1e+300)) [(1,2),(3,4)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(0,0),(3,0),(4,5),(1,6)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN),(NaN,NaN),(NaN,NaN)] ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(1,2),(3,4)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((10,20)) | (NaN,NaN) | ((NaN,NaN)) [(11,12),(13,14)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((11,12),(13,14)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(1,2),(3,4)] | (10,10) | [(-9,-8),(-7,-6)] ((1,2),(3,4)) | (10,10) | ((-9,-8),(-7,-6)) [(0,0),(3,0),(4,5),(1,6)] | (10,10) | [(-10,-10),(-7,-10),(-6,-5),(-9,-4)] ((1,2),(3,4)) | (10,10) | ((-9,-8),(-7,-6)) ((1,2),(3,4)) | (10,10) | ((-9,-8),(-7,-6)) [(1,2),(3,4)] | (10,10) | [(-9,-8),(-7,-6)] ((10,20)) | (10,10) | ((0,10)) [(11,12),(13,14)] | (10,10) | [(1,2),(3,4)] ((11,12),(13,14)) | (10,10) | ((1,2),(3,4)) (90 rows) -- Multiply with point SELECT p.f1, p1.f1, p.f1 * p1.f1 FROM PATH_TBL p, POINT_TBL p1; f1 | f1 | ?column? ---------------------------+-------------------+---------------------------------------------------------------------- [(1,2),(3,4)] | (0,0) | [(0,0),(0,0)] ((1,2),(3,4)) | (0,0) | ((0,0),(0,0)) [(0,0),(3,0),(4,5),(1,6)] | (0,0) | [(0,0),(0,0),(0,0),(0,0)] ((1,2),(3,4)) | (0,0) | ((0,0),(0,0)) ((1,2),(3,4)) | (0,0) | ((0,0),(0,0)) [(1,2),(3,4)] | (0,0) | [(0,0),(0,0)] ((10,20)) | (0,0) | ((0,0)) [(11,12),(13,14)] | (0,0) | [(0,0),(0,0)] ((11,12),(13,14)) | (0,0) | ((0,0),(0,0)) [(1,2),(3,4)] | (-10,0) | [(-10,-20),(-30,-40)] ((1,2),(3,4)) | (-10,0) | ((-10,-20),(-30,-40)) [(0,0),(3,0),(4,5),(1,6)] | (-10,0) | [(-0,0),(-30,0),(-40,-50),(-10,-60)] ((1,2),(3,4)) | (-10,0) | ((-10,-20),(-30,-40)) ((1,2),(3,4)) | (-10,0) | ((-10,-20),(-30,-40)) [(1,2),(3,4)] | (-10,0) | [(-10,-20),(-30,-40)] ((10,20)) | (-10,0) | ((-100,-200)) [(11,12),(13,14)] | (-10,0) | [(-110,-120),(-130,-140)] ((11,12),(13,14)) | (-10,0) | ((-110,-120),(-130,-140)) [(1,2),(3,4)] | (-3,4) | [(-11,-2),(-25,0)] ((1,2),(3,4)) | (-3,4) | ((-11,-2),(-25,0)) [(0,0),(3,0),(4,5),(1,6)] | (-3,4) | [(-0,0),(-9,12),(-32,1),(-27,-14)] ((1,2),(3,4)) | (-3,4) | ((-11,-2),(-25,0)) ((1,2),(3,4)) | (-3,4) | ((-11,-2),(-25,0)) [(1,2),(3,4)] | (-3,4) | [(-11,-2),(-25,0)] ((10,20)) | (-3,4) | ((-110,-20)) [(11,12),(13,14)] | (-3,4) | [(-81,8),(-95,10)] ((11,12),(13,14)) | (-3,4) | ((-81,8),(-95,10)) [(1,2),(3,4)] | (5.1,34.5) | [(-63.9,44.7),(-122.7,123.9)] ((1,2),(3,4)) | (5.1,34.5) | ((-63.9,44.7),(-122.7,123.9)) [(0,0),(3,0),(4,5),(1,6)] | (5.1,34.5) | [(0,0),(15.3,103.5),(-152.1,163.5),(-201.9,65.1)] ((1,2),(3,4)) | (5.1,34.5) | ((-63.9,44.7),(-122.7,123.9)) ((1,2),(3,4)) | (5.1,34.5) | ((-63.9,44.7),(-122.7,123.9)) [(1,2),(3,4)] | (5.1,34.5) | [(-63.9,44.7),(-122.7,123.9)] ((10,20)) | (5.1,34.5) | ((-639,447)) [(11,12),(13,14)] | (5.1,34.5) | [(-357.9,440.7),(-416.7,519.9)] ((11,12),(13,14)) | (5.1,34.5) | ((-357.9,440.7),(-416.7,519.9)) [(1,2),(3,4)] | (-5,-12) | [(19,-22),(33,-56)] ((1,2),(3,4)) | (-5,-12) | ((19,-22),(33,-56)) [(0,0),(3,0),(4,5),(1,6)] | (-5,-12) | [(0,-0),(-15,-36),(40,-73),(67,-42)] ((1,2),(3,4)) | (-5,-12) | ((19,-22),(33,-56)) ((1,2),(3,4)) | (-5,-12) | ((19,-22),(33,-56)) [(1,2),(3,4)] | (-5,-12) | [(19,-22),(33,-56)] ((10,20)) | (-5,-12) | ((190,-220)) [(11,12),(13,14)] | (-5,-12) | [(89,-192),(103,-226)] ((11,12),(13,14)) | (-5,-12) | ((89,-192),(103,-226)) [(1,2),(3,4)] | (1e-300,-1e-300) | [(3e-300,1e-300),(7e-300,1e-300)] ((1,2),(3,4)) | (1e-300,-1e-300) | ((3e-300,1e-300),(7e-300,1e-300)) [(0,0),(3,0),(4,5),(1,6)] | (1e-300,-1e-300) | [(0,0),(3e-300,-3e-300),(9e-300,1e-300),(7e-300,5e-300)] ((1,2),(3,4)) | (1e-300,-1e-300) | ((3e-300,1e-300),(7e-300,1e-300)) ((1,2),(3,4)) | (1e-300,-1e-300) | ((3e-300,1e-300),(7e-300,1e-300)) [(1,2),(3,4)] | (1e-300,-1e-300) | [(3e-300,1e-300),(7e-300,1e-300)] ((10,20)) | (1e-300,-1e-300) | ((3e-299,1e-299)) [(11,12),(13,14)] | (1e-300,-1e-300) | [(2.3e-299,1e-300),(2.7e-299,1e-300)] ((11,12),(13,14)) | (1e-300,-1e-300) | ((2.3e-299,1e-300),(2.7e-299,1e-300)) [(1,2),(3,4)] | (1e+300,Infinity) | [(-Infinity,Infinity),(-Infinity,Infinity)] ((1,2),(3,4)) | (1e+300,Infinity) | ((-Infinity,Infinity),(-Infinity,Infinity)) [(0,0),(3,0),(4,5),(1,6)] | (1e+300,Infinity) | [(NaN,NaN),(NaN,Infinity),(-Infinity,Infinity),(-Infinity,Infinity)] ((1,2),(3,4)) | (1e+300,Infinity) | ((-Infinity,Infinity),(-Infinity,Infinity)) ((1,2),(3,4)) | (1e+300,Infinity) | ((-Infinity,Infinity),(-Infinity,Infinity)) [(1,2),(3,4)] | (1e+300,Infinity) | [(-Infinity,Infinity),(-Infinity,Infinity)] ((10,20)) | (1e+300,Infinity) | ((-Infinity,Infinity)) [(11,12),(13,14)] | (1e+300,Infinity) | [(-Infinity,Infinity),(-Infinity,Infinity)] ((11,12),(13,14)) | (1e+300,Infinity) | ((-Infinity,Infinity),(-Infinity,Infinity)) [(1,2),(3,4)] | (Infinity,1e+300) | [(Infinity,Infinity),(Infinity,Infinity)] ((1,2),(3,4)) | (Infinity,1e+300) | ((Infinity,Infinity),(Infinity,Infinity)) [(0,0),(3,0),(4,5),(1,6)] | (Infinity,1e+300) | [(NaN,NaN),(Infinity,NaN),(Infinity,Infinity),(Infinity,Infinity)] ((1,2),(3,4)) | (Infinity,1e+300) | ((Infinity,Infinity),(Infinity,Infinity)) ((1,2),(3,4)) | (Infinity,1e+300) | ((Infinity,Infinity),(Infinity,Infinity)) [(1,2),(3,4)] | (Infinity,1e+300) | [(Infinity,Infinity),(Infinity,Infinity)] ((10,20)) | (Infinity,1e+300) | ((Infinity,Infinity)) [(11,12),(13,14)] | (Infinity,1e+300) | [(Infinity,Infinity),(Infinity,Infinity)] ((11,12),(13,14)) | (Infinity,1e+300) | ((Infinity,Infinity),(Infinity,Infinity)) [(1,2),(3,4)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(0,0),(3,0),(4,5),(1,6)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN),(NaN,NaN),(NaN,NaN)] ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) ((1,2),(3,4)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(1,2),(3,4)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((10,20)) | (NaN,NaN) | ((NaN,NaN)) [(11,12),(13,14)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN)] ((11,12),(13,14)) | (NaN,NaN) | ((NaN,NaN),(NaN,NaN)) [(1,2),(3,4)] | (10,10) | [(-10,30),(-10,70)] ((1,2),(3,4)) | (10,10) | ((-10,30),(-10,70)) [(0,0),(3,0),(4,5),(1,6)] | (10,10) | [(0,0),(30,30),(-10,90),(-50,70)] ((1,2),(3,4)) | (10,10) | ((-10,30),(-10,70)) ((1,2),(3,4)) | (10,10) | ((-10,30),(-10,70)) [(1,2),(3,4)] | (10,10) | [(-10,30),(-10,70)] ((10,20)) | (10,10) | ((-100,300)) [(11,12),(13,14)] | (10,10) | [(-10,230),(-10,270)] ((11,12),(13,14)) | (10,10) | ((-10,230),(-10,270)) (90 rows) -- Divide by point SELECT p.f1, p1.f1, p.f1 / p1.f1 FROM PATH_TBL p, POINT_TBL p1 WHERE p1.f1[0] BETWEEN 1 AND 1000; f1 | f1 | ?column? ---------------------------+------------+----------------------------------------------------------------------------------------------------------------- [(1,2),(3,4)] | (5.1,34.5) | [(0.0609244733856,-0.0199792807459),(0.12604212915,-0.0683242069952)] [(1,2),(3,4)] | (10,10) | [(0.15,0.05),(0.35,0.05)] ((1,2),(3,4)) | (5.1,34.5) | ((0.0609244733856,-0.0199792807459),(0.12604212915,-0.0683242069952)) ((1,2),(3,4)) | (10,10) | ((0.15,0.05),(0.35,0.05)) [(0,0),(3,0),(4,5),(1,6)] | (5.1,34.5) | [(0,0),(0.0125795471363,-0.0850969365103),(0.158600957032,-0.0924966701199),(0.174387055399,-0.00320655123082)] [(0,0),(3,0),(4,5),(1,6)] | (10,10) | [(0,0),(0.15,-0.15),(0.45,0.05),(0.35,0.25)] ((1,2),(3,4)) | (5.1,34.5) | ((0.0609244733856,-0.0199792807459),(0.12604212915,-0.0683242069952)) ((1,2),(3,4)) | (10,10) | ((0.15,0.05),(0.35,0.05)) ((1,2),(3,4)) | (5.1,34.5) | ((0.0609244733856,-0.0199792807459),(0.12604212915,-0.0683242069952)) ((1,2),(3,4)) | (10,10) | ((0.15,0.05),(0.35,0.05)) [(1,2),(3,4)] | (5.1,34.5) | [(0.0609244733856,-0.0199792807459),(0.12604212915,-0.0683242069952)] [(1,2),(3,4)] | (10,10) | [(0.15,0.05),(0.35,0.05)] ((10,20)) | (5.1,34.5) | ((0.609244733856,-0.199792807459)) ((10,20)) | (10,10) | ((1.5,0.5)) [(11,12),(13,14)] | (5.1,34.5) | [(0.386512752208,-0.261703911993),(0.451630407972,-0.310048838242)] [(11,12),(13,14)] | (10,10) | [(1.15,0.05),(1.35,0.05)] ((11,12),(13,14)) | (5.1,34.5) | ((0.386512752208,-0.261703911993),(0.451630407972,-0.310048838242)) ((11,12),(13,14)) | (10,10) | ((1.15,0.05),(1.35,0.05)) (18 rows) -- Division by 0 error SELECT p.f1, p1.f1, p.f1 / p1.f1 FROM PATH_TBL p, POINT_TBL p1 WHERE p1.f1 ~= '(0,0)'::point; ERROR: division by zero -- Distance to path SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM PATH_TBL p1, PATH_TBL p2; f1 | f1 | ?column? ---------------------------+---------------------------+---------------- [(1,2),(3,4)] | [(1,2),(3,4)] | 0 [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6)] | 0.784464540553 [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(1,2),(3,4)] | [(1,2),(3,4)] | 0 [(1,2),(3,4)] | ((10,20)) | 17.4642491966 [(1,2),(3,4)] | [(11,12),(13,14)] | 11.313708499 [(1,2),(3,4)] | ((11,12),(13,14)) | 11.313708499 ((1,2),(3,4)) | [(1,2),(3,4)] | 0 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] | 0.784464540553 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | [(1,2),(3,4)] | 0 ((1,2),(3,4)) | ((10,20)) | 17.4642491966 ((1,2),(3,4)) | [(11,12),(13,14)] | 11.313708499 ((1,2),(3,4)) | ((11,12),(13,14)) | 11.313708499 [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] | 0.784464540553 [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | 0.784464540553 [(0,0),(3,0),(4,5),(1,6)] | [(0,0),(3,0),(4,5),(1,6)] | 0 [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | 0.784464540553 [(0,0),(3,0),(4,5),(1,6)] | ((1,2),(3,4)) | 0.784464540553 [(0,0),(3,0),(4,5),(1,6)] | [(1,2),(3,4)] | 0.784464540553 [(0,0),(3,0),(4,5),(1,6)] | ((10,20)) | 16.1554944214 [(0,0),(3,0),(4,5),(1,6)] | [(11,12),(13,14)] | 9.89949493661 [(0,0),(3,0),(4,5),(1,6)] | ((11,12),(13,14)) | 9.89949493661 ((1,2),(3,4)) | [(1,2),(3,4)] | 0 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] | 0.784464540553 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | [(1,2),(3,4)] | 0 ((1,2),(3,4)) | ((10,20)) | 17.4642491966 ((1,2),(3,4)) | [(11,12),(13,14)] | 11.313708499 ((1,2),(3,4)) | ((11,12),(13,14)) | 11.313708499 ((1,2),(3,4)) | [(1,2),(3,4)] | 0 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | [(0,0),(3,0),(4,5),(1,6)] | 0.784464540553 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | ((1,2),(3,4)) | 0 ((1,2),(3,4)) | [(1,2),(3,4)] | 0 ((1,2),(3,4)) | ((10,20)) | 17.4642491966 ((1,2),(3,4)) | [(11,12),(13,14)] | 11.313708499 ((1,2),(3,4)) | ((11,12),(13,14)) | 11.313708499 [(1,2),(3,4)] | [(1,2),(3,4)] | 0 [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(1,2),(3,4)] | [(0,0),(3,0),(4,5),(1,6)] | 0.784464540553 [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(1,2),(3,4)] | ((1,2),(3,4)) | 0 [(1,2),(3,4)] | [(1,2),(3,4)] | 0 [(1,2),(3,4)] | ((10,20)) | 17.4642491966 [(1,2),(3,4)] | [(11,12),(13,14)] | 11.313708499 [(1,2),(3,4)] | ((11,12),(13,14)) | 11.313708499 ((10,20)) | [(1,2),(3,4)] | 17.4642491966 ((10,20)) | ((1,2),(3,4)) | 17.4642491966 ((10,20)) | [(0,0),(3,0),(4,5),(1,6)] | 16.1554944214 ((10,20)) | ((1,2),(3,4)) | 17.4642491966 ((10,20)) | ((1,2),(3,4)) | 17.4642491966 ((10,20)) | [(1,2),(3,4)] | 17.4642491966 ((10,20)) | ((10,20)) | 0 ((10,20)) | [(11,12),(13,14)] | 6.7082039325 ((10,20)) | ((11,12),(13,14)) | 6.7082039325 [(11,12),(13,14)] | [(1,2),(3,4)] | 11.313708499 [(11,12),(13,14)] | ((1,2),(3,4)) | 11.313708499 [(11,12),(13,14)] | [(0,0),(3,0),(4,5),(1,6)] | 9.89949493661 [(11,12),(13,14)] | ((1,2),(3,4)) | 11.313708499 [(11,12),(13,14)] | ((1,2),(3,4)) | 11.313708499 [(11,12),(13,14)] | [(1,2),(3,4)] | 11.313708499 [(11,12),(13,14)] | ((10,20)) | 6.7082039325 [(11,12),(13,14)] | [(11,12),(13,14)] | 0 [(11,12),(13,14)] | ((11,12),(13,14)) | 0 ((11,12),(13,14)) | [(1,2),(3,4)] | 11.313708499 ((11,12),(13,14)) | ((1,2),(3,4)) | 11.313708499 ((11,12),(13,14)) | [(0,0),(3,0),(4,5),(1,6)] | 9.89949493661 ((11,12),(13,14)) | ((1,2),(3,4)) | 11.313708499 ((11,12),(13,14)) | ((1,2),(3,4)) | 11.313708499 ((11,12),(13,14)) | [(1,2),(3,4)] | 11.313708499 ((11,12),(13,14)) | ((10,20)) | 6.7082039325 ((11,12),(13,14)) | [(11,12),(13,14)] | 0 ((11,12),(13,14)) | ((11,12),(13,14)) | 0 (81 rows) -- -- Polygons -- -- containment SELECT p.f1, poly.f1, poly.f1 @> p.f1 AS contains FROM POLYGON_TBL poly, POINT_TBL p; f1 | f1 | contains -------------------+----------------------------+---------- (0,0) | ((2,0),(2,4),(0,0)) | t (0,0) | ((3,1),(3,3),(1,0)) | f (0,0) | ((1,2),(3,4),(5,6),(7,8)) | f (0,0) | ((7,8),(5,6),(3,4),(1,2)) | f (0,0) | ((1,2),(7,8),(5,6),(3,-4)) | f (0,0) | ((0,0)) | t (0,0) | ((0,1),(0,1)) | f (-10,0) | ((2,0),(2,4),(0,0)) | f (-10,0) | ((3,1),(3,3),(1,0)) | f (-10,0) | ((1,2),(3,4),(5,6),(7,8)) | f (-10,0) | ((7,8),(5,6),(3,4),(1,2)) | f (-10,0) | ((1,2),(7,8),(5,6),(3,-4)) | f (-10,0) | ((0,0)) | f (-10,0) | ((0,1),(0,1)) | f (-3,4) | ((2,0),(2,4),(0,0)) | f (-3,4) | ((3,1),(3,3),(1,0)) | f (-3,4) | ((1,2),(3,4),(5,6),(7,8)) | f (-3,4) | ((7,8),(5,6),(3,4),(1,2)) | f (-3,4) | ((1,2),(7,8),(5,6),(3,-4)) | f (-3,4) | ((0,0)) | f (-3,4) | ((0,1),(0,1)) | f (5.1,34.5) | ((2,0),(2,4),(0,0)) | f (5.1,34.5) | ((3,1),(3,3),(1,0)) | f (5.1,34.5) | ((1,2),(3,4),(5,6),(7,8)) | f (5.1,34.5) | ((7,8),(5,6),(3,4),(1,2)) | f (5.1,34.5) | ((1,2),(7,8),(5,6),(3,-4)) | f (5.1,34.5) | ((0,0)) | f (5.1,34.5) | ((0,1),(0,1)) | f (-5,-12) | ((2,0),(2,4),(0,0)) | f (-5,-12) | ((3,1),(3,3),(1,0)) | f (-5,-12) | ((1,2),(3,4),(5,6),(7,8)) | f (-5,-12) | ((7,8),(5,6),(3,4),(1,2)) | f (-5,-12) | ((1,2),(7,8),(5,6),(3,-4)) | f (-5,-12) | ((0,0)) | f (-5,-12) | ((0,1),(0,1)) | f (1e-300,-1e-300) | ((2,0),(2,4),(0,0)) | t (1e-300,-1e-300) | ((3,1),(3,3),(1,0)) | f (1e-300,-1e-300) | ((1,2),(3,4),(5,6),(7,8)) | f (1e-300,-1e-300) | ((7,8),(5,6),(3,4),(1,2)) | f (1e-300,-1e-300) | ((1,2),(7,8),(5,6),(3,-4)) | f (1e-300,-1e-300) | ((0,0)) | t (1e-300,-1e-300) | ((0,1),(0,1)) | f (1e+300,Infinity) | ((2,0),(2,4),(0,0)) | f (1e+300,Infinity) | ((3,1),(3,3),(1,0)) | f (1e+300,Infinity) | ((1,2),(3,4),(5,6),(7,8)) | f (1e+300,Infinity) | ((7,8),(5,6),(3,4),(1,2)) | f (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | f (1e+300,Infinity) | ((0,0)) | f (1e+300,Infinity) | ((0,1),(0,1)) | f (Infinity,1e+300) | ((2,0),(2,4),(0,0)) | f (Infinity,1e+300) | ((3,1),(3,3),(1,0)) | f (Infinity,1e+300) | ((1,2),(3,4),(5,6),(7,8)) | f (Infinity,1e+300) | ((7,8),(5,6),(3,4),(1,2)) | f (Infinity,1e+300) | ((1,2),(7,8),(5,6),(3,-4)) | f (Infinity,1e+300) | ((0,0)) | f (Infinity,1e+300) | ((0,1),(0,1)) | f (NaN,NaN) | ((2,0),(2,4),(0,0)) | t (NaN,NaN) | ((3,1),(3,3),(1,0)) | t (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | t (NaN,NaN) | ((7,8),(5,6),(3,4),(1,2)) | t (NaN,NaN) | ((1,2),(7,8),(5,6),(3,-4)) | t (NaN,NaN) | ((0,0)) | t (NaN,NaN) | ((0,1),(0,1)) | t (10,10) | ((2,0),(2,4),(0,0)) | f (10,10) | ((3,1),(3,3),(1,0)) | f (10,10) | ((1,2),(3,4),(5,6),(7,8)) | f (10,10) | ((7,8),(5,6),(3,4),(1,2)) | f (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | f (10,10) | ((0,0)) | f (10,10) | ((0,1),(0,1)) | f (70 rows) SELECT p.f1, poly.f1, p.f1 <@ poly.f1 AS contained FROM POLYGON_TBL poly, POINT_TBL p; f1 | f1 | contained -------------------+----------------------------+----------- (0,0) | ((2,0),(2,4),(0,0)) | t (0,0) | ((3,1),(3,3),(1,0)) | f (0,0) | ((1,2),(3,4),(5,6),(7,8)) | f (0,0) | ((7,8),(5,6),(3,4),(1,2)) | f (0,0) | ((1,2),(7,8),(5,6),(3,-4)) | f (0,0) | ((0,0)) | t (0,0) | ((0,1),(0,1)) | f (-10,0) | ((2,0),(2,4),(0,0)) | f (-10,0) | ((3,1),(3,3),(1,0)) | f (-10,0) | ((1,2),(3,4),(5,6),(7,8)) | f (-10,0) | ((7,8),(5,6),(3,4),(1,2)) | f (-10,0) | ((1,2),(7,8),(5,6),(3,-4)) | f (-10,0) | ((0,0)) | f (-10,0) | ((0,1),(0,1)) | f (-3,4) | ((2,0),(2,4),(0,0)) | f (-3,4) | ((3,1),(3,3),(1,0)) | f (-3,4) | ((1,2),(3,4),(5,6),(7,8)) | f (-3,4) | ((7,8),(5,6),(3,4),(1,2)) | f (-3,4) | ((1,2),(7,8),(5,6),(3,-4)) | f (-3,4) | ((0,0)) | f (-3,4) | ((0,1),(0,1)) | f (5.1,34.5) | ((2,0),(2,4),(0,0)) | f (5.1,34.5) | ((3,1),(3,3),(1,0)) | f (5.1,34.5) | ((1,2),(3,4),(5,6),(7,8)) | f (5.1,34.5) | ((7,8),(5,6),(3,4),(1,2)) | f (5.1,34.5) | ((1,2),(7,8),(5,6),(3,-4)) | f (5.1,34.5) | ((0,0)) | f (5.1,34.5) | ((0,1),(0,1)) | f (-5,-12) | ((2,0),(2,4),(0,0)) | f (-5,-12) | ((3,1),(3,3),(1,0)) | f (-5,-12) | ((1,2),(3,4),(5,6),(7,8)) | f (-5,-12) | ((7,8),(5,6),(3,4),(1,2)) | f (-5,-12) | ((1,2),(7,8),(5,6),(3,-4)) | f (-5,-12) | ((0,0)) | f (-5,-12) | ((0,1),(0,1)) | f (1e-300,-1e-300) | ((2,0),(2,4),(0,0)) | t (1e-300,-1e-300) | ((3,1),(3,3),(1,0)) | f (1e-300,-1e-300) | ((1,2),(3,4),(5,6),(7,8)) | f (1e-300,-1e-300) | ((7,8),(5,6),(3,4),(1,2)) | f (1e-300,-1e-300) | ((1,2),(7,8),(5,6),(3,-4)) | f (1e-300,-1e-300) | ((0,0)) | t (1e-300,-1e-300) | ((0,1),(0,1)) | f (1e+300,Infinity) | ((2,0),(2,4),(0,0)) | f (1e+300,Infinity) | ((3,1),(3,3),(1,0)) | f (1e+300,Infinity) | ((1,2),(3,4),(5,6),(7,8)) | f (1e+300,Infinity) | ((7,8),(5,6),(3,4),(1,2)) | f (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | f (1e+300,Infinity) | ((0,0)) | f (1e+300,Infinity) | ((0,1),(0,1)) | f (Infinity,1e+300) | ((2,0),(2,4),(0,0)) | f (Infinity,1e+300) | ((3,1),(3,3),(1,0)) | f (Infinity,1e+300) | ((1,2),(3,4),(5,6),(7,8)) | f (Infinity,1e+300) | ((7,8),(5,6),(3,4),(1,2)) | f (Infinity,1e+300) | ((1,2),(7,8),(5,6),(3,-4)) | f (Infinity,1e+300) | ((0,0)) | f (Infinity,1e+300) | ((0,1),(0,1)) | f (NaN,NaN) | ((2,0),(2,4),(0,0)) | t (NaN,NaN) | ((3,1),(3,3),(1,0)) | t (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | t (NaN,NaN) | ((7,8),(5,6),(3,4),(1,2)) | t (NaN,NaN) | ((1,2),(7,8),(5,6),(3,-4)) | t (NaN,NaN) | ((0,0)) | t (NaN,NaN) | ((0,1),(0,1)) | t (10,10) | ((2,0),(2,4),(0,0)) | f (10,10) | ((3,1),(3,3),(1,0)) | f (10,10) | ((1,2),(3,4),(5,6),(7,8)) | f (10,10) | ((7,8),(5,6),(3,4),(1,2)) | f (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | f (10,10) | ((0,0)) | f (10,10) | ((0,1),(0,1)) | f (70 rows) SELECT npoints(f1) AS npoints, f1 AS polygon FROM POLYGON_TBL; npoints | polygon ---------+---------------------------- 3 | ((2,0),(2,4),(0,0)) 3 | ((3,1),(3,3),(1,0)) 4 | ((1,2),(3,4),(5,6),(7,8)) 4 | ((7,8),(5,6),(3,4),(1,2)) 4 | ((1,2),(7,8),(5,6),(3,-4)) 1 | ((0,0)) 2 | ((0,1),(0,1)) (7 rows) SELECT polygon(f1) FROM BOX_TBL; polygon ------------------------------------------- ((0,0),(0,2),(2,2),(2,0)) ((1,1),(1,3),(3,3),(3,1)) ((-8,-10),(-8,2),(-2,2),(-2,-10)) ((2.5,2.5),(2.5,3.5),(2.5,3.5),(2.5,2.5)) ((3,3),(3,3),(3,3),(3,3)) (5 rows) SELECT polygon(f1) FROM PATH_TBL WHERE isclosed(f1); polygon ------------------- ((1,2),(3,4)) ((1,2),(3,4)) ((1,2),(3,4)) ((10,20)) ((11,12),(13,14)) (5 rows) SELECT f1 AS open_path, polygon( pclose(f1)) AS polygon FROM PATH_TBL WHERE isopen(f1); open_path | polygon ---------------------------+--------------------------- [(1,2),(3,4)] | ((1,2),(3,4)) [(0,0),(3,0),(4,5),(1,6)] | ((0,0),(3,0),(4,5),(1,6)) [(1,2),(3,4)] | ((1,2),(3,4)) [(11,12),(13,14)] | ((11,12),(13,14)) (4 rows) -- To box SELECT f1, f1::box FROM POLYGON_TBL; f1 | f1 ----------------------------+-------------- ((2,0),(2,4),(0,0)) | (2,4),(0,0) ((3,1),(3,3),(1,0)) | (3,3),(1,0) ((1,2),(3,4),(5,6),(7,8)) | (7,8),(1,2) ((7,8),(5,6),(3,4),(1,2)) | (7,8),(1,2) ((1,2),(7,8),(5,6),(3,-4)) | (7,8),(1,-4) ((0,0)) | (0,0),(0,0) ((0,1),(0,1)) | (0,1),(0,1) (7 rows) -- To path SELECT f1, f1::path FROM POLYGON_TBL; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (7 rows) -- Same as polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 ~= p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (9 rows) -- Contained by polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 <@ p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((2,0),(2,4),(0,0)) ((0,0)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (12 rows) -- Contains polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 @> p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0)) | ((0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(7,8),(5,6),(3,-4)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (12 rows) -- Overlap with polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 && p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0)) | ((3,1),(3,3),(1,0)) ((2,0),(2,4),(0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((2,0),(2,4),(0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((2,0),(2,4),(0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((2,0),(2,4),(0,0)) | ((0,0)) ((3,1),(3,3),(1,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((3,1),(3,3),(1,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(3,4),(5,6),(7,8)) | ((2,0),(2,4),(0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) ((7,8),(5,6),(3,4),(1,2)) | ((2,0),(2,4),(0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(7,8),(5,6),(3,-4)) | ((2,0),(2,4),(0,0)) ((1,2),(7,8),(5,6),(3,-4)) | ((3,1),(3,3),(1,0)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(7,8),(5,6),(3,-4)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((2,0),(2,4),(0,0)) ((0,0)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (25 rows) -- Left of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 << p2.f1; f1 | f1 ---------------+---------------------------- ((0,0)) | ((3,1),(3,3),(1,0)) ((0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,1),(0,1)) | ((3,1),(3,3),(1,0)) ((0,1),(0,1)) | ((1,2),(3,4),(5,6),(7,8)) ((0,1),(0,1)) | ((7,8),(5,6),(3,4),(1,2)) ((0,1),(0,1)) | ((1,2),(7,8),(5,6),(3,-4)) (8 rows) -- Overlap of left of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 &< p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0)) | ((3,1),(3,3),(1,0)) ((2,0),(2,4),(0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((2,0),(2,4),(0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((2,0),(2,4),(0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((3,1),(3,3),(1,0)) | ((1,2),(3,4),(5,6),(7,8)) ((3,1),(3,3),(1,0)) | ((7,8),(5,6),(3,4),(1,2)) ((3,1),(3,3),(1,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(7,8),(5,6),(3,-4)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((2,0),(2,4),(0,0)) ((0,0)) | ((3,1),(3,3),(1,0)) ((0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((0,0)) ((0,0)) | ((0,1),(0,1)) ((0,1),(0,1)) | ((2,0),(2,4),(0,0)) ((0,1),(0,1)) | ((3,1),(3,3),(1,0)) ((0,1),(0,1)) | ((1,2),(3,4),(5,6),(7,8)) ((0,1),(0,1)) | ((7,8),(5,6),(3,4),(1,2)) ((0,1),(0,1)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,1),(0,1)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (32 rows) -- Right of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 >> p2.f1; f1 | f1 ----------------------------+--------------- ((3,1),(3,3),(1,0)) | ((0,0)) ((3,1),(3,3),(1,0)) | ((0,1),(0,1)) ((1,2),(3,4),(5,6),(7,8)) | ((0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((0,1),(0,1)) ((7,8),(5,6),(3,4),(1,2)) | ((0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((0,1),(0,1)) ((1,2),(7,8),(5,6),(3,-4)) | ((0,0)) ((1,2),(7,8),(5,6),(3,-4)) | ((0,1),(0,1)) (8 rows) -- Overlap of right of polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 &> p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0)) | ((0,0)) ((2,0),(2,4),(0,0)) | ((0,1),(0,1)) ((3,1),(3,3),(1,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((3,1),(3,3),(1,0)) | ((1,2),(3,4),(5,6),(7,8)) ((3,1),(3,3),(1,0)) | ((7,8),(5,6),(3,4),(1,2)) ((3,1),(3,3),(1,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((3,1),(3,3),(1,0)) | ((0,0)) ((3,1),(3,3),(1,0)) | ((0,1),(0,1)) ((1,2),(3,4),(5,6),(7,8)) | ((2,0),(2,4),(0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((3,1),(3,3),(1,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(3,4),(5,6),(7,8)) | ((0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((0,1),(0,1)) ((7,8),(5,6),(3,4),(1,2)) | ((2,0),(2,4),(0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((3,1),(3,3),(1,0)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) ((7,8),(5,6),(3,4),(1,2)) | ((0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((0,1),(0,1)) ((1,2),(7,8),(5,6),(3,-4)) | ((2,0),(2,4),(0,0)) ((1,2),(7,8),(5,6),(3,-4)) | ((3,1),(3,3),(1,0)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(7,8),(5,6),(3,-4)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(7,8),(5,6),(3,-4)) | ((0,0)) ((1,2),(7,8),(5,6),(3,-4)) | ((0,1),(0,1)) ((0,0)) | ((2,0),(2,4),(0,0)) ((0,0)) | ((0,0)) ((0,0)) | ((0,1),(0,1)) ((0,1),(0,1)) | ((2,0),(2,4),(0,0)) ((0,1),(0,1)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (37 rows) -- Below polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 <<| p2.f1; f1 | f1 ---------------+--------------------------- ((0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((0,0)) | ((0,1),(0,1)) ((0,1),(0,1)) | ((1,2),(3,4),(5,6),(7,8)) ((0,1),(0,1)) | ((7,8),(5,6),(3,4),(1,2)) (5 rows) -- Overlap or below polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 &<| p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((2,0),(2,4),(0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((2,0),(2,4),(0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((3,1),(3,3),(1,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((3,1),(3,3),(1,0)) | ((1,2),(3,4),(5,6),(7,8)) ((3,1),(3,3),(1,0)) | ((7,8),(5,6),(3,4),(1,2)) ((3,1),(3,3),(1,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(7,8),(5,6),(3,-4)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((2,0),(2,4),(0,0)) ((0,0)) | ((3,1),(3,3),(1,0)) ((0,0)) | ((1,2),(3,4),(5,6),(7,8)) ((0,0)) | ((7,8),(5,6),(3,4),(1,2)) ((0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((0,0)) ((0,0)) | ((0,1),(0,1)) ((0,1),(0,1)) | ((2,0),(2,4),(0,0)) ((0,1),(0,1)) | ((3,1),(3,3),(1,0)) ((0,1),(0,1)) | ((1,2),(3,4),(5,6),(7,8)) ((0,1),(0,1)) | ((7,8),(5,6),(3,4),(1,2)) ((0,1),(0,1)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,1),(0,1)) | ((0,1),(0,1)) (31 rows) -- Above polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 |>> p2.f1; f1 | f1 ---------------------------+--------------- ((1,2),(3,4),(5,6),(7,8)) | ((0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((0,1),(0,1)) ((7,8),(5,6),(3,4),(1,2)) | ((0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((0,1),(0,1)) ((0,1),(0,1)) | ((0,0)) (5 rows) -- Overlap or above polygon SELECT p1.f1, p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2 WHERE p1.f1 |&> p2.f1; f1 | f1 ----------------------------+---------------------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) ((2,0),(2,4),(0,0)) | ((3,1),(3,3),(1,0)) ((2,0),(2,4),(0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((2,0),(2,4),(0,0)) | ((0,0)) ((3,1),(3,3),(1,0)) | ((2,0),(2,4),(0,0)) ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) ((3,1),(3,3),(1,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((3,1),(3,3),(1,0)) | ((0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((2,0),(2,4),(0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((3,1),(3,3),(1,0)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) ((1,2),(3,4),(5,6),(7,8)) | ((0,0)) ((1,2),(3,4),(5,6),(7,8)) | ((0,1),(0,1)) ((7,8),(5,6),(3,4),(1,2)) | ((2,0),(2,4),(0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((3,1),(3,3),(1,0)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) ((7,8),(5,6),(3,4),(1,2)) | ((0,0)) ((7,8),(5,6),(3,4),(1,2)) | ((0,1),(0,1)) ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((2,0),(2,4),(0,0)) ((0,0)) | ((3,1),(3,3),(1,0)) ((0,0)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,0)) | ((0,0)) ((0,1),(0,1)) | ((2,0),(2,4),(0,0)) ((0,1),(0,1)) | ((3,1),(3,3),(1,0)) ((0,1),(0,1)) | ((1,2),(7,8),(5,6),(3,-4)) ((0,1),(0,1)) | ((0,0)) ((0,1),(0,1)) | ((0,1),(0,1)) (32 rows) -- Distance to polygon SELECT p1.f1, p2.f1, p1.f1 <-> p2.f1 FROM POLYGON_TBL p1, POLYGON_TBL p2; f1 | f1 | ?column? ----------------------------+----------------------------+---------------- ((2,0),(2,4),(0,0)) | ((2,0),(2,4),(0,0)) | 0 ((2,0),(2,4),(0,0)) | ((3,1),(3,3),(1,0)) | 0 ((2,0),(2,4),(0,0)) | ((1,2),(3,4),(5,6),(7,8)) | 0 ((2,0),(2,4),(0,0)) | ((7,8),(5,6),(3,4),(1,2)) | 0 ((2,0),(2,4),(0,0)) | ((1,2),(7,8),(5,6),(3,-4)) | 0 ((2,0),(2,4),(0,0)) | ((0,0)) | 0 ((2,0),(2,4),(0,0)) | ((0,1),(0,1)) | 0.4472135955 ((3,1),(3,3),(1,0)) | ((2,0),(2,4),(0,0)) | 0 ((3,1),(3,3),(1,0)) | ((3,1),(3,3),(1,0)) | 0 ((3,1),(3,3),(1,0)) | ((1,2),(3,4),(5,6),(7,8)) | 0.707106781187 ((3,1),(3,3),(1,0)) | ((7,8),(5,6),(3,4),(1,2)) | 0.707106781187 ((3,1),(3,3),(1,0)) | ((1,2),(7,8),(5,6),(3,-4)) | 0 ((3,1),(3,3),(1,0)) | ((0,0)) | 1 ((3,1),(3,3),(1,0)) | ((0,1),(0,1)) | 1.38675049056 ((1,2),(3,4),(5,6),(7,8)) | ((2,0),(2,4),(0,0)) | 0 ((1,2),(3,4),(5,6),(7,8)) | ((3,1),(3,3),(1,0)) | 0.707106781187 ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(3,4),(5,6),(7,8)) | 0 ((1,2),(3,4),(5,6),(7,8)) | ((7,8),(5,6),(3,4),(1,2)) | 0 ((1,2),(3,4),(5,6),(7,8)) | ((1,2),(7,8),(5,6),(3,-4)) | 0 ((1,2),(3,4),(5,6),(7,8)) | ((0,0)) | 2.2360679775 ((1,2),(3,4),(5,6),(7,8)) | ((0,1),(0,1)) | 1.41421356237 ((7,8),(5,6),(3,4),(1,2)) | ((2,0),(2,4),(0,0)) | 0 ((7,8),(5,6),(3,4),(1,2)) | ((3,1),(3,3),(1,0)) | 0.707106781187 ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(3,4),(5,6),(7,8)) | 0 ((7,8),(5,6),(3,4),(1,2)) | ((7,8),(5,6),(3,4),(1,2)) | 0 ((7,8),(5,6),(3,4),(1,2)) | ((1,2),(7,8),(5,6),(3,-4)) | 0 ((7,8),(5,6),(3,4),(1,2)) | ((0,0)) | 2.2360679775 ((7,8),(5,6),(3,4),(1,2)) | ((0,1),(0,1)) | 1.41421356237 ((1,2),(7,8),(5,6),(3,-4)) | ((2,0),(2,4),(0,0)) | 0 ((1,2),(7,8),(5,6),(3,-4)) | ((3,1),(3,3),(1,0)) | 0 ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(3,4),(5,6),(7,8)) | 0 ((1,2),(7,8),(5,6),(3,-4)) | ((7,8),(5,6),(3,4),(1,2)) | 0 ((1,2),(7,8),(5,6),(3,-4)) | ((1,2),(7,8),(5,6),(3,-4)) | 0 ((1,2),(7,8),(5,6),(3,-4)) | ((0,0)) | 1.58113883008 ((1,2),(7,8),(5,6),(3,-4)) | ((0,1),(0,1)) | 1.26491106407 ((0,0)) | ((2,0),(2,4),(0,0)) | 0 ((0,0)) | ((3,1),(3,3),(1,0)) | 1 ((0,0)) | ((1,2),(3,4),(5,6),(7,8)) | 2.2360679775 ((0,0)) | ((7,8),(5,6),(3,4),(1,2)) | 2.2360679775 ((0,0)) | ((1,2),(7,8),(5,6),(3,-4)) | 1.58113883008 ((0,0)) | ((0,0)) | 0 ((0,0)) | ((0,1),(0,1)) | 1 ((0,1),(0,1)) | ((2,0),(2,4),(0,0)) | 0.4472135955 ((0,1),(0,1)) | ((3,1),(3,3),(1,0)) | 1.38675049056 ((0,1),(0,1)) | ((1,2),(3,4),(5,6),(7,8)) | 1.41421356237 ((0,1),(0,1)) | ((7,8),(5,6),(3,4),(1,2)) | 1.41421356237 ((0,1),(0,1)) | ((1,2),(7,8),(5,6),(3,-4)) | 1.26491106407 ((0,1),(0,1)) | ((0,0)) | 1 ((0,1),(0,1)) | ((0,1),(0,1)) | 0 (49 rows) -- -- Circles -- SELECT circle(f1, 50.0) FROM POINT_TBL; circle ------------------------ <(0,0),50> <(-10,0),50> <(-3,4),50> <(5.1,34.5),50> <(-5,-12),50> <(1e-300,-1e-300),50> <(1e+300,Infinity),50> <(Infinity,1e+300),50> <(NaN,NaN),50> <(10,10),50> (10 rows) SELECT circle(f1) FROM BOX_TBL; circle ------------------------ <(1,1),1.41421356237> <(2,2),1.41421356237> <(-5,-4),6.7082039325> <(2.5,3),0.5> <(3,3),0> (5 rows) SELECT circle(f1) FROM POLYGON_TBL WHERE (# f1) >= 3; circle ----------------------------------------------- <(1.33333333333,1.33333333333),2.04168905064> <(2.33333333333,1.33333333333),1.47534300379> <(4,5),2.82842712475> <(4,5),2.82842712475> <(4,3),4.80664375676> (5 rows) SELECT c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS distance FROM CIRCLE_TBL c1, POINT_TBL p1 WHERE (p1.f1 <-> c1.f1) > 0 ORDER BY distance, area(c1.f1), p1.f1[0]; circle | point | distance ----------------+-------------------+--------------- <(1,2),3> | (-3,4) | 1.472135955 <(5,1),3> | (0,0) | 2.09901951359 <(5,1),3> | (1e-300,-1e-300) | 2.09901951359 <(5,1),3> | (-3,4) | 5.54400374532 <(3,5),0> | (0,0) | 5.83095189485 <(3,5),0> | (1e-300,-1e-300) | 5.83095189485 <(3,5),0> | (-3,4) | 6.0827625303 <(1,3),5> | (-10,0) | 6.40175425099 <(1,3),5> | (10,10) | 6.40175425099 <(5,1),3> | (10,10) | 7.29563014099 <(1,2),3> | (-10,0) | 8.1803398875 <(3,5),0> | (10,10) | 8.60232526704 <(1,2),3> | (10,10) | 9.04159457879 <(1,3),5> | (-5,-12) | 11.1554944214 <(5,1),3> | (-10,0) | 12.0332963784 <(1,2),3> | (-5,-12) | 12.2315462117 <(5,1),3> | (-5,-12) | 13.4012194669 <(3,5),0> | (-10,0) | 13.9283882772 <(3,5),0> | (-5,-12) | 18.7882942281 <(1,3),5> | (5.1,34.5) | 26.7657047773 <(3,5),0> | (5.1,34.5) | 29.5746513082 <(1,2),3> | (5.1,34.5) | 29.7575945393 <(5,1),3> | (5.1,34.5) | 30.5001492534 <(100,200),10> | (5.1,34.5) | 180.778038568 <(100,200),10> | (10,10) | 200.237960416 <(100,200),10> | (-3,4) | 211.415898255 <(100,200),10> | (0,0) | 213.60679775 <(100,200),10> | (1e-300,-1e-300) | 213.60679775 <(100,200),10> | (-10,0) | 218.25424421 <(100,200),10> | (-5,-12) | 226.577682802 <(3,5),0> | (1e+300,Infinity) | Infinity <(3,5),0> | (Infinity,1e+300) | Infinity <(1,2),3> | (1e+300,Infinity) | Infinity <(5,1),3> | (1e+300,Infinity) | Infinity <(5,1),3> | (Infinity,1e+300) | Infinity <(1,2),3> | (Infinity,1e+300) | Infinity <(1,3),5> | (1e+300,Infinity) | Infinity <(1,3),5> | (Infinity,1e+300) | Infinity <(100,200),10> | (1e+300,Infinity) | Infinity <(100,200),10> | (Infinity,1e+300) | Infinity <(1,2),100> | (1e+300,Infinity) | Infinity <(1,2),100> | (Infinity,1e+300) | Infinity <(100,1),115> | (1e+300,Infinity) | Infinity <(100,1),115> | (Infinity,1e+300) | Infinity <(3,5),0> | (NaN,NaN) | NaN <(1,2),3> | (NaN,NaN) | NaN <(5,1),3> | (NaN,NaN) | NaN <(1,3),5> | (NaN,NaN) | NaN <(100,200),10> | (NaN,NaN) | NaN <(1,2),100> | (NaN,NaN) | NaN <(100,1),115> | (NaN,NaN) | NaN <(3,5),NaN> | (-10,0) | NaN <(3,5),NaN> | (-5,-12) | NaN <(3,5),NaN> | (-3,4) | NaN <(3,5),NaN> | (0,0) | NaN <(3,5),NaN> | (1e-300,-1e-300) | NaN <(3,5),NaN> | (5.1,34.5) | NaN <(3,5),NaN> | (10,10) | NaN <(3,5),NaN> | (1e+300,Infinity) | NaN <(3,5),NaN> | (Infinity,1e+300) | NaN <(3,5),NaN> | (NaN,NaN) | NaN (61 rows) -- To polygon SELECT f1, f1::polygon FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; f1 | f1 ----------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- <(5,1),3> | ((2,1),(2.40192378865,2.5),(3.5,3.59807621135),(5,4),(6.5,3.59807621135),(7.59807621135,2.5),(8,1),(7.59807621135,-0.5),(6.5,-1.59807621135),(5,-2),(3.5,-1.59807621135),(2.40192378865,-0.5)) <(1,2),100> | ((-99,2),(-85.6025403784,52),(-49,88.6025403784),(1,102),(51,88.6025403784),(87.6025403784,52),(101,2),(87.6025403784,-48),(51,-84.6025403784),(1,-98),(-49,-84.6025403784),(-85.6025403784,-48)) <(1,3),5> | ((-4,3),(-3.33012701892,5.5),(-1.5,7.33012701892),(1,8),(3.5,7.33012701892),(5.33012701892,5.5),(6,3),(5.33012701892,0.5),(3.5,-1.33012701892),(1,-2),(-1.5,-1.33012701892),(-3.33012701892,0.5)) <(1,2),3> | ((-2,2),(-1.59807621135,3.5),(-0.5,4.59807621135),(1,5),(2.5,4.59807621135),(3.59807621135,3.5),(4,2),(3.59807621135,0.5),(2.5,-0.598076211353),(1,-1),(-0.5,-0.598076211353),(-1.59807621135,0.5)) <(100,200),10> | ((90,200),(91.3397459622,205),(95,208.660254038),(100,210),(105,208.660254038),(108.660254038,205),(110,200),(108.660254038,195),(105,191.339745962),(100,190),(95,191.339745962),(91.3397459622,195)) <(100,1),115> | ((-15,1),(0.40707856479,58.5),(42.5,100.592921435),(100,116),(157.5,100.592921435),(199.592921435,58.5),(215,1),(199.592921435,-56.5),(157.5,-98.5929214352),(100,-114),(42.5,-98.5929214352),(0.40707856479,-56.5)) (6 rows) -- To polygon with less points SELECT f1, polygon(8, f1) FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; f1 | polygon ----------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------ <(5,1),3> | ((2,1),(2.87867965644,3.12132034356),(5,4),(7.12132034356,3.12132034356),(8,1),(7.12132034356,-1.12132034356),(5,-2),(2.87867965644,-1.12132034356)) <(1,2),100> | ((-99,2),(-69.7106781187,72.7106781187),(1,102),(71.7106781187,72.7106781187),(101,2),(71.7106781187,-68.7106781187),(1,-98),(-69.7106781187,-68.7106781187)) <(1,3),5> | ((-4,3),(-2.53553390593,6.53553390593),(1,8),(4.53553390593,6.53553390593),(6,3),(4.53553390593,-0.535533905933),(1,-2),(-2.53553390593,-0.535533905933)) <(1,2),3> | ((-2,2),(-1.12132034356,4.12132034356),(1,5),(3.12132034356,4.12132034356),(4,2),(3.12132034356,-0.12132034356),(1,-1),(-1.12132034356,-0.12132034356)) <(100,200),10> | ((90,200),(92.9289321881,207.071067812),(100,210),(107.071067812,207.071067812),(110,200),(107.071067812,192.928932188),(100,190),(92.9289321881,192.928932188)) <(100,1),115> | ((-15,1),(18.6827201635,82.3172798365),(100,116),(181.317279836,82.3172798365),(215,1),(181.317279836,-80.3172798365),(100,-114),(18.6827201635,-80.3172798365)) (6 rows) -- Error for insufficient number of points SELECT f1, polygon(1, f1) FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; ERROR: must request at least 2 points -- Zero radius error SELECT f1, polygon(10, f1) FROM CIRCLE_TBL WHERE f1 < '<(0,0),1>'; ERROR: cannot convert circle with radius zero to polygon -- Same as circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 ~= c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(1,2),100> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,2),3> | <(1,2),3> <(100,200),10> | <(100,200),10> <(100,1),115> | <(100,1),115> <(3,5),0> | <(3,5),0> <(3,5),NaN> | <(3,5),NaN> (8 rows) -- Overlap with circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 && c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(1,2),3> <(5,1),3> | <(100,1),115> <(1,2),100> | <(5,1),3> <(1,2),100> | <(1,2),100> <(1,2),100> | <(1,3),5> <(1,2),100> | <(1,2),3> <(1,2),100> | <(100,1),115> <(1,2),100> | <(3,5),0> <(1,3),5> | <(5,1),3> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(1,2),3> <(1,3),5> | <(100,1),115> <(1,3),5> | <(3,5),0> <(1,2),3> | <(5,1),3> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,1),115> <(100,200),10> | <(100,200),10> <(100,1),115> | <(5,1),3> <(100,1),115> | <(1,2),100> <(100,1),115> | <(1,3),5> <(100,1),115> | <(1,2),3> <(100,1),115> | <(100,1),115> <(100,1),115> | <(3,5),0> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (33 rows) -- Overlap or left of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 &< c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(1,2),100> | <(1,2),100> <(1,2),100> | <(100,200),10> <(1,2),100> | <(100,1),115> <(1,3),5> | <(5,1),3> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,2),3> | <(5,1),3> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(100,200),10> | <(100,200),10> <(100,200),10> | <(100,1),115> <(100,1),115> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (28 rows) -- Left of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 << c2.f1; f1 | f1 -----------+---------------- <(5,1),3> | <(100,200),10> <(1,3),5> | <(100,200),10> <(1,2),3> | <(100,200),10> <(3,5),0> | <(100,200),10> (4 rows) -- Right of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 >> c2.f1; f1 | f1 ----------------+----------- <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(3,5),0> (4 rows) -- Overlap or right of circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 &> c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(1,2),3> <(5,1),3> | <(100,1),115> <(1,2),100> | <(1,2),100> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(100,1),115> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,1),115> <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,2),100> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(100,200),10> <(100,200),10> | <(100,1),115> <(100,200),10> | <(3,5),0> <(100,1),115> | <(1,2),100> <(100,1),115> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (28 rows) -- Contained by circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 <@ c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(100,1),115> <(1,2),100> | <(1,2),100> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(100,1),115> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,1),115> <(100,200),10> | <(100,200),10> <(100,1),115> | <(100,1),115> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (17 rows) -- Contain by circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 @> c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(1,2),100> | <(5,1),3> <(1,2),100> | <(1,2),100> <(1,2),100> | <(1,3),5> <(1,2),100> | <(1,2),3> <(1,2),100> | <(3,5),0> <(1,3),5> | <(1,3),5> <(1,3),5> | <(1,2),3> <(1,3),5> | <(3,5),0> <(1,2),3> | <(1,2),3> <(100,200),10> | <(100,200),10> <(100,1),115> | <(5,1),3> <(100,1),115> | <(1,3),5> <(100,1),115> | <(1,2),3> <(100,1),115> | <(100,1),115> <(100,1),115> | <(3,5),0> <(3,5),0> | <(3,5),0> (17 rows) -- Below circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 <<| c2.f1; f1 | f1 ---------------+---------------- <(5,1),3> | <(100,200),10> <(5,1),3> | <(3,5),0> <(1,2),100> | <(100,200),10> <(1,3),5> | <(100,200),10> <(1,2),3> | <(100,200),10> <(100,1),115> | <(100,200),10> <(3,5),0> | <(100,200),10> (7 rows) -- Above circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 |>> c2.f1; f1 | f1 ----------------+--------------- <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,2),100> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(100,1),115> <(100,200),10> | <(3,5),0> <(3,5),0> | <(5,1),3> (7 rows) -- Overlap or below circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 &<| c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(1,2),3> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(5,1),3> | <(3,5),0> <(1,2),100> | <(1,2),100> <(1,2),100> | <(100,200),10> <(1,2),100> | <(100,1),115> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(1,2),3> | <(3,5),0> <(100,200),10> | <(100,200),10> <(100,1),115> | <(100,200),10> <(100,1),115> | <(100,1),115> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (29 rows) -- Overlap or above circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 |&> c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(100,1),115> <(1,2),100> | <(1,2),100> <(1,2),100> | <(100,1),115> <(1,3),5> | <(5,1),3> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(100,1),115> <(1,2),3> | <(5,1),3> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,1),115> <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,2),100> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(100,200),10> <(100,200),10> | <(100,1),115> <(100,200),10> | <(3,5),0> <(100,1),115> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (29 rows) -- Area equal with circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 = c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),3> <(1,2),100> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,2),3> | <(5,1),3> <(1,2),3> | <(1,2),3> <(100,200),10> | <(100,200),10> <(100,1),115> | <(100,1),115> <(3,5),0> | <(3,5),0> (9 rows) -- Area not equal with circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 != c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(5,1),3> | <(3,5),0> <(1,2),100> | <(5,1),3> <(1,2),100> | <(1,3),5> <(1,2),100> | <(1,2),3> <(1,2),100> | <(100,200),10> <(1,2),100> | <(100,1),115> <(1,2),100> | <(3,5),0> <(1,3),5> | <(5,1),3> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,2),3> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,3),5> | <(3,5),0> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(1,2),3> | <(3,5),0> <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,2),100> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(100,1),115> <(100,200),10> | <(3,5),0> <(100,1),115> | <(5,1),3> <(100,1),115> | <(1,2),100> <(100,1),115> | <(1,3),5> <(100,1),115> | <(1,2),3> <(100,1),115> | <(100,200),10> <(100,1),115> | <(3,5),0> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> (40 rows) -- Area less than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 < c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(1,2),100> | <(100,1),115> <(1,3),5> | <(1,2),100> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(100,200),10> | <(1,2),100> <(100,200),10> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> (20 rows) -- Area greater than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 > c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(3,5),0> <(1,2),100> | <(5,1),3> <(1,2),100> | <(1,3),5> <(1,2),100> | <(1,2),3> <(1,2),100> | <(100,200),10> <(1,2),100> | <(3,5),0> <(1,3),5> | <(5,1),3> <(1,3),5> | <(1,2),3> <(1,3),5> | <(3,5),0> <(1,2),3> | <(3,5),0> <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(3,5),0> <(100,1),115> | <(5,1),3> <(100,1),115> | <(1,2),100> <(100,1),115> | <(1,3),5> <(100,1),115> | <(1,2),3> <(100,1),115> | <(100,200),10> <(100,1),115> | <(3,5),0> (20 rows) -- Area less than or equal circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 <= c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(1,2),3> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(1,2),100> | <(1,2),100> <(1,2),100> | <(100,1),115> <(1,3),5> | <(1,2),100> <(1,3),5> | <(1,3),5> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,2),3> | <(5,1),3> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(1,2),3> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(100,200),10> | <(1,2),100> <(100,200),10> | <(100,200),10> <(100,200),10> | <(100,1),115> <(100,1),115> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> <(3,5),0> | <(3,5),0> (29 rows) -- Area greater than or equal circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 >= c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(5,1),3> <(5,1),3> | <(1,2),3> <(5,1),3> | <(3,5),0> <(1,2),100> | <(5,1),3> <(1,2),100> | <(1,2),100> <(1,2),100> | <(1,3),5> <(1,2),100> | <(1,2),3> <(1,2),100> | <(100,200),10> <(1,2),100> | <(3,5),0> <(1,3),5> | <(5,1),3> <(1,3),5> | <(1,3),5> <(1,3),5> | <(1,2),3> <(1,3),5> | <(3,5),0> <(1,2),3> | <(5,1),3> <(1,2),3> | <(1,2),3> <(1,2),3> | <(3,5),0> <(100,200),10> | <(5,1),3> <(100,200),10> | <(1,3),5> <(100,200),10> | <(1,2),3> <(100,200),10> | <(100,200),10> <(100,200),10> | <(3,5),0> <(100,1),115> | <(5,1),3> <(100,1),115> | <(1,2),100> <(100,1),115> | <(1,3),5> <(100,1),115> | <(1,2),3> <(100,1),115> | <(100,200),10> <(100,1),115> | <(100,1),115> <(100,1),115> | <(3,5),0> <(3,5),0> | <(3,5),0> (29 rows) -- Area less than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 < c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(1,2),100> | <(100,1),115> <(1,3),5> | <(1,2),100> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(100,200),10> | <(1,2),100> <(100,200),10> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> (20 rows) -- Area greater than circle SELECT c1.f1, c2.f1 FROM CIRCLE_TBL c1, CIRCLE_TBL c2 WHERE c1.f1 < c2.f1; f1 | f1 ----------------+---------------- <(5,1),3> | <(1,2),100> <(5,1),3> | <(1,3),5> <(5,1),3> | <(100,200),10> <(5,1),3> | <(100,1),115> <(1,2),100> | <(100,1),115> <(1,3),5> | <(1,2),100> <(1,3),5> | <(100,200),10> <(1,3),5> | <(100,1),115> <(1,2),3> | <(1,2),100> <(1,2),3> | <(1,3),5> <(1,2),3> | <(100,200),10> <(1,2),3> | <(100,1),115> <(100,200),10> | <(1,2),100> <(100,200),10> | <(100,1),115> <(3,5),0> | <(5,1),3> <(3,5),0> | <(1,2),100> <(3,5),0> | <(1,3),5> <(3,5),0> | <(1,2),3> <(3,5),0> | <(100,200),10> <(3,5),0> | <(100,1),115> (20 rows) -- Add point SELECT c.f1, p.f1, c.f1 + p.f1 FROM CIRCLE_TBL c, POINT_TBL p; f1 | f1 | ?column? ----------------+-------------------+------------------------- <(5,1),3> | (0,0) | <(5,1),3> <(1,2),100> | (0,0) | <(1,2),100> <(1,3),5> | (0,0) | <(1,3),5> <(1,2),3> | (0,0) | <(1,2),3> <(100,200),10> | (0,0) | <(100,200),10> <(100,1),115> | (0,0) | <(100,1),115> <(3,5),0> | (0,0) | <(3,5),0> <(3,5),NaN> | (0,0) | <(3,5),NaN> <(5,1),3> | (-10,0) | <(-5,1),3> <(1,2),100> | (-10,0) | <(-9,2),100> <(1,3),5> | (-10,0) | <(-9,3),5> <(1,2),3> | (-10,0) | <(-9,2),3> <(100,200),10> | (-10,0) | <(90,200),10> <(100,1),115> | (-10,0) | <(90,1),115> <(3,5),0> | (-10,0) | <(-7,5),0> <(3,5),NaN> | (-10,0) | <(-7,5),NaN> <(5,1),3> | (-3,4) | <(2,5),3> <(1,2),100> | (-3,4) | <(-2,6),100> <(1,3),5> | (-3,4) | <(-2,7),5> <(1,2),3> | (-3,4) | <(-2,6),3> <(100,200),10> | (-3,4) | <(97,204),10> <(100,1),115> | (-3,4) | <(97,5),115> <(3,5),0> | (-3,4) | <(0,9),0> <(3,5),NaN> | (-3,4) | <(0,9),NaN> <(5,1),3> | (5.1,34.5) | <(10.1,35.5),3> <(1,2),100> | (5.1,34.5) | <(6.1,36.5),100> <(1,3),5> | (5.1,34.5) | <(6.1,37.5),5> <(1,2),3> | (5.1,34.5) | <(6.1,36.5),3> <(100,200),10> | (5.1,34.5) | <(105.1,234.5),10> <(100,1),115> | (5.1,34.5) | <(105.1,35.5),115> <(3,5),0> | (5.1,34.5) | <(8.1,39.5),0> <(3,5),NaN> | (5.1,34.5) | <(8.1,39.5),NaN> <(5,1),3> | (-5,-12) | <(0,-11),3> <(1,2),100> | (-5,-12) | <(-4,-10),100> <(1,3),5> | (-5,-12) | <(-4,-9),5> <(1,2),3> | (-5,-12) | <(-4,-10),3> <(100,200),10> | (-5,-12) | <(95,188),10> <(100,1),115> | (-5,-12) | <(95,-11),115> <(3,5),0> | (-5,-12) | <(-2,-7),0> <(3,5),NaN> | (-5,-12) | <(-2,-7),NaN> <(5,1),3> | (1e-300,-1e-300) | <(5,1),3> <(1,2),100> | (1e-300,-1e-300) | <(1,2),100> <(1,3),5> | (1e-300,-1e-300) | <(1,3),5> <(1,2),3> | (1e-300,-1e-300) | <(1,2),3> <(100,200),10> | (1e-300,-1e-300) | <(100,200),10> <(100,1),115> | (1e-300,-1e-300) | <(100,1),115> <(3,5),0> | (1e-300,-1e-300) | <(3,5),0> <(3,5),NaN> | (1e-300,-1e-300) | <(3,5),NaN> <(5,1),3> | (1e+300,Infinity) | <(1e+300,Infinity),3> <(1,2),100> | (1e+300,Infinity) | <(1e+300,Infinity),100> <(1,3),5> | (1e+300,Infinity) | <(1e+300,Infinity),5> <(1,2),3> | (1e+300,Infinity) | <(1e+300,Infinity),3> <(100,200),10> | (1e+300,Infinity) | <(1e+300,Infinity),10> <(100,1),115> | (1e+300,Infinity) | <(1e+300,Infinity),115> <(3,5),0> | (1e+300,Infinity) | <(1e+300,Infinity),0> <(3,5),NaN> | (1e+300,Infinity) | <(1e+300,Infinity),NaN> <(5,1),3> | (Infinity,1e+300) | <(Infinity,1e+300),3> <(1,2),100> | (Infinity,1e+300) | <(Infinity,1e+300),100> <(1,3),5> | (Infinity,1e+300) | <(Infinity,1e+300),5> <(1,2),3> | (Infinity,1e+300) | <(Infinity,1e+300),3> <(100,200),10> | (Infinity,1e+300) | <(Infinity,1e+300),10> <(100,1),115> | (Infinity,1e+300) | <(Infinity,1e+300),115> <(3,5),0> | (Infinity,1e+300) | <(Infinity,1e+300),0> <(3,5),NaN> | (Infinity,1e+300) | <(Infinity,1e+300),NaN> <(5,1),3> | (NaN,NaN) | <(NaN,NaN),3> <(1,2),100> | (NaN,NaN) | <(NaN,NaN),100> <(1,3),5> | (NaN,NaN) | <(NaN,NaN),5> <(1,2),3> | (NaN,NaN) | <(NaN,NaN),3> <(100,200),10> | (NaN,NaN) | <(NaN,NaN),10> <(100,1),115> | (NaN,NaN) | <(NaN,NaN),115> <(3,5),0> | (NaN,NaN) | <(NaN,NaN),0> <(3,5),NaN> | (NaN,NaN) | <(NaN,NaN),NaN> <(5,1),3> | (10,10) | <(15,11),3> <(1,2),100> | (10,10) | <(11,12),100> <(1,3),5> | (10,10) | <(11,13),5> <(1,2),3> | (10,10) | <(11,12),3> <(100,200),10> | (10,10) | <(110,210),10> <(100,1),115> | (10,10) | <(110,11),115> <(3,5),0> | (10,10) | <(13,15),0> <(3,5),NaN> | (10,10) | <(13,15),NaN> (80 rows) -- Subtract point SELECT c.f1, p.f1, c.f1 - p.f1 FROM CIRCLE_TBL c, POINT_TBL p; f1 | f1 | ?column? ----------------+-------------------+--------------------------- <(5,1),3> | (0,0) | <(5,1),3> <(1,2),100> | (0,0) | <(1,2),100> <(1,3),5> | (0,0) | <(1,3),5> <(1,2),3> | (0,0) | <(1,2),3> <(100,200),10> | (0,0) | <(100,200),10> <(100,1),115> | (0,0) | <(100,1),115> <(3,5),0> | (0,0) | <(3,5),0> <(3,5),NaN> | (0,0) | <(3,5),NaN> <(5,1),3> | (-10,0) | <(15,1),3> <(1,2),100> | (-10,0) | <(11,2),100> <(1,3),5> | (-10,0) | <(11,3),5> <(1,2),3> | (-10,0) | <(11,2),3> <(100,200),10> | (-10,0) | <(110,200),10> <(100,1),115> | (-10,0) | <(110,1),115> <(3,5),0> | (-10,0) | <(13,5),0> <(3,5),NaN> | (-10,0) | <(13,5),NaN> <(5,1),3> | (-3,4) | <(8,-3),3> <(1,2),100> | (-3,4) | <(4,-2),100> <(1,3),5> | (-3,4) | <(4,-1),5> <(1,2),3> | (-3,4) | <(4,-2),3> <(100,200),10> | (-3,4) | <(103,196),10> <(100,1),115> | (-3,4) | <(103,-3),115> <(3,5),0> | (-3,4) | <(6,1),0> <(3,5),NaN> | (-3,4) | <(6,1),NaN> <(5,1),3> | (5.1,34.5) | <(-0.1,-33.5),3> <(1,2),100> | (5.1,34.5) | <(-4.1,-32.5),100> <(1,3),5> | (5.1,34.5) | <(-4.1,-31.5),5> <(1,2),3> | (5.1,34.5) | <(-4.1,-32.5),3> <(100,200),10> | (5.1,34.5) | <(94.9,165.5),10> <(100,1),115> | (5.1,34.5) | <(94.9,-33.5),115> <(3,5),0> | (5.1,34.5) | <(-2.1,-29.5),0> <(3,5),NaN> | (5.1,34.5) | <(-2.1,-29.5),NaN> <(5,1),3> | (-5,-12) | <(10,13),3> <(1,2),100> | (-5,-12) | <(6,14),100> <(1,3),5> | (-5,-12) | <(6,15),5> <(1,2),3> | (-5,-12) | <(6,14),3> <(100,200),10> | (-5,-12) | <(105,212),10> <(100,1),115> | (-5,-12) | <(105,13),115> <(3,5),0> | (-5,-12) | <(8,17),0> <(3,5),NaN> | (-5,-12) | <(8,17),NaN> <(5,1),3> | (1e-300,-1e-300) | <(5,1),3> <(1,2),100> | (1e-300,-1e-300) | <(1,2),100> <(1,3),5> | (1e-300,-1e-300) | <(1,3),5> <(1,2),3> | (1e-300,-1e-300) | <(1,2),3> <(100,200),10> | (1e-300,-1e-300) | <(100,200),10> <(100,1),115> | (1e-300,-1e-300) | <(100,1),115> <(3,5),0> | (1e-300,-1e-300) | <(3,5),0> <(3,5),NaN> | (1e-300,-1e-300) | <(3,5),NaN> <(5,1),3> | (1e+300,Infinity) | <(-1e+300,-Infinity),3> <(1,2),100> | (1e+300,Infinity) | <(-1e+300,-Infinity),100> <(1,3),5> | (1e+300,Infinity) | <(-1e+300,-Infinity),5> <(1,2),3> | (1e+300,Infinity) | <(-1e+300,-Infinity),3> <(100,200),10> | (1e+300,Infinity) | <(-1e+300,-Infinity),10> <(100,1),115> | (1e+300,Infinity) | <(-1e+300,-Infinity),115> <(3,5),0> | (1e+300,Infinity) | <(-1e+300,-Infinity),0> <(3,5),NaN> | (1e+300,Infinity) | <(-1e+300,-Infinity),NaN> <(5,1),3> | (Infinity,1e+300) | <(-Infinity,-1e+300),3> <(1,2),100> | (Infinity,1e+300) | <(-Infinity,-1e+300),100> <(1,3),5> | (Infinity,1e+300) | <(-Infinity,-1e+300),5> <(1,2),3> | (Infinity,1e+300) | <(-Infinity,-1e+300),3> <(100,200),10> | (Infinity,1e+300) | <(-Infinity,-1e+300),10> <(100,1),115> | (Infinity,1e+300) | <(-Infinity,-1e+300),115> <(3,5),0> | (Infinity,1e+300) | <(-Infinity,-1e+300),0> <(3,5),NaN> | (Infinity,1e+300) | <(-Infinity,-1e+300),NaN> <(5,1),3> | (NaN,NaN) | <(NaN,NaN),3> <(1,2),100> | (NaN,NaN) | <(NaN,NaN),100> <(1,3),5> | (NaN,NaN) | <(NaN,NaN),5> <(1,2),3> | (NaN,NaN) | <(NaN,NaN),3> <(100,200),10> | (NaN,NaN) | <(NaN,NaN),10> <(100,1),115> | (NaN,NaN) | <(NaN,NaN),115> <(3,5),0> | (NaN,NaN) | <(NaN,NaN),0> <(3,5),NaN> | (NaN,NaN) | <(NaN,NaN),NaN> <(5,1),3> | (10,10) | <(-5,-9),3> <(1,2),100> | (10,10) | <(-9,-8),100> <(1,3),5> | (10,10) | <(-9,-7),5> <(1,2),3> | (10,10) | <(-9,-8),3> <(100,200),10> | (10,10) | <(90,190),10> <(100,1),115> | (10,10) | <(90,-9),115> <(3,5),0> | (10,10) | <(-7,-5),0> <(3,5),NaN> | (10,10) | <(-7,-5),NaN> (80 rows) -- Multiply with point SELECT c.f1, p.f1, c.f1 * p.f1 FROM CIRCLE_TBL c, POINT_TBL p; f1 | f1 | ?column? ----------------+-------------------+-------------------------------------------- <(5,1),3> | (0,0) | <(0,0),0> <(1,2),100> | (0,0) | <(0,0),0> <(1,3),5> | (0,0) | <(0,0),0> <(1,2),3> | (0,0) | <(0,0),0> <(100,200),10> | (0,0) | <(0,0),0> <(100,1),115> | (0,0) | <(0,0),0> <(3,5),0> | (0,0) | <(0,0),0> <(3,5),NaN> | (0,0) | <(0,0),NaN> <(5,1),3> | (-10,0) | <(-50,-10),30> <(1,2),100> | (-10,0) | <(-10,-20),1000> <(1,3),5> | (-10,0) | <(-10,-30),50> <(1,2),3> | (-10,0) | <(-10,-20),30> <(100,200),10> | (-10,0) | <(-1000,-2000),100> <(100,1),115> | (-10,0) | <(-1000,-10),1150> <(3,5),0> | (-10,0) | <(-30,-50),0> <(3,5),NaN> | (-10,0) | <(-30,-50),NaN> <(5,1),3> | (-3,4) | <(-19,17),15> <(1,2),100> | (-3,4) | <(-11,-2),500> <(1,3),5> | (-3,4) | <(-15,-5),25> <(1,2),3> | (-3,4) | <(-11,-2),15> <(100,200),10> | (-3,4) | <(-1100,-200),50> <(100,1),115> | (-3,4) | <(-304,397),575> <(3,5),0> | (-3,4) | <(-29,-3),0> <(3,5),NaN> | (-3,4) | <(-29,-3),NaN> <(5,1),3> | (5.1,34.5) | <(-9,177.6),104.624758064> <(1,2),100> | (5.1,34.5) | <(-63.9,44.7),3487.49193547> <(1,3),5> | (5.1,34.5) | <(-98.4,49.8),174.374596774> <(1,2),3> | (5.1,34.5) | <(-63.9,44.7),104.624758064> <(100,200),10> | (5.1,34.5) | <(-6390,4470),348.749193547> <(100,1),115> | (5.1,34.5) | <(475.5,3455.1),4010.6157258> <(3,5),0> | (5.1,34.5) | <(-157.2,129),0> <(3,5),NaN> | (5.1,34.5) | <(-157.2,129),NaN> <(5,1),3> | (-5,-12) | <(-13,-65),39> <(1,2),100> | (-5,-12) | <(19,-22),1300> <(1,3),5> | (-5,-12) | <(31,-27),65> <(1,2),3> | (-5,-12) | <(19,-22),39> <(100,200),10> | (-5,-12) | <(1900,-2200),130> <(100,1),115> | (-5,-12) | <(-488,-1205),1495> <(3,5),0> | (-5,-12) | <(45,-61),0> <(3,5),NaN> | (-5,-12) | <(45,-61),NaN> <(5,1),3> | (1e-300,-1e-300) | <(6e-300,-4e-300),4.24264068712e-300> <(1,2),100> | (1e-300,-1e-300) | <(3e-300,1e-300),1.41421356237e-298> <(1,3),5> | (1e-300,-1e-300) | <(4e-300,2e-300),7.07106781187e-300> <(1,2),3> | (1e-300,-1e-300) | <(3e-300,1e-300),4.24264068712e-300> <(100,200),10> | (1e-300,-1e-300) | <(3e-298,1e-298),1.41421356237e-299> <(100,1),115> | (1e-300,-1e-300) | <(1.01e-298,-9.9e-299),1.62634559673e-298> <(3,5),0> | (1e-300,-1e-300) | <(8e-300,2e-300),0> <(3,5),NaN> | (1e-300,-1e-300) | <(8e-300,2e-300),NaN> <(5,1),3> | (1e+300,Infinity) | <(-Infinity,Infinity),Infinity> <(1,2),100> | (1e+300,Infinity) | <(-Infinity,Infinity),Infinity> <(1,3),5> | (1e+300,Infinity) | <(-Infinity,Infinity),Infinity> <(1,2),3> | (1e+300,Infinity) | <(-Infinity,Infinity),Infinity> <(100,200),10> | (1e+300,Infinity) | <(-Infinity,Infinity),Infinity> <(100,1),115> | (1e+300,Infinity) | <(-Infinity,Infinity),Infinity> <(3,5),0> | (1e+300,Infinity) | <(-Infinity,Infinity),NaN> <(3,5),NaN> | (1e+300,Infinity) | <(-Infinity,Infinity),NaN> <(5,1),3> | (Infinity,1e+300) | <(Infinity,Infinity),Infinity> <(1,2),100> | (Infinity,1e+300) | <(Infinity,Infinity),Infinity> <(1,3),5> | (Infinity,1e+300) | <(Infinity,Infinity),Infinity> <(1,2),3> | (Infinity,1e+300) | <(Infinity,Infinity),Infinity> <(100,200),10> | (Infinity,1e+300) | <(Infinity,Infinity),Infinity> <(100,1),115> | (Infinity,1e+300) | <(Infinity,Infinity),Infinity> <(3,5),0> | (Infinity,1e+300) | <(Infinity,Infinity),NaN> <(3,5),NaN> | (Infinity,1e+300) | <(Infinity,Infinity),NaN> <(5,1),3> | (NaN,NaN) | <(NaN,NaN),NaN> <(1,2),100> | (NaN,NaN) | <(NaN,NaN),NaN> <(1,3),5> | (NaN,NaN) | <(NaN,NaN),NaN> <(1,2),3> | (NaN,NaN) | <(NaN,NaN),NaN> <(100,200),10> | (NaN,NaN) | <(NaN,NaN),NaN> <(100,1),115> | (NaN,NaN) | <(NaN,NaN),NaN> <(3,5),0> | (NaN,NaN) | <(NaN,NaN),NaN> <(3,5),NaN> | (NaN,NaN) | <(NaN,NaN),NaN> <(5,1),3> | (10,10) | <(40,60),42.4264068712> <(1,2),100> | (10,10) | <(-10,30),1414.21356237> <(1,3),5> | (10,10) | <(-20,40),70.7106781187> <(1,2),3> | (10,10) | <(-10,30),42.4264068712> <(100,200),10> | (10,10) | <(-1000,3000),141.421356237> <(100,1),115> | (10,10) | <(990,1010),1626.34559673> <(3,5),0> | (10,10) | <(-20,80),0> <(3,5),NaN> | (10,10) | <(-20,80),NaN> (80 rows) -- Divide by point SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000; f1 | f1 | ?column? ----------------+------------+------------------------------------------------------ <(5,1),3> | (5.1,34.5) | <(0.0493315573973,-0.137635045138),0.0860217042937> <(5,1),3> | (10,10) | <(0.3,-0.2),0.212132034356> <(1,2),100> | (5.1,34.5) | <(0.0609244733856,-0.0199792807459),2.86739014312> <(1,2),100> | (10,10) | <(0.15,0.05),7.07106781187> <(1,3),5> | (5.1,34.5) | <(0.0892901188891,-0.0157860983671),0.143369507156> <(1,3),5> | (10,10) | <(0.2,0.1),0.353553390593> <(1,2),3> | (5.1,34.5) | <(0.0609244733856,-0.0199792807459),0.0860217042937> <(1,2),3> | (10,10) | <(0.15,0.05),0.212132034356> <(100,200),10> | (5.1,34.5) | <(6.09244733856,-1.99792807459),0.286739014312> <(100,200),10> | (10,10) | <(15,5),0.707106781187> <(100,1),115> | (5.1,34.5) | <(0.44768388338,-2.83237136796),3.29749866459> <(100,1),115> | (10,10) | <(5.05,-4.95),8.13172798365> <(3,5),0> | (5.1,34.5) | <(0.154407774653,-0.0641310246164),0> <(3,5),0> | (10,10) | <(0.4,0.1),0> <(3,5),NaN> | (5.1,34.5) | <(0.154407774653,-0.0641310246164),NaN> <(3,5),NaN> | (10,10) | <(0.4,0.1),NaN> (16 rows) -- Overflow error SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1[0] > 1000; ERROR: value out of range: overflow -- Division by 0 error SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1 ~= '(0,0)'::point; ERROR: division by zero -- Distance to polygon SELECT c.f1, p.f1, c.f1 <-> p.f1 FROM CIRCLE_TBL c, POLYGON_TBL p; f1 | f1 | ?column? ----------------+----------------------------+---------------- <(5,1),3> | ((2,0),(2,4),(0,0)) | 0 <(5,1),3> | ((3,1),(3,3),(1,0)) | 0 <(5,1),3> | ((1,2),(3,4),(5,6),(7,8)) | 0.535533905933 <(5,1),3> | ((7,8),(5,6),(3,4),(1,2)) | 0.535533905933 <(5,1),3> | ((1,2),(7,8),(5,6),(3,-4)) | 0 <(5,1),3> | ((0,0)) | 2.09901951359 <(5,1),3> | ((0,1),(0,1)) | 2 <(1,2),100> | ((2,0),(2,4),(0,0)) | 0 <(1,2),100> | ((3,1),(3,3),(1,0)) | 0 <(1,2),100> | ((1,2),(3,4),(5,6),(7,8)) | 0 <(1,2),100> | ((7,8),(5,6),(3,4),(1,2)) | 0 <(1,2),100> | ((1,2),(7,8),(5,6),(3,-4)) | 0 <(1,2),100> | ((0,0)) | 0 <(1,2),100> | ((0,1),(0,1)) | 0 <(1,3),5> | ((2,0),(2,4),(0,0)) | 0 <(1,3),5> | ((3,1),(3,3),(1,0)) | 0 <(1,3),5> | ((1,2),(3,4),(5,6),(7,8)) | 0 <(1,3),5> | ((7,8),(5,6),(3,4),(1,2)) | 0 <(1,3),5> | ((1,2),(7,8),(5,6),(3,-4)) | 0 <(1,3),5> | ((0,0)) | 0 <(1,3),5> | ((0,1),(0,1)) | 0 <(1,2),3> | ((2,0),(2,4),(0,0)) | 0 <(1,2),3> | ((3,1),(3,3),(1,0)) | 0 <(1,2),3> | ((1,2),(3,4),(5,6),(7,8)) | 0 <(1,2),3> | ((7,8),(5,6),(3,4),(1,2)) | 0 <(1,2),3> | ((1,2),(7,8),(5,6),(3,-4)) | 0 <(1,2),3> | ((0,0)) | 0 <(1,2),3> | ((0,1),(0,1)) | 0 <(100,200),10> | ((2,0),(2,4),(0,0)) | 209.134661795 <(100,200),10> | ((3,1),(3,3),(1,0)) | 209.585974051 <(100,200),10> | ((1,2),(3,4),(5,6),(7,8)) | 203.337760371 <(100,200),10> | ((7,8),(5,6),(3,4),(1,2)) | 203.337760371 <(100,200),10> | ((1,2),(7,8),(5,6),(3,-4)) | 203.337760371 <(100,200),10> | ((0,0)) | 213.60679775 <(100,200),10> | ((0,1),(0,1)) | 212.712819568 <(100,1),115> | ((2,0),(2,4),(0,0)) | 0 <(100,1),115> | ((3,1),(3,3),(1,0)) | 0 <(100,1),115> | ((1,2),(3,4),(5,6),(7,8)) | 0 <(100,1),115> | ((7,8),(5,6),(3,4),(1,2)) | 0 <(100,1),115> | ((1,2),(7,8),(5,6),(3,-4)) | 0 <(100,1),115> | ((0,0)) | 0 <(100,1),115> | ((0,1),(0,1)) | 0 <(3,5),0> | ((2,0),(2,4),(0,0)) | 1.41421356237 <(3,5),0> | ((3,1),(3,3),(1,0)) | 2 <(3,5),0> | ((1,2),(3,4),(5,6),(7,8)) | 0.707106781187 <(3,5),0> | ((7,8),(5,6),(3,4),(1,2)) | 0.707106781187 <(3,5),0> | ((1,2),(7,8),(5,6),(3,-4)) | 0.707106781187 <(3,5),0> | ((0,0)) | 5.83095189485 <(3,5),0> | ((0,1),(0,1)) | 5 <(3,5),NaN> | ((2,0),(2,4),(0,0)) | NaN <(3,5),NaN> | ((3,1),(3,3),(1,0)) | NaN <(3,5),NaN> | ((1,2),(3,4),(5,6),(7,8)) | NaN <(3,5),NaN> | ((7,8),(5,6),(3,4),(1,2)) | NaN <(3,5),NaN> | ((1,2),(7,8),(5,6),(3,-4)) | NaN <(3,5),NaN> | ((0,0)) | NaN <(3,5),NaN> | ((0,1),(0,1)) | NaN (56 rows) -- Check index behavior for circles CREATE INDEX gcircleind ON circle_tbl USING gist (f1); SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); f1 --------------- <(1,2),3> <(1,3),5> <(1,2),100> <(100,1),115> (4 rows) EXPLAIN (COSTS OFF) SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); QUERY PLAN ---------------------------------------------- Sort Sort Key: (area(f1)) -> Seq Scan on circle_tbl Filter: (f1 && '<(1,-2),1>'::circle) (4 rows) SELECT * FROM circle_tbl WHERE f1 && circle(point(1,-2), 1) ORDER BY area(f1); f1 --------------- <(1,2),3> <(1,3),5> <(1,2),100> <(100,1),115> (4 rows) -- Check index behavior for polygons CREATE INDEX gpolygonind ON polygon_tbl USING gist (f1); SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; f1 --------------------- ((2,0),(2,4),(0,0)) (1 row) EXPLAIN (COSTS OFF) SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; QUERY PLAN -------------------------------------------------------- Sort Sort Key: ((poly_center(f1))[0]) -> Seq Scan on polygon_tbl Filter: (f1 @> '((1,1),(2,2),(2,1))'::polygon) (4 rows) SELECT * FROM polygon_tbl WHERE f1 @> '((1,1),(2,2),(2,1))'::polygon ORDER BY (poly_center(f1))[0]; f1 --------------------- ((2,0),(2,4),(0,0)) (1 row) -- test non-error-throwing API for some core types SELECT pg_input_is_valid('(1', 'circle'); pg_input_is_valid ------------------- f (1 row) SELECT * FROM pg_input_error_info('1,', 'circle'); message | detail | hint | sql_error_code --------------------------------------------+--------+------+---------------- invalid input syntax for type circle: "1," | | | 22P02 (1 row) SELECT pg_input_is_valid('(1,2),-1', 'circle'); pg_input_is_valid ------------------- f (1 row) SELECT * FROM pg_input_error_info('(1,2),-1', 'circle'); message | detail | hint | sql_error_code --------------------------------------------------+--------+------+---------------- invalid input syntax for type circle: "(1,2),-1" | | | 22P02 (1 row)