Extend the geometric regression test cases a little.

Add another edge-case value to "point_tbl", and add a test for
the line(point, point) function.

Some of the behaviors exposed here are wrong, but the idea of
committing this separately is to memorialize what we were getting,
and to allow easier inspection of the behavior changes caused by
upcoming patches.

Kyotaro Horiguchi (line() test added by me)

Discussion: https://postgr.es/m/CAGf+fX70rWFOk5cd00uMfa__0yP+vtQg5ck7c2Onb-Yczp0URA@mail.gmail.com
This commit is contained in:
Tom Lane 2020-11-21 16:34:22 -05:00
parent 878f3a19c6
commit a45272b25d
5 changed files with 453 additions and 83 deletions

View File

@ -157,7 +157,7 @@ SELECT count(*) FROM point_tbl p WHERE p.f1 << '(0.0, 0.0)';
SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)';
count count
------- -------
3 4
(1 row) (1 row)
SELECT count(*) FROM point_tbl p WHERE p.f1 <^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 <^ '(0.0, 0.0)';
@ -169,7 +169,7 @@ SELECT count(*) FROM point_tbl p WHERE p.f1 <^ '(0.0, 0.0)';
SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)';
count count
------- -------
4 5
(1 row) (1 row)
SELECT count(*) FROM point_tbl p WHERE p.f1 ~= '(-5, -12)'; SELECT count(*) FROM point_tbl p WHERE p.f1 ~= '(-5, -12)';
@ -188,10 +188,11 @@ SELECT * FROM point_tbl ORDER BY f1 <-> '0,1';
(10,10) (10,10)
(-5,-12) (-5,-12)
(5.1,34.5) (5.1,34.5)
(Infinity,1e+300)
(1e+300,Infinity) (1e+300,Infinity)
(NaN,NaN) (NaN,NaN)
(10 rows) (11 rows)
SELECT * FROM point_tbl WHERE f1 IS NULL; SELECT * FROM point_tbl WHERE f1 IS NULL;
f1 f1
@ -202,16 +203,17 @@ SELECT * FROM point_tbl WHERE f1 IS NULL;
SELECT * FROM point_tbl WHERE f1 IS NOT NULL ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 IS NOT NULL ORDER BY f1 <-> '0,1';
f1 f1
------------------- -------------------
(1e-300,-1e-300)
(0,0) (0,0)
(1e-300,-1e-300)
(-3,4) (-3,4)
(-10,0) (-10,0)
(10,10) (10,10)
(-5,-12) (-5,-12)
(5.1,34.5) (5.1,34.5)
(1e+300,Infinity) (1e+300,Infinity)
(Infinity,1e+300)
(NaN,NaN) (NaN,NaN)
(9 rows) (10 rows)
SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1';
f1 f1
@ -464,7 +466,7 @@ SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)';
SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >> '(0.0, 0.0)';
count count
------- -------
3 4
(1 row) (1 row)
EXPLAIN (COSTS OFF) EXPLAIN (COSTS OFF)
@ -494,7 +496,7 @@ SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)';
SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)'; SELECT count(*) FROM point_tbl p WHERE p.f1 >^ '(0.0, 0.0)';
count count
------- -------
4 5
(1 row) (1 row)
EXPLAIN (COSTS OFF) EXPLAIN (COSTS OFF)
@ -530,10 +532,11 @@ SELECT * FROM point_tbl ORDER BY f1 <-> '0,1';
(10,10) (10,10)
(-5,-12) (-5,-12)
(5.1,34.5) (5.1,34.5)
(Infinity,1e+300)
(1e+300,Infinity) (1e+300,Infinity)
(NaN,NaN) (NaN,NaN)
(10 rows) (11 rows)
EXPLAIN (COSTS OFF) EXPLAIN (COSTS OFF)
SELECT * FROM point_tbl WHERE f1 IS NULL; SELECT * FROM point_tbl WHERE f1 IS NULL;
@ -568,9 +571,10 @@ SELECT * FROM point_tbl WHERE f1 IS NOT NULL ORDER BY f1 <-> '0,1';
(10,10) (10,10)
(-5,-12) (-5,-12)
(5.1,34.5) (5.1,34.5)
(Infinity,1e+300)
(1e+300,Infinity) (1e+300,Infinity)
(NaN,NaN) (NaN,NaN)
(9 rows) (10 rows)
EXPLAIN (COSTS OFF) EXPLAIN (COSTS OFF)
SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1'; SELECT * FROM point_tbl WHERE f1 <@ '(-10,-10),(10,10)':: box ORDER BY f1 <-> '0,1';

View File

@ -120,6 +120,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(0,0) | (-5,-12) | 2.4 (0,0) | (-5,-12) | 2.4
(0,0) | (1e-300,-1e-300) | 1.79769313486e+308 (0,0) | (1e-300,-1e-300) | 1.79769313486e+308
(0,0) | (1e+300,Infinity) | Infinity (0,0) | (1e+300,Infinity) | Infinity
(0,0) | (Infinity,1e+300) | 0
(0,0) | (NaN,NaN) | NaN (0,0) | (NaN,NaN) | NaN
(0,0) | (10,10) | 1 (0,0) | (10,10) | 1
(-10,0) | (0,0) | 0 (-10,0) | (0,0) | 0
@ -129,6 +130,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(-10,0) | (-5,-12) | -2.4 (-10,0) | (-5,-12) | -2.4
(-10,0) | (1e-300,-1e-300) | 0 (-10,0) | (1e-300,-1e-300) | 0
(-10,0) | (1e+300,Infinity) | Infinity (-10,0) | (1e+300,Infinity) | Infinity
(-10,0) | (Infinity,1e+300) | 0
(-10,0) | (NaN,NaN) | NaN (-10,0) | (NaN,NaN) | NaN
(-10,0) | (10,10) | 0.5 (-10,0) | (10,10) | 0.5
(-3,4) | (0,0) | -1.33333333333 (-3,4) | (0,0) | -1.33333333333
@ -138,6 +140,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(-3,4) | (-5,-12) | 8 (-3,4) | (-5,-12) | 8
(-3,4) | (1e-300,-1e-300) | -1.33333333333 (-3,4) | (1e-300,-1e-300) | -1.33333333333
(-3,4) | (1e+300,Infinity) | Infinity (-3,4) | (1e+300,Infinity) | Infinity
(-3,4) | (Infinity,1e+300) | 0
(-3,4) | (NaN,NaN) | NaN (-3,4) | (NaN,NaN) | NaN
(-3,4) | (10,10) | 0.461538461538 (-3,4) | (10,10) | 0.461538461538
(5.1,34.5) | (0,0) | 6.76470588235 (5.1,34.5) | (0,0) | 6.76470588235
@ -147,6 +150,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(5.1,34.5) | (-5,-12) | 4.60396039604 (5.1,34.5) | (-5,-12) | 4.60396039604
(5.1,34.5) | (1e-300,-1e-300) | 6.76470588235 (5.1,34.5) | (1e-300,-1e-300) | 6.76470588235
(5.1,34.5) | (1e+300,Infinity) | Infinity (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) | (NaN,NaN) | NaN
(5.1,34.5) | (10,10) | -5 (5.1,34.5) | (10,10) | -5
(-5,-12) | (0,0) | 2.4 (-5,-12) | (0,0) | 2.4
@ -156,6 +160,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(-5,-12) | (-5,-12) | 1.79769313486e+308 (-5,-12) | (-5,-12) | 1.79769313486e+308
(-5,-12) | (1e-300,-1e-300) | 2.4 (-5,-12) | (1e-300,-1e-300) | 2.4
(-5,-12) | (1e+300,Infinity) | Infinity (-5,-12) | (1e+300,Infinity) | Infinity
(-5,-12) | (Infinity,1e+300) | 0
(-5,-12) | (NaN,NaN) | NaN (-5,-12) | (NaN,NaN) | NaN
(-5,-12) | (10,10) | 1.46666666667 (-5,-12) | (10,10) | 1.46666666667
(1e-300,-1e-300) | (0,0) | 1.79769313486e+308 (1e-300,-1e-300) | (0,0) | 1.79769313486e+308
@ -165,6 +170,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(1e-300,-1e-300) | (-5,-12) | 2.4 (1e-300,-1e-300) | (-5,-12) | 2.4
(1e-300,-1e-300) | (1e-300,-1e-300) | 1.79769313486e+308 (1e-300,-1e-300) | (1e-300,-1e-300) | 1.79769313486e+308
(1e-300,-1e-300) | (1e+300,Infinity) | 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) | (NaN,NaN) | NaN
(1e-300,-1e-300) | (10,10) | 1 (1e-300,-1e-300) | (10,10) | 1
(1e+300,Infinity) | (0,0) | Infinity (1e+300,Infinity) | (0,0) | Infinity
@ -174,8 +180,19 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(1e+300,Infinity) | (-5,-12) | Infinity (1e+300,Infinity) | (-5,-12) | Infinity
(1e+300,Infinity) | (1e-300,-1e-300) | Infinity (1e+300,Infinity) | (1e-300,-1e-300) | Infinity
(1e+300,Infinity) | (1e+300,Infinity) | 1.79769313486e+308 (1e+300,Infinity) | (1e+300,Infinity) | 1.79769313486e+308
(1e+300,Infinity) | (Infinity,1e+300) | NaN
(1e+300,Infinity) | (NaN,NaN) | NaN (1e+300,Infinity) | (NaN,NaN) | NaN
(1e+300,Infinity) | (10,10) | Infinity (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) | 0
(Infinity,1e+300) | (NaN,NaN) | NaN
(Infinity,1e+300) | (10,10) | 0
(NaN,NaN) | (0,0) | NaN (NaN,NaN) | (0,0) | NaN
(NaN,NaN) | (-10,0) | NaN (NaN,NaN) | (-10,0) | NaN
(NaN,NaN) | (-3,4) | NaN (NaN,NaN) | (-3,4) | NaN
@ -183,6 +200,7 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(NaN,NaN) | (-5,-12) | NaN (NaN,NaN) | (-5,-12) | NaN
(NaN,NaN) | (1e-300,-1e-300) | NaN (NaN,NaN) | (1e-300,-1e-300) | NaN
(NaN,NaN) | (1e+300,Infinity) | NaN (NaN,NaN) | (1e+300,Infinity) | NaN
(NaN,NaN) | (Infinity,1e+300) | NaN
(NaN,NaN) | (NaN,NaN) | NaN (NaN,NaN) | (NaN,NaN) | NaN
(NaN,NaN) | (10,10) | NaN (NaN,NaN) | (10,10) | NaN
(10,10) | (0,0) | 1 (10,10) | (0,0) | 1
@ -192,14 +210,15 @@ SELECT p1.f1, p2.f1, slope(p1.f1, p2.f1) FROM POINT_TBL p1, POINT_TBL p2;
(10,10) | (-5,-12) | 1.46666666667 (10,10) | (-5,-12) | 1.46666666667
(10,10) | (1e-300,-1e-300) | 1 (10,10) | (1e-300,-1e-300) | 1
(10,10) | (1e+300,Infinity) | Infinity (10,10) | (1e+300,Infinity) | Infinity
(10,10) | (Infinity,1e+300) | 0
(10,10) | (NaN,NaN) | NaN (10,10) | (NaN,NaN) | NaN
(10,10) | (10,10) | 1.79769313486e+308 (10,10) | (10,10) | 1.79769313486e+308
(81 rows) (100 rows)
-- Add point -- Add point
SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2; SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
f1 | f1 | ?column? f1 | f1 | ?column?
-------------------+-------------------+------------------- -------------------+-------------------+---------------------
(0,0) | (0,0) | (0,0) (0,0) | (0,0) | (0,0)
(0,0) | (-10,0) | (-10,0) (0,0) | (-10,0) | (-10,0)
(0,0) | (-3,4) | (-3,4) (0,0) | (-3,4) | (-3,4)
@ -207,6 +226,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(0,0) | (-5,-12) | (-5,-12) (0,0) | (-5,-12) | (-5,-12)
(0,0) | (1e-300,-1e-300) | (1e-300,-1e-300) (0,0) | (1e-300,-1e-300) | (1e-300,-1e-300)
(0,0) | (1e+300,Infinity) | (1e+300,Infinity) (0,0) | (1e+300,Infinity) | (1e+300,Infinity)
(0,0) | (Infinity,1e+300) | (Infinity,1e+300)
(0,0) | (NaN,NaN) | (NaN,NaN) (0,0) | (NaN,NaN) | (NaN,NaN)
(0,0) | (10,10) | (10,10) (0,0) | (10,10) | (10,10)
(-10,0) | (0,0) | (-10,0) (-10,0) | (0,0) | (-10,0)
@ -216,6 +236,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(-10,0) | (-5,-12) | (-15,-12) (-10,0) | (-5,-12) | (-15,-12)
(-10,0) | (1e-300,-1e-300) | (-10,-1e-300) (-10,0) | (1e-300,-1e-300) | (-10,-1e-300)
(-10,0) | (1e+300,Infinity) | (1e+300,Infinity) (-10,0) | (1e+300,Infinity) | (1e+300,Infinity)
(-10,0) | (Infinity,1e+300) | (Infinity,1e+300)
(-10,0) | (NaN,NaN) | (NaN,NaN) (-10,0) | (NaN,NaN) | (NaN,NaN)
(-10,0) | (10,10) | (0,10) (-10,0) | (10,10) | (0,10)
(-3,4) | (0,0) | (-3,4) (-3,4) | (0,0) | (-3,4)
@ -225,6 +246,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(-3,4) | (-5,-12) | (-8,-8) (-3,4) | (-5,-12) | (-8,-8)
(-3,4) | (1e-300,-1e-300) | (-3,4) (-3,4) | (1e-300,-1e-300) | (-3,4)
(-3,4) | (1e+300,Infinity) | (1e+300,Infinity) (-3,4) | (1e+300,Infinity) | (1e+300,Infinity)
(-3,4) | (Infinity,1e+300) | (Infinity,1e+300)
(-3,4) | (NaN,NaN) | (NaN,NaN) (-3,4) | (NaN,NaN) | (NaN,NaN)
(-3,4) | (10,10) | (7,14) (-3,4) | (10,10) | (7,14)
(5.1,34.5) | (0,0) | (5.1,34.5) (5.1,34.5) | (0,0) | (5.1,34.5)
@ -234,6 +256,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(5.1,34.5) | (-5,-12) | (0.1,22.5) (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,-1e-300) | (5.1,34.5)
(5.1,34.5) | (1e+300,Infinity) | (1e+300,Infinity) (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) | (NaN,NaN) | (NaN,NaN)
(5.1,34.5) | (10,10) | (15.1,44.5) (5.1,34.5) | (10,10) | (15.1,44.5)
(-5,-12) | (0,0) | (-5,-12) (-5,-12) | (0,0) | (-5,-12)
@ -243,6 +266,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(-5,-12) | (-5,-12) | (-10,-24) (-5,-12) | (-5,-12) | (-10,-24)
(-5,-12) | (1e-300,-1e-300) | (-5,-12) (-5,-12) | (1e-300,-1e-300) | (-5,-12)
(-5,-12) | (1e+300,Infinity) | (1e+300,Infinity) (-5,-12) | (1e+300,Infinity) | (1e+300,Infinity)
(-5,-12) | (Infinity,1e+300) | (Infinity,1e+300)
(-5,-12) | (NaN,NaN) | (NaN,NaN) (-5,-12) | (NaN,NaN) | (NaN,NaN)
(-5,-12) | (10,10) | (5,-2) (-5,-12) | (10,10) | (5,-2)
(1e-300,-1e-300) | (0,0) | (1e-300,-1e-300) (1e-300,-1e-300) | (0,0) | (1e-300,-1e-300)
@ -252,6 +276,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(1e-300,-1e-300) | (-5,-12) | (-5,-12) (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,-1e-300) | (2e-300,-2e-300)
(1e-300,-1e-300) | (1e+300,Infinity) | (1e+300,Infinity) (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) | (NaN,NaN) | (NaN,NaN)
(1e-300,-1e-300) | (10,10) | (10,10) (1e-300,-1e-300) | (10,10) | (10,10)
(1e+300,Infinity) | (0,0) | (1e+300,Infinity) (1e+300,Infinity) | (0,0) | (1e+300,Infinity)
@ -261,8 +286,19 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(1e+300,Infinity) | (-5,-12) | (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,-1e-300) | (1e+300,Infinity)
(1e+300,Infinity) | (1e+300,Infinity) | (2e+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) | (NaN,NaN) | (NaN,NaN)
(1e+300,Infinity) | (10,10) | (1e+300,Infinity) (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) | (0,0) | (NaN,NaN)
(NaN,NaN) | (-10,0) | (NaN,NaN) (NaN,NaN) | (-10,0) | (NaN,NaN)
(NaN,NaN) | (-3,4) | (NaN,NaN) (NaN,NaN) | (-3,4) | (NaN,NaN)
@ -270,6 +306,7 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(NaN,NaN) | (-5,-12) | (NaN,NaN) (NaN,NaN) | (-5,-12) | (NaN,NaN)
(NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN) (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN)
(NaN,NaN) | (1e+300,Infinity) | (NaN,NaN) (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN)
(NaN,NaN) | (Infinity,1e+300) | (NaN,NaN)
(NaN,NaN) | (NaN,NaN) | (NaN,NaN) (NaN,NaN) | (NaN,NaN) | (NaN,NaN)
(NaN,NaN) | (10,10) | (NaN,NaN) (NaN,NaN) | (10,10) | (NaN,NaN)
(10,10) | (0,0) | (10,10) (10,10) | (0,0) | (10,10)
@ -279,14 +316,15 @@ SELECT p1.f1, p2.f1, p1.f1 + p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(10,10) | (-5,-12) | (5,-2) (10,10) | (-5,-12) | (5,-2)
(10,10) | (1e-300,-1e-300) | (10,10) (10,10) | (1e-300,-1e-300) | (10,10)
(10,10) | (1e+300,Infinity) | (1e+300,Infinity) (10,10) | (1e+300,Infinity) | (1e+300,Infinity)
(10,10) | (Infinity,1e+300) | (Infinity,1e+300)
(10,10) | (NaN,NaN) | (NaN,NaN) (10,10) | (NaN,NaN) | (NaN,NaN)
(10,10) | (10,10) | (20,20) (10,10) | (10,10) | (20,20)
(81 rows) (100 rows)
-- Subtract point -- Subtract point
SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2; SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
f1 | f1 | ?column? f1 | f1 | ?column?
-------------------+-------------------+--------------------- -------------------+-------------------+----------------------
(0,0) | (0,0) | (0,0) (0,0) | (0,0) | (0,0)
(0,0) | (-10,0) | (10,0) (0,0) | (-10,0) | (10,0)
(0,0) | (-3,4) | (3,-4) (0,0) | (-3,4) | (3,-4)
@ -294,6 +332,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(0,0) | (-5,-12) | (5,12) (0,0) | (-5,-12) | (5,12)
(0,0) | (1e-300,-1e-300) | (-1e-300,1e-300) (0,0) | (1e-300,-1e-300) | (-1e-300,1e-300)
(0,0) | (1e+300,Infinity) | (-1e+300,-Infinity) (0,0) | (1e+300,Infinity) | (-1e+300,-Infinity)
(0,0) | (Infinity,1e+300) | (-Infinity,-1e+300)
(0,0) | (NaN,NaN) | (NaN,NaN) (0,0) | (NaN,NaN) | (NaN,NaN)
(0,0) | (10,10) | (-10,-10) (0,0) | (10,10) | (-10,-10)
(-10,0) | (0,0) | (-10,0) (-10,0) | (0,0) | (-10,0)
@ -303,6 +342,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(-10,0) | (-5,-12) | (-5,12) (-10,0) | (-5,-12) | (-5,12)
(-10,0) | (1e-300,-1e-300) | (-10,1e-300) (-10,0) | (1e-300,-1e-300) | (-10,1e-300)
(-10,0) | (1e+300,Infinity) | (-1e+300,-Infinity) (-10,0) | (1e+300,Infinity) | (-1e+300,-Infinity)
(-10,0) | (Infinity,1e+300) | (-Infinity,-1e+300)
(-10,0) | (NaN,NaN) | (NaN,NaN) (-10,0) | (NaN,NaN) | (NaN,NaN)
(-10,0) | (10,10) | (-20,-10) (-10,0) | (10,10) | (-20,-10)
(-3,4) | (0,0) | (-3,4) (-3,4) | (0,0) | (-3,4)
@ -312,6 +352,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(-3,4) | (-5,-12) | (2,16) (-3,4) | (-5,-12) | (2,16)
(-3,4) | (1e-300,-1e-300) | (-3,4) (-3,4) | (1e-300,-1e-300) | (-3,4)
(-3,4) | (1e+300,Infinity) | (-1e+300,-Infinity) (-3,4) | (1e+300,Infinity) | (-1e+300,-Infinity)
(-3,4) | (Infinity,1e+300) | (-Infinity,-1e+300)
(-3,4) | (NaN,NaN) | (NaN,NaN) (-3,4) | (NaN,NaN) | (NaN,NaN)
(-3,4) | (10,10) | (-13,-6) (-3,4) | (10,10) | (-13,-6)
(5.1,34.5) | (0,0) | (5.1,34.5) (5.1,34.5) | (0,0) | (5.1,34.5)
@ -321,6 +362,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(5.1,34.5) | (-5,-12) | (10.1,46.5) (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,-1e-300) | (5.1,34.5)
(5.1,34.5) | (1e+300,Infinity) | (-1e+300,-Infinity) (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) | (NaN,NaN) | (NaN,NaN)
(5.1,34.5) | (10,10) | (-4.9,24.5) (5.1,34.5) | (10,10) | (-4.9,24.5)
(-5,-12) | (0,0) | (-5,-12) (-5,-12) | (0,0) | (-5,-12)
@ -330,6 +372,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(-5,-12) | (-5,-12) | (0,0) (-5,-12) | (-5,-12) | (0,0)
(-5,-12) | (1e-300,-1e-300) | (-5,-12) (-5,-12) | (1e-300,-1e-300) | (-5,-12)
(-5,-12) | (1e+300,Infinity) | (-1e+300,-Infinity) (-5,-12) | (1e+300,Infinity) | (-1e+300,-Infinity)
(-5,-12) | (Infinity,1e+300) | (-Infinity,-1e+300)
(-5,-12) | (NaN,NaN) | (NaN,NaN) (-5,-12) | (NaN,NaN) | (NaN,NaN)
(-5,-12) | (10,10) | (-15,-22) (-5,-12) | (10,10) | (-15,-22)
(1e-300,-1e-300) | (0,0) | (1e-300,-1e-300) (1e-300,-1e-300) | (0,0) | (1e-300,-1e-300)
@ -339,6 +382,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(1e-300,-1e-300) | (-5,-12) | (5,12) (1e-300,-1e-300) | (-5,-12) | (5,12)
(1e-300,-1e-300) | (1e-300,-1e-300) | (0,0) (1e-300,-1e-300) | (1e-300,-1e-300) | (0,0)
(1e-300,-1e-300) | (1e+300,Infinity) | (-1e+300,-Infinity) (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) | (NaN,NaN) | (NaN,NaN)
(1e-300,-1e-300) | (10,10) | (-10,-10) (1e-300,-1e-300) | (10,10) | (-10,-10)
(1e+300,Infinity) | (0,0) | (1e+300,Infinity) (1e+300,Infinity) | (0,0) | (1e+300,Infinity)
@ -348,8 +392,19 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(1e+300,Infinity) | (-5,-12) | (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,-1e-300) | (1e+300,Infinity)
(1e+300,Infinity) | (1e+300,Infinity) | (0,NaN) (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) | (NaN,NaN) | (NaN,NaN)
(1e+300,Infinity) | (10,10) | (1e+300,Infinity) (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) | (0,0) | (NaN,NaN)
(NaN,NaN) | (-10,0) | (NaN,NaN) (NaN,NaN) | (-10,0) | (NaN,NaN)
(NaN,NaN) | (-3,4) | (NaN,NaN) (NaN,NaN) | (-3,4) | (NaN,NaN)
@ -357,6 +412,7 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(NaN,NaN) | (-5,-12) | (NaN,NaN) (NaN,NaN) | (-5,-12) | (NaN,NaN)
(NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN) (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN)
(NaN,NaN) | (1e+300,Infinity) | (NaN,NaN) (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN)
(NaN,NaN) | (Infinity,1e+300) | (NaN,NaN)
(NaN,NaN) | (NaN,NaN) | (NaN,NaN) (NaN,NaN) | (NaN,NaN) | (NaN,NaN)
(NaN,NaN) | (10,10) | (NaN,NaN) (NaN,NaN) | (10,10) | (NaN,NaN)
(10,10) | (0,0) | (10,10) (10,10) | (0,0) | (10,10)
@ -366,9 +422,10 @@ SELECT p1.f1, p2.f1, p1.f1 - p2.f1 FROM POINT_TBL p1, POINT_TBL p2;
(10,10) | (-5,-12) | (15,22) (10,10) | (-5,-12) | (15,22)
(10,10) | (1e-300,-1e-300) | (10,10) (10,10) | (1e-300,-1e-300) | (10,10)
(10,10) | (1e+300,Infinity) | (-1e+300,-Infinity) (10,10) | (1e+300,Infinity) | (-1e+300,-Infinity)
(10,10) | (Infinity,1e+300) | (-Infinity,-1e+300)
(10,10) | (NaN,NaN) | (NaN,NaN) (10,10) | (NaN,NaN) | (NaN,NaN)
(10,10) | (10,10) | (0,0) (10,10) | (10,10) | (0,0)
(81 rows) (100 rows)
-- Multiply with point -- 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; SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] BETWEEN 1 AND 1000;
@ -388,11 +445,13 @@ SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0
(10,10) | (1e-300,-1e-300) | (2e-299,0) (10,10) | (1e-300,-1e-300) | (2e-299,0)
(5.1,34.5) | (1e+300,Infinity) | (-Infinity,Infinity) (5.1,34.5) | (1e+300,Infinity) | (-Infinity,Infinity)
(10,10) | (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) (5.1,34.5) | (NaN,NaN) | (NaN,NaN)
(10,10) | (NaN,NaN) | (NaN,NaN) (10,10) | (NaN,NaN) | (NaN,NaN)
(5.1,34.5) | (10,10) | (-294,396) (5.1,34.5) | (10,10) | (-294,396)
(10,10) | (10,10) | (0,200) (10,10) | (10,10) | (0,200)
(18 rows) (20 rows)
-- Underflow error -- Underflow error
SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] < 1; SELECT p1.f1, p2.f1, p1.f1 * p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p1.f1[0] < 1;
@ -415,11 +474,13 @@ SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0
(1e-300,-1e-300) | (10,10) | (0,-1e-301) (1e-300,-1e-300) | (10,10) | (0,-1e-301)
(1e+300,Infinity) | (5.1,34.5) | (Infinity,Infinity) (1e+300,Infinity) | (5.1,34.5) | (Infinity,Infinity)
(1e+300,Infinity) | (10,10) | (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) | (5.1,34.5) | (NaN,NaN)
(NaN,NaN) | (10,10) | (NaN,NaN) (NaN,NaN) | (10,10) | (NaN,NaN)
(10,10) | (5.1,34.5) | (0.325588278822,-0.241724631247) (10,10) | (5.1,34.5) | (0.325588278822,-0.241724631247)
(10,10) | (10,10) | (1,0) (10,10) | (10,10) | (1,0)
(18 rows) (20 rows)
-- Overflow error -- Overflow error
SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] > 1000; SELECT p1.f1, p2.f1, p1.f1 / p2.f1 FROM POINT_TBL p1, POINT_TBL p2 WHERE p2.f1[0] > 1000;
@ -501,6 +562,16 @@ SELECT p.f1, l.s, p.f1 <-> l.s AS dist_pl, l.s <-> p.f1 AS dist_lp FROM POINT_TB
(1e+300,Infinity) | {NaN,NaN,NaN} | NaN | NaN (1e+300,Infinity) | {NaN,NaN,NaN} | NaN | NaN
(1e+300,Infinity) | {0,-1,3} | Infinity | Infinity (1e+300,Infinity) | {0,-1,3} | Infinity | Infinity
(1e+300,Infinity) | {-1,0,3} | NaN | NaN (1e+300,Infinity) | {-1,0,3} | NaN | NaN
(Infinity,1e+300) | {0,-1,5} | NaN | NaN
(Infinity,1e+300) | {1,0,5} | NaN | NaN
(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} | NaN | NaN
(NaN,NaN) | {0,-1,5} | NaN | NaN (NaN,NaN) | {0,-1,5} | NaN | NaN
(NaN,NaN) | {1,0,5} | NaN | NaN (NaN,NaN) | {1,0,5} | NaN | NaN
(NaN,NaN) | {0,3,0} | NaN | NaN (NaN,NaN) | {0,3,0} | NaN | NaN
@ -521,7 +592,7 @@ SELECT p.f1, l.s, p.f1 <-> l.s AS dist_pl, l.s <-> p.f1 AS dist_lp FROM POINT_TB
(10,10) | {NaN,NaN,NaN} | NaN | NaN (10,10) | {NaN,NaN,NaN} | NaN | NaN
(10,10) | {0,-1,3} | 7 | 7 (10,10) | {0,-1,3} | 7 | 7
(10,10) | {-1,0,3} | 7 | 7 (10,10) | {-1,0,3} | 7 | 7
(90 rows) (100 rows)
-- Distance to line segment -- 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; 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;
@ -583,6 +654,14 @@ SELECT p.f1, l.s, p.f1 <-> l.s AS dist_ps, l.s <-> p.f1 AS dist_sp FROM POINT_TB
(1e+300,Infinity) | [(-10,2),(-10,3)] | Infinity | Infinity (1e+300,Infinity) | [(-10,2),(-10,3)] | Infinity | Infinity
(1e+300,Infinity) | [(0,-20),(30,-20)] | Infinity | Infinity (1e+300,Infinity) | [(0,-20),(30,-20)] | Infinity | Infinity
(1e+300,Infinity) | [(NaN,1),(NaN,90)] | 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) | [(1,2),(3,4)] | NaN | NaN
(NaN,NaN) | [(0,0),(6,6)] | NaN | NaN (NaN,NaN) | [(0,0),(6,6)] | NaN | NaN
(NaN,NaN) | [(10,-10),(-3,-4)] | NaN | NaN (NaN,NaN) | [(10,-10),(-3,-4)] | NaN | NaN
@ -599,7 +678,7 @@ SELECT p.f1, l.s, p.f1 <-> l.s AS dist_ps, l.s <-> p.f1 AS dist_sp FROM POINT_TB
(10,10) | [(-10,2),(-10,3)] | 21.1896201004 | 21.1896201004 (10,10) | [(-10,2),(-10,3)] | 21.1896201004 | 21.1896201004
(10,10) | [(0,-20),(30,-20)] | 30 | 30 (10,10) | [(0,-20),(30,-20)] | 30 | 30
(10,10) | [(NaN,1),(NaN,90)] | NaN | NaN (10,10) | [(NaN,1),(NaN,90)] | NaN | NaN
(72 rows) (80 rows)
-- Distance to box -- 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; 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;
@ -640,6 +719,11 @@ SELECT p.f1, b.f1, p.f1 <-> b.f1 AS dist_pb, b.f1 <-> p.f1 AS dist_bp FROM POINT
(1e+300,Infinity) | (-2,2),(-8,-10) | 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) | (2.5,3.5),(2.5,2.5) | Infinity | Infinity
(1e+300,Infinity) | (3,3),(3,3) | 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) | (2,2),(0,0) | NaN | NaN
(NaN,NaN) | (3,3),(1,1) | NaN | NaN (NaN,NaN) | (3,3),(1,1) | NaN | NaN
(NaN,NaN) | (-2,2),(-8,-10) | NaN | NaN (NaN,NaN) | (-2,2),(-8,-10) | NaN | NaN
@ -650,7 +734,7 @@ SELECT p.f1, b.f1, p.f1 <-> b.f1 AS dist_pb, b.f1 <-> p.f1 AS dist_bp FROM POINT
(10,10) | (-2,2),(-8,-10) | 14.4222051019 | 14.4222051019 (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) | (2.5,3.5),(2.5,2.5) | 9.92471662064 | 9.92471662064
(10,10) | (3,3),(3,3) | 9.89949493661 | 9.89949493661 (10,10) | (3,3),(3,3) | 9.89949493661 | 9.89949493661
(45 rows) (50 rows)
-- Distance to path -- 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; 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;
@ -719,6 +803,15 @@ SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppath, p1.f1 <-> p.f1 AS dist_pathp F
(1e+300,Infinity) | ((10,20)) | 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
(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) | ((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) | [(0,0),(3,0),(4,5),(1,6)] | NaN | NaN
@ -737,7 +830,7 @@ SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppath, p1.f1 <-> p.f1 AS dist_pathp F
(10,10) | ((10,20)) | 10 | 10 (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
(10,10) | ((11,12),(13,14)) | 2.2360679775 | 2.2360679775 (10,10) | ((11,12),(13,14)) | 2.2360679775 | 2.2360679775
(81 rows) (90 rows)
-- Distance to polygon -- 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; 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;
@ -792,6 +885,13 @@ SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppoly, p1.f1 <-> p.f1 AS dist_polyp F
(1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | 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,0)) | Infinity | Infinity
(1e+300,Infinity) | ((0,1),(0,1)) | 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) | ((2,0),(2,4),(0,0)) | 0 | 0
(NaN,NaN) | ((3,1),(3,3),(1,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) | ((1,2),(3,4),(5,6),(7,8)) | 0 | 0
@ -806,7 +906,102 @@ SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppoly, p1.f1 <-> p.f1 AS dist_polyp F
(10,10) | ((1,2),(7,8),(5,6),(3,-4)) | 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,0)) | 14.1421356237 | 14.1421356237
(10,10) | ((0,1),(0,1)) | 13.4536240471 | 13.4536240471 (10,10) | ((0,1),(0,1)) | 13.4536240471 | 13.4536240471
(63 rows) (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) | {Infinity,-1,NaN}
(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) | {Infinity,-1,Infinity}
(-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) | {Infinity,-1,Infinity}
(-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) | {Infinity,-1,-Infinity}
(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) | {Infinity,-1,Infinity}
(-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) | {Infinity,-1,-Infinity}
(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) | {Infinity,-1,NaN}
(1e+300,Infinity) | (-10,0) | {Infinity,-1,NaN}
(1e+300,Infinity) | (-3,4) | {Infinity,-1,NaN}
(1e+300,Infinity) | (5.1,34.5) | {Infinity,-1,NaN}
(1e+300,Infinity) | (-5,-12) | {Infinity,-1,NaN}
(1e+300,Infinity) | (1e-300,-1e-300) | {Infinity,-1,NaN}
(1e+300,Infinity) | (Infinity,1e+300) | {NaN,-1,NaN}
(1e+300,Infinity) | (NaN,NaN) | {NaN,-1,NaN}
(1e+300,Infinity) | (10,10) | {Infinity,-1,NaN}
(Infinity,1e+300) | (0,0) | {0,-1,NaN}
(Infinity,1e+300) | (-10,0) | {0,-1,NaN}
(Infinity,1e+300) | (-3,4) | {0,-1,NaN}
(Infinity,1e+300) | (5.1,34.5) | {0,-1,NaN}
(Infinity,1e+300) | (-5,-12) | {0,-1,NaN}
(Infinity,1e+300) | (1e-300,-1e-300) | {0,-1,NaN}
(Infinity,1e+300) | (1e+300,Infinity) | {NaN,-1,NaN}
(Infinity,1e+300) | (NaN,NaN) | {NaN,-1,NaN}
(Infinity,1e+300) | (10,10) | {0,-1,NaN}
(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) | {Infinity,-1,-Infinity}
(10,10) | (Infinity,1e+300) | {0,-1,10}
(10,10) | (NaN,NaN) | {NaN,-1,NaN}
(88 rows)
-- Closest point to line -- Closest point to line
SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l; SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l;
@ -882,6 +1077,16 @@ SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l;
(1e+300,Infinity) | {NaN,NaN,NaN} | (1e+300,Infinity) | {NaN,NaN,NaN} |
(1e+300,Infinity) | {0,-1,3} | (1e+300,3) (1e+300,Infinity) | {0,-1,3} | (1e+300,3)
(1e+300,Infinity) | {-1,0,3} | (1e+300,Infinity) | {-1,0,3} |
(Infinity,1e+300) | {0,-1,5} |
(Infinity,1e+300) | {1,0,5} |
(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} |
(NaN,NaN) | {0,-1,5} | (NaN,NaN) | {0,-1,5} |
(NaN,NaN) | {1,0,5} | (NaN,NaN) | {1,0,5} |
(NaN,NaN) | {0,3,0} | (NaN,NaN) | {0,3,0} |
@ -902,7 +1107,7 @@ SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l;
(10,10) | {NaN,NaN,NaN} | (10,10) | {NaN,NaN,NaN} |
(10,10) | {0,-1,3} | (10,3) (10,10) | {0,-1,3} | (10,3)
(10,10) | {-1,0,3} | (3,10) (10,10) | {-1,0,3} | (3,10)
(90 rows) (100 rows)
-- Closest point to line segment -- Closest point to line segment
SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l; SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l;
@ -964,6 +1169,14 @@ SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l;
(1e+300,Infinity) | [(-10,2),(-10,3)] | (-10,3) (1e+300,Infinity) | [(-10,2),(-10,3)] | (-10,3)
(1e+300,Infinity) | [(0,-20),(30,-20)] | (30,-20) (1e+300,Infinity) | [(0,-20),(30,-20)] | (30,-20)
(1e+300,Infinity) | [(NaN,1),(NaN,90)] | (NaN,90) (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) | [(1,2),(3,4)] |
(NaN,NaN) | [(0,0),(6,6)] | (NaN,NaN) | [(0,0),(6,6)] |
(NaN,NaN) | [(10,-10),(-3,-4)] | (NaN,NaN) | [(10,-10),(-3,-4)] |
@ -980,7 +1193,7 @@ SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LSEG_TBL l;
(10,10) | [(-10,2),(-10,3)] | (-10,3) (10,10) | [(-10,2),(-10,3)] | (-10,3)
(10,10) | [(0,-20),(30,-20)] | (10,-20) (10,10) | [(0,-20),(30,-20)] | (10,-20)
(10,10) | [(NaN,1),(NaN,90)] | (10,10) | [(NaN,1),(NaN,90)] |
(72 rows) (80 rows)
-- Closest point to box -- Closest point to box
SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b; SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b;
@ -1021,6 +1234,11 @@ SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b;
(1e+300,Infinity) | (-2,2),(-8,-10) | (-8,2) (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) | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
(1e+300,Infinity) | (3,3),(3,3) | (3,3) (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) | (2,2),(0,0) |
(NaN,NaN) | (3,3),(1,1) | (NaN,NaN) | (3,3),(1,1) |
(NaN,NaN) | (-2,2),(-8,-10) | (NaN,NaN) | (-2,2),(-8,-10) |
@ -1031,7 +1249,7 @@ SELECT p.f1, b.f1, p.f1 ## b.f1 FROM POINT_TBL p, BOX_TBL b;
(10,10) | (-2,2),(-8,-10) | (-2,2) (10,10) | (-2,2),(-8,-10) | (-2,2)
(10,10) | (2.5,3.5),(2.5,2.5) | (2.5,3.5) (10,10) | (2.5,3.5),(2.5,2.5) | (2.5,3.5)
(10,10) | (3,3),(3,3) | (3,3) (10,10) | (3,3),(3,3) | (3,3)
(45 rows) (50 rows)
-- On line -- On line
SELECT p.f1, l.s FROM POINT_TBL p, LINE_TBL l WHERE p.f1 <@ l.s; SELECT p.f1, l.s FROM POINT_TBL p, LINE_TBL l WHERE p.f1 <@ l.s;
@ -2347,6 +2565,11 @@ SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
| (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) | (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) | (NaN,NaN),(NaN,NaN)
@ -2357,7 +2580,7 @@ SELECT '' AS twentyfour, b.f1 + p.f1 AS translation
| (8,12),(2,0) | (8,12),(2,0)
| (12.5,13.5),(12.5,12.5) | (12.5,13.5),(12.5,12.5)
| (13,13),(13,13) | (13,13),(13,13)
(45 rows) (50 rows)
SELECT '' AS twentyfour, b.f1 - p.f1 AS translation SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
FROM BOX_TBL b, POINT_TBL p; FROM BOX_TBL b, POINT_TBL p;
@ -2398,6 +2621,11 @@ SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
| (-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) | (-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) | (NaN,NaN),(NaN,NaN)
@ -2408,7 +2636,7 @@ SELECT '' AS twentyfour, b.f1 - p.f1 AS translation
| (-12,-8),(-18,-20) | (-12,-8),(-18,-20)
| (-7.5,-6.5),(-7.5,-7.5) | (-7.5,-6.5),(-7.5,-7.5)
| (-7,-7),(-7,-7) | (-7,-7),(-7,-7)
(45 rows) (50 rows)
-- Multiply with point -- 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; SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000;
@ -2431,16 +2659,21 @@ SELECT b.f1, p.f1, b.f1 * p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] > 1000;
f1 | f1 | ?column? f1 | f1 | ?column?
---------------------+-------------------+-------------------------------------------- ---------------------+-------------------+--------------------------------------------
(2,2),(0,0) | (1e+300,Infinity) | (NaN,NaN),(-Infinity,Infinity) (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) (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) | (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) (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) | (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,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) | (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) (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) | (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) (3,3),(3,3) | (NaN,NaN) | (NaN,NaN),(NaN,NaN)
(10 rows) (15 rows)
-- Divide by point -- 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; SELECT b.f1, p.f1, b.f1 / p.f1 FROM BOX_TBL b, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000;
@ -2470,9 +2703,10 @@ SELECT f1::box
(-5,-12),(-5,-12) (-5,-12),(-5,-12)
(1e-300,-1e-300),(1e-300,-1e-300) (1e-300,-1e-300),(1e-300,-1e-300)
(1e+300,Infinity),(1e+300,Infinity) (1e+300,Infinity),(1e+300,Infinity)
(Infinity,1e+300),(Infinity,1e+300)
(NaN,NaN),(NaN,NaN) (NaN,NaN),(NaN,NaN)
(10,10),(10,10) (10,10),(10,10)
(9 rows) (10 rows)
SELECT bound_box(a.f1, b.f1) SELECT bound_box(a.f1, b.f1)
FROM BOX_TBL a, BOX_TBL b; FROM BOX_TBL a, BOX_TBL b;
@ -3102,6 +3336,15 @@ SELECT p.f1, p1.f1, p.f1 + p1.f1 FROM PATH_TBL p, POINT_TBL p1;
((10,20)) | (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)]
((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)]
((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)] [(0,0),(3,0),(4,5),(1,6)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN),(NaN,NaN),(NaN,NaN)]
@ -3120,7 +3363,7 @@ SELECT p.f1, p1.f1, p.f1 + p1.f1 FROM PATH_TBL p, POINT_TBL p1;
((10,20)) | (10,10) | ((20,30)) ((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)]
((11,12),(13,14)) | (10,10) | ((21,22),(23,24)) ((11,12),(13,14)) | (10,10) | ((21,22),(23,24))
(81 rows) (90 rows)
-- Subtract point -- Subtract point
SELECT p.f1, p1.f1, p.f1 - p1.f1 FROM PATH_TBL p, POINT_TBL p1; SELECT p.f1, p1.f1, p.f1 - p1.f1 FROM PATH_TBL p, POINT_TBL p1;
@ -3189,6 +3432,15 @@ SELECT p.f1, p1.f1, p.f1 - p1.f1 FROM PATH_TBL p, POINT_TBL p1;
((10,20)) | (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)]
((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)]
((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)] [(0,0),(3,0),(4,5),(1,6)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN),(NaN,NaN),(NaN,NaN)]
@ -3207,7 +3459,7 @@ SELECT p.f1, p1.f1, p.f1 - p1.f1 FROM PATH_TBL p, POINT_TBL p1;
((10,20)) | (10,10) | ((0,10)) ((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)]
((11,12),(13,14)) | (10,10) | ((1,2),(3,4)) ((11,12),(13,14)) | (10,10) | ((1,2),(3,4))
(81 rows) (90 rows)
-- Multiply with point -- Multiply with point
SELECT p.f1, p1.f1, p.f1 * p1.f1 FROM PATH_TBL p, POINT_TBL p1; SELECT p.f1, p1.f1, p.f1 * p1.f1 FROM PATH_TBL p, POINT_TBL p1;
@ -3276,6 +3528,15 @@ SELECT p.f1, p1.f1, p.f1 * p1.f1 FROM PATH_TBL p, POINT_TBL p1;
((10,20)) | (1e+300,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)]
((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)]
((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)] [(0,0),(3,0),(4,5),(1,6)] | (NaN,NaN) | [(NaN,NaN),(NaN,NaN),(NaN,NaN),(NaN,NaN)]
@ -3294,7 +3555,7 @@ SELECT p.f1, p1.f1, p.f1 * p1.f1 FROM PATH_TBL p, POINT_TBL p1;
((10,20)) | (10,10) | ((-100,300)) ((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)]
((11,12),(13,14)) | (10,10) | ((-10,230),(-10,270)) ((11,12),(13,14)) | (10,10) | ((-10,230),(-10,270))
(81 rows) (90 rows)
-- Divide by point -- 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; SELECT p.f1, p1.f1, p.f1 / p1.f1 FROM PATH_TBL p, POINT_TBL p1 WHERE p1.f1[0] BETWEEN 1 AND 1000;
@ -3467,6 +3728,13 @@ SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 @> p.f1 AS contains
| (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | f | (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | f
| (1e+300,Infinity) | ((0,0)) | f | (1e+300,Infinity) | ((0,0)) | f
| (1e+300,Infinity) | ((0,1),(0,1)) | 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) | ((2,0),(2,4),(0,0)) | t
| (NaN,NaN) | ((3,1),(3,3),(1,0)) | t | (NaN,NaN) | ((3,1),(3,3),(1,0)) | t
| (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | t | (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | t
@ -3481,7 +3749,7 @@ SELECT '' AS twentyfour, p.f1, poly.f1, poly.f1 @> p.f1 AS contains
| (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | f | (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | f
| (10,10) | ((0,0)) | f | (10,10) | ((0,0)) | f
| (10,10) | ((0,1),(0,1)) | f | (10,10) | ((0,1),(0,1)) | f
(63 rows) (70 rows)
SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained
FROM POLYGON_TBL poly, POINT_TBL p; FROM POLYGON_TBL poly, POINT_TBL p;
@ -3536,6 +3804,13 @@ SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained
| (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | f | (1e+300,Infinity) | ((1,2),(7,8),(5,6),(3,-4)) | f
| (1e+300,Infinity) | ((0,0)) | f | (1e+300,Infinity) | ((0,0)) | f
| (1e+300,Infinity) | ((0,1),(0,1)) | 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) | ((2,0),(2,4),(0,0)) | t
| (NaN,NaN) | ((3,1),(3,3),(1,0)) | t | (NaN,NaN) | ((3,1),(3,3),(1,0)) | t
| (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | t | (NaN,NaN) | ((1,2),(3,4),(5,6),(7,8)) | t
@ -3550,7 +3825,7 @@ SELECT '' AS twentyfour, p.f1, poly.f1, p.f1 <@ poly.f1 AS contained
| (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | f | (10,10) | ((1,2),(7,8),(5,6),(3,-4)) | f
| (10,10) | ((0,0)) | f | (10,10) | ((0,0)) | f
| (10,10) | ((0,1),(0,1)) | f | (10,10) | ((0,1),(0,1)) | f
(63 rows) (70 rows)
SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon SELECT '' AS four, npoints(f1) AS npoints, f1 AS polygon
FROM POLYGON_TBL; FROM POLYGON_TBL;
@ -3929,9 +4204,10 @@ SELECT '' AS six, circle(f1, 50.0)
| <(-5,-12),50> | <(-5,-12),50>
| <(1e-300,-1e-300),50> | <(1e-300,-1e-300),50>
| <(1e+300,Infinity),50> | <(1e+300,Infinity),50>
| <(Infinity,1e+300),50>
| <(NaN,NaN),50> | <(NaN,NaN),50>
| <(10,10),50> | <(10,10),50>
(9 rows) (10 rows)
SELECT '' AS four, circle(f1) SELECT '' AS four, circle(f1)
FROM BOX_TBL; FROM BOX_TBL;
@ -3993,12 +4269,19 @@ SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS d
| <(100,200),10> | (-10,0) | 218.25424421 | <(100,200),10> | (-10,0) | 218.25424421
| <(100,200),10> | (-5,-12) | 226.577682802 | <(100,200),10> | (-5,-12) | 226.577682802
| <(3,5),0> | (1e+300,Infinity) | Infinity | <(3,5),0> | (1e+300,Infinity) | Infinity
| <(3,5),0> | (Infinity,1e+300) | Infinity
| <(1,2),3> | (1e+300,Infinity) | Infinity | <(1,2),3> | (1e+300,Infinity) | Infinity
| <(5,1),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> | (1e+300,Infinity) | Infinity
| <(1,3),5> | (Infinity,1e+300) | Infinity
| <(100,200),10> | (1e+300,Infinity) | 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> | (1e+300,Infinity) | Infinity
| <(1,2),100> | (Infinity,1e+300) | Infinity
| <(100,1),115> | (1e+300,Infinity) | Infinity | <(100,1),115> | (1e+300,Infinity) | Infinity
| <(100,1),115> | (Infinity,1e+300) | Infinity
| <(3,5),0> | (NaN,NaN) | NaN | <(3,5),0> | (NaN,NaN) | NaN
| <(1,2),3> | (NaN,NaN) | NaN | <(1,2),3> | (NaN,NaN) | NaN
| <(5,1),3> | (NaN,NaN) | NaN | <(5,1),3> | (NaN,NaN) | NaN
@ -4014,8 +4297,9 @@ SELECT '' AS twentyfour, c1.f1 AS circle, p1.f1 AS point, (p1.f1 <-> c1.f1) AS d
| <(3,5),NaN> | (5.1,34.5) | NaN | <(3,5),NaN> | (5.1,34.5) | NaN
| <(3,5),NaN> | (10,10) | NaN | <(3,5),NaN> | (10,10) | NaN
| <(3,5),NaN> | (1e+300,Infinity) | NaN | <(3,5),NaN> | (1e+300,Infinity) | NaN
| <(3,5),NaN> | (Infinity,1e+300) | NaN
| <(3,5),NaN> | (NaN,NaN) | NaN | <(3,5),NaN> | (NaN,NaN) | NaN
(53 rows) (61 rows)
-- To polygon -- To polygon
SELECT f1, f1::polygon FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>'; SELECT f1, f1::polygon FROM CIRCLE_TBL WHERE f1 >= '<(0,0),1>';
@ -4626,6 +4910,14 @@ SELECT c.f1, p.f1, c.f1 + p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
<(100,1),115> | (1e+300,Infinity) | <(1e+300,Infinity),115> <(100,1),115> | (1e+300,Infinity) | <(1e+300,Infinity),115>
<(3,5),0> | (1e+300,Infinity) | <(1e+300,Infinity),0> <(3,5),0> | (1e+300,Infinity) | <(1e+300,Infinity),0>
<(3,5),NaN> | (1e+300,Infinity) | <(1e+300,Infinity),NaN> <(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> <(5,1),3> | (NaN,NaN) | <(NaN,NaN),3>
<(1,2),100> | (NaN,NaN) | <(NaN,NaN),100> <(1,2),100> | (NaN,NaN) | <(NaN,NaN),100>
<(1,3),5> | (NaN,NaN) | <(NaN,NaN),5> <(1,3),5> | (NaN,NaN) | <(NaN,NaN),5>
@ -4642,7 +4934,7 @@ SELECT c.f1, p.f1, c.f1 + p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
<(100,1),115> | (10,10) | <(110,11),115> <(100,1),115> | (10,10) | <(110,11),115>
<(3,5),0> | (10,10) | <(13,15),0> <(3,5),0> | (10,10) | <(13,15),0>
<(3,5),NaN> | (10,10) | <(13,15),NaN> <(3,5),NaN> | (10,10) | <(13,15),NaN>
(72 rows) (80 rows)
-- Subtract point -- Subtract point
SELECT c.f1, p.f1, c.f1 - p.f1 FROM CIRCLE_TBL c, POINT_TBL p; SELECT c.f1, p.f1, c.f1 - p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
@ -4704,6 +4996,14 @@ SELECT c.f1, p.f1, c.f1 - p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
<(100,1),115> | (1e+300,Infinity) | <(-1e+300,-Infinity),115> <(100,1),115> | (1e+300,Infinity) | <(-1e+300,-Infinity),115>
<(3,5),0> | (1e+300,Infinity) | <(-1e+300,-Infinity),0> <(3,5),0> | (1e+300,Infinity) | <(-1e+300,-Infinity),0>
<(3,5),NaN> | (1e+300,Infinity) | <(-1e+300,-Infinity),NaN> <(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> <(5,1),3> | (NaN,NaN) | <(NaN,NaN),3>
<(1,2),100> | (NaN,NaN) | <(NaN,NaN),100> <(1,2),100> | (NaN,NaN) | <(NaN,NaN),100>
<(1,3),5> | (NaN,NaN) | <(NaN,NaN),5> <(1,3),5> | (NaN,NaN) | <(NaN,NaN),5>
@ -4720,7 +5020,7 @@ SELECT c.f1, p.f1, c.f1 - p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
<(100,1),115> | (10,10) | <(90,-9),115> <(100,1),115> | (10,10) | <(90,-9),115>
<(3,5),0> | (10,10) | <(-7,-5),0> <(3,5),0> | (10,10) | <(-7,-5),0>
<(3,5),NaN> | (10,10) | <(-7,-5),NaN> <(3,5),NaN> | (10,10) | <(-7,-5),NaN>
(72 rows) (80 rows)
-- Multiply with point -- Multiply with point
SELECT c.f1, p.f1, c.f1 * p.f1 FROM CIRCLE_TBL c, POINT_TBL p; SELECT c.f1, p.f1, c.f1 * p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
@ -4782,6 +5082,14 @@ SELECT c.f1, p.f1, c.f1 * p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
<(100,1),115> | (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),0> | (1e+300,Infinity) | <(-Infinity,Infinity),NaN>
<(3,5),NaN> | (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> <(5,1),3> | (NaN,NaN) | <(NaN,NaN),NaN>
<(1,2),100> | (NaN,NaN) | <(NaN,NaN),NaN> <(1,2),100> | (NaN,NaN) | <(NaN,NaN),NaN>
<(1,3),5> | (NaN,NaN) | <(NaN,NaN),NaN> <(1,3),5> | (NaN,NaN) | <(NaN,NaN),NaN>
@ -4798,7 +5106,7 @@ SELECT c.f1, p.f1, c.f1 * p.f1 FROM CIRCLE_TBL c, POINT_TBL p;
<(100,1),115> | (10,10) | <(990,1010),1626.34559673> <(100,1),115> | (10,10) | <(990,1010),1626.34559673>
<(3,5),0> | (10,10) | <(-20,80),0> <(3,5),0> | (10,10) | <(-20,80),0>
<(3,5),NaN> | (10,10) | <(-20,80),NaN> <(3,5),NaN> | (10,10) | <(-20,80),NaN>
(72 rows) (80 rows)
-- Divide by point -- 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; SELECT c.f1, p.f1, c.f1 / p.f1 FROM CIRCLE_TBL c, POINT_TBL p WHERE p.f1[0] BETWEEN 1 AND 1000;

View File

@ -11,6 +11,7 @@ INSERT INTO POINT_TBL(f1) VALUES ('(5.1, 34.5)');
INSERT INTO POINT_TBL(f1) VALUES ('(-5.0,-12.0)'); INSERT INTO POINT_TBL(f1) VALUES ('(-5.0,-12.0)');
INSERT INTO POINT_TBL(f1) VALUES ('(1e-300,-1e-300)'); -- To underflow INSERT INTO POINT_TBL(f1) VALUES ('(1e-300,-1e-300)'); -- To underflow
INSERT INTO POINT_TBL(f1) VALUES ('(1e+300,Inf)'); -- To overflow INSERT INTO POINT_TBL(f1) VALUES ('(1e+300,Inf)'); -- To overflow
INSERT INTO POINT_TBL(f1) VALUES ('(Inf,1e+300)'); -- Transposed
INSERT INTO POINT_TBL(f1) VALUES (' ( Nan , NaN ) '); INSERT INTO POINT_TBL(f1) VALUES (' ( Nan , NaN ) ');
-- bad format points -- bad format points
INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf'); INSERT INTO POINT_TBL(f1) VALUES ('asdfasdf');
@ -44,9 +45,10 @@ SELECT '' AS six, * FROM POINT_TBL;
| (-5,-12) | (-5,-12)
| (1e-300,-1e-300) | (1e-300,-1e-300)
| (1e+300,Infinity) | (1e+300,Infinity)
| (Infinity,1e+300)
| (NaN,NaN) | (NaN,NaN)
| (10,10) | (10,10)
(9 rows) (10 rows)
-- left of -- left of
SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)'; SELECT '' AS three, p.* FROM POINT_TBL p WHERE p.f1 << '(0.0, 0.0)';
@ -115,8 +117,9 @@ SELECT '' AS three, p.* FROM POINT_TBL p
| (-5,-12) | (-5,-12)
| (1e-300,-1e-300) | (1e-300,-1e-300)
| (1e+300,Infinity) | (1e+300,Infinity)
| (Infinity,1e+300)
| (NaN,NaN) | (NaN,NaN)
(6 rows) (7 rows)
SELECT '' AS two, p.* FROM POINT_TBL p SELECT '' AS two, p.* FROM POINT_TBL p
WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]'; WHERE p.f1 <@ path '[(0,0),(-10,0),(-10,10)]';
@ -136,8 +139,9 @@ SELECT '' AS three, p.* FROM POINT_TBL p
| (-5,-12) | (-5,-12)
| (1e-300,-1e-300) | (1e-300,-1e-300)
| (1e+300,Infinity) | (1e+300,Infinity)
| (Infinity,1e+300)
| (NaN,NaN) | (NaN,NaN)
(6 rows) (7 rows)
SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist
FROM POINT_TBL p FROM POINT_TBL p
@ -152,8 +156,9 @@ SELECT '' AS six, p.f1, p.f1 <-> point '(0,0)' AS dist
| (10,10) | 14.142135623731 | (10,10) | 14.142135623731
| (5.1,34.5) | 34.8749193547455 | (5.1,34.5) | 34.8749193547455
| (1e+300,Infinity) | Infinity | (1e+300,Infinity) | Infinity
| (Infinity,1e+300) | Infinity
| (NaN,NaN) | NaN | (NaN,NaN) | NaN
(9 rows) (10 rows)
SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dist
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
@ -210,12 +215,19 @@ SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dis
| (-5,-12) | (5.1,34.5) | 47.5842410888311 | (-5,-12) | (5.1,34.5) | 47.5842410888311
| (5.1,34.5) | (-5,-12) | 47.5842410888311 | (5.1,34.5) | (-5,-12) | 47.5842410888311
| (-10,0) | (1e+300,Infinity) | Infinity | (-10,0) | (1e+300,Infinity) | Infinity
| (-10,0) | (Infinity,1e+300) | Infinity
| (-5,-12) | (1e+300,Infinity) | Infinity | (-5,-12) | (1e+300,Infinity) | Infinity
| (-5,-12) | (Infinity,1e+300) | Infinity
| (-3,4) | (1e+300,Infinity) | Infinity | (-3,4) | (1e+300,Infinity) | Infinity
| (-3,4) | (Infinity,1e+300) | Infinity
| (0,0) | (1e+300,Infinity) | Infinity | (0,0) | (1e+300,Infinity) | Infinity
| (0,0) | (Infinity,1e+300) | Infinity
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity | (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
| (1e-300,-1e-300) | (Infinity,1e+300) | Infinity
| (5.1,34.5) | (1e+300,Infinity) | Infinity | (5.1,34.5) | (1e+300,Infinity) | Infinity
| (5.1,34.5) | (Infinity,1e+300) | Infinity
| (10,10) | (1e+300,Infinity) | Infinity | (10,10) | (1e+300,Infinity) | Infinity
| (10,10) | (Infinity,1e+300) | Infinity
| (1e+300,Infinity) | (-10,0) | Infinity | (1e+300,Infinity) | (-10,0) | Infinity
| (1e+300,Infinity) | (-5,-12) | Infinity | (1e+300,Infinity) | (-5,-12) | Infinity
| (1e+300,Infinity) | (-3,4) | Infinity | (1e+300,Infinity) | (-3,4) | Infinity
@ -223,6 +235,15 @@ SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dis
| (1e+300,Infinity) | (1e-300,-1e-300) | Infinity | (1e+300,Infinity) | (1e-300,-1e-300) | Infinity
| (1e+300,Infinity) | (5.1,34.5) | Infinity | (1e+300,Infinity) | (5.1,34.5) | Infinity
| (1e+300,Infinity) | (10,10) | Infinity | (1e+300,Infinity) | (10,10) | Infinity
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity
| (Infinity,1e+300) | (-10,0) | Infinity
| (Infinity,1e+300) | (-5,-12) | Infinity
| (Infinity,1e+300) | (-3,4) | Infinity
| (Infinity,1e+300) | (0,0) | Infinity
| (Infinity,1e+300) | (1e-300,-1e-300) | Infinity
| (Infinity,1e+300) | (5.1,34.5) | Infinity
| (Infinity,1e+300) | (10,10) | Infinity
| (Infinity,1e+300) | (1e+300,Infinity) | Infinity
| (-10,0) | (NaN,NaN) | NaN | (-10,0) | (NaN,NaN) | NaN
| (-5,-12) | (NaN,NaN) | NaN | (-5,-12) | (NaN,NaN) | NaN
| (-3,4) | (NaN,NaN) | NaN | (-3,4) | (NaN,NaN) | NaN
@ -232,6 +253,8 @@ SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dis
| (10,10) | (NaN,NaN) | NaN | (10,10) | (NaN,NaN) | NaN
| (1e+300,Infinity) | (1e+300,Infinity) | NaN | (1e+300,Infinity) | (1e+300,Infinity) | NaN
| (1e+300,Infinity) | (NaN,NaN) | NaN | (1e+300,Infinity) | (NaN,NaN) | NaN
| (Infinity,1e+300) | (Infinity,1e+300) | NaN
| (Infinity,1e+300) | (NaN,NaN) | NaN
| (NaN,NaN) | (-10,0) | NaN | (NaN,NaN) | (-10,0) | NaN
| (NaN,NaN) | (-5,-12) | NaN | (NaN,NaN) | (-5,-12) | NaN
| (NaN,NaN) | (-3,4) | NaN | (NaN,NaN) | (-3,4) | NaN
@ -240,8 +263,9 @@ SELECT '' AS thirtysix, p1.f1 AS point1, p2.f1 AS point2, p1.f1 <-> p2.f1 AS dis
| (NaN,NaN) | (5.1,34.5) | NaN | (NaN,NaN) | (5.1,34.5) | NaN
| (NaN,NaN) | (10,10) | NaN | (NaN,NaN) | (10,10) | NaN
| (NaN,NaN) | (1e+300,Infinity) | NaN | (NaN,NaN) | (1e+300,Infinity) | NaN
| (NaN,NaN) | (Infinity,1e+300) | NaN
| (NaN,NaN) | (NaN,NaN) | NaN | (NaN,NaN) | (NaN,NaN) | NaN
(81 rows) (100 rows)
SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2 SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
@ -253,6 +277,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (0,0) | (5.1,34.5) | (0,0) | (5.1,34.5)
| (0,0) | (-5,-12) | (0,0) | (-5,-12)
| (0,0) | (1e+300,Infinity) | (0,0) | (1e+300,Infinity)
| (0,0) | (Infinity,1e+300)
| (0,0) | (NaN,NaN) | (0,0) | (NaN,NaN)
| (0,0) | (10,10) | (0,0) | (10,10)
| (-10,0) | (0,0) | (-10,0) | (0,0)
@ -261,6 +286,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (-10,0) | (-5,-12) | (-10,0) | (-5,-12)
| (-10,0) | (1e-300,-1e-300) | (-10,0) | (1e-300,-1e-300)
| (-10,0) | (1e+300,Infinity) | (-10,0) | (1e+300,Infinity)
| (-10,0) | (Infinity,1e+300)
| (-10,0) | (NaN,NaN) | (-10,0) | (NaN,NaN)
| (-10,0) | (10,10) | (-10,0) | (10,10)
| (-3,4) | (0,0) | (-3,4) | (0,0)
@ -269,6 +295,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (-3,4) | (-5,-12) | (-3,4) | (-5,-12)
| (-3,4) | (1e-300,-1e-300) | (-3,4) | (1e-300,-1e-300)
| (-3,4) | (1e+300,Infinity) | (-3,4) | (1e+300,Infinity)
| (-3,4) | (Infinity,1e+300)
| (-3,4) | (NaN,NaN) | (-3,4) | (NaN,NaN)
| (-3,4) | (10,10) | (-3,4) | (10,10)
| (5.1,34.5) | (0,0) | (5.1,34.5) | (0,0)
@ -277,6 +304,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (5.1,34.5) | (-5,-12) | (5.1,34.5) | (-5,-12)
| (5.1,34.5) | (1e-300,-1e-300) | (5.1,34.5) | (1e-300,-1e-300)
| (5.1,34.5) | (1e+300,Infinity) | (5.1,34.5) | (1e+300,Infinity)
| (5.1,34.5) | (Infinity,1e+300)
| (5.1,34.5) | (NaN,NaN) | (5.1,34.5) | (NaN,NaN)
| (5.1,34.5) | (10,10) | (5.1,34.5) | (10,10)
| (-5,-12) | (0,0) | (-5,-12) | (0,0)
@ -285,6 +313,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (-5,-12) | (5.1,34.5) | (-5,-12) | (5.1,34.5)
| (-5,-12) | (1e-300,-1e-300) | (-5,-12) | (1e-300,-1e-300)
| (-5,-12) | (1e+300,Infinity) | (-5,-12) | (1e+300,Infinity)
| (-5,-12) | (Infinity,1e+300)
| (-5,-12) | (NaN,NaN) | (-5,-12) | (NaN,NaN)
| (-5,-12) | (10,10) | (-5,-12) | (10,10)
| (1e-300,-1e-300) | (-10,0) | (1e-300,-1e-300) | (-10,0)
@ -292,6 +321,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (1e-300,-1e-300) | (5.1,34.5) | (1e-300,-1e-300) | (5.1,34.5)
| (1e-300,-1e-300) | (-5,-12) | (1e-300,-1e-300) | (-5,-12)
| (1e-300,-1e-300) | (1e+300,Infinity) | (1e-300,-1e-300) | (1e+300,Infinity)
| (1e-300,-1e-300) | (Infinity,1e+300)
| (1e-300,-1e-300) | (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN)
| (1e-300,-1e-300) | (10,10) | (1e-300,-1e-300) | (10,10)
| (1e+300,Infinity) | (0,0) | (1e+300,Infinity) | (0,0)
@ -301,8 +331,19 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (1e+300,Infinity) | (-5,-12) | (1e+300,Infinity) | (-5,-12)
| (1e+300,Infinity) | (1e-300,-1e-300) | (1e+300,Infinity) | (1e-300,-1e-300)
| (1e+300,Infinity) | (1e+300,Infinity) | (1e+300,Infinity) | (1e+300,Infinity)
| (1e+300,Infinity) | (Infinity,1e+300)
| (1e+300,Infinity) | (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN)
| (1e+300,Infinity) | (10,10) | (1e+300,Infinity) | (10,10)
| (Infinity,1e+300) | (0,0)
| (Infinity,1e+300) | (-10,0)
| (Infinity,1e+300) | (-3,4)
| (Infinity,1e+300) | (5.1,34.5)
| (Infinity,1e+300) | (-5,-12)
| (Infinity,1e+300) | (1e-300,-1e-300)
| (Infinity,1e+300) | (1e+300,Infinity)
| (Infinity,1e+300) | (Infinity,1e+300)
| (Infinity,1e+300) | (NaN,NaN)
| (Infinity,1e+300) | (10,10)
| (NaN,NaN) | (0,0) | (NaN,NaN) | (0,0)
| (NaN,NaN) | (-10,0) | (NaN,NaN) | (-10,0)
| (NaN,NaN) | (-3,4) | (NaN,NaN) | (-3,4)
@ -310,6 +351,7 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (NaN,NaN) | (-5,-12) | (NaN,NaN) | (-5,-12)
| (NaN,NaN) | (1e-300,-1e-300) | (NaN,NaN) | (1e-300,-1e-300)
| (NaN,NaN) | (1e+300,Infinity) | (NaN,NaN) | (1e+300,Infinity)
| (NaN,NaN) | (Infinity,1e+300)
| (NaN,NaN) | (NaN,NaN) | (NaN,NaN) | (NaN,NaN)
| (NaN,NaN) | (10,10) | (NaN,NaN) | (10,10)
| (10,10) | (0,0) | (10,10) | (0,0)
@ -319,57 +361,67 @@ SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
| (10,10) | (-5,-12) | (10,10) | (-5,-12)
| (10,10) | (1e-300,-1e-300) | (10,10) | (1e-300,-1e-300)
| (10,10) | (1e+300,Infinity) | (10,10) | (1e+300,Infinity)
| (10,10) | (Infinity,1e+300)
| (10,10) | (NaN,NaN) | (10,10) | (NaN,NaN)
(72 rows) (91 rows)
-- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance SELECT '' AS fifteen, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1
ORDER BY distance, p1.f1[0], p2.f1[0]; ORDER BY distance, p1.f1[0], p2.f1[0];
fifteen | point1 | point2 | distance fifteen | point1 | point2 | distance
---------+------------------+-------------------+------------------ ---------+-------------------+-------------------+------------------
| (-3,4) | (0,0) | 5 | (-3,4) | (0,0) | 5
| (-3,4) | (1e-300,-1e-300) | 5 | (-3,4) | (1e-300,-1e-300) | 5
| (-10,0) | (-3,4) | 8.06225774829855 | (-10,0) | (-3,4) | 8.06225774829855
| (-10,0) | (0,0) | 10 | (-10,0) | (0,0) | 10
| (-10,0) | (1e-300,-1e-300) | 10 | (-10,0) | (1e-300,-1e-300) | 10
| (-10,0) | (-5,-12) | 13 | (-10,0) | (-5,-12) | 13
| (-5,-12) | (0,0) | 13 | (-5,-12) | (0,0) | 13
| (-5,-12) | (1e-300,-1e-300) | 13 | (-5,-12) | (1e-300,-1e-300) | 13
| (0,0) | (10,10) | 14.142135623731 | (0,0) | (10,10) | 14.142135623731
| (1e-300,-1e-300) | (10,10) | 14.142135623731 | (1e-300,-1e-300) | (10,10) | 14.142135623731
| (-3,4) | (10,10) | 14.3178210632764 | (-3,4) | (10,10) | 14.3178210632764
| (-5,-12) | (-3,4) | 16.1245154965971 | (-5,-12) | (-3,4) | 16.1245154965971
| (-10,0) | (10,10) | 22.3606797749979 | (-10,0) | (10,10) | 22.3606797749979
| (5.1,34.5) | (10,10) | 24.9851956166046 | (5.1,34.5) | (10,10) | 24.9851956166046
| (-5,-12) | (10,10) | 26.6270539113887 | (-5,-12) | (10,10) | 26.6270539113887
| (-3,4) | (5.1,34.5) | 31.5572495632937 | (-3,4) | (5.1,34.5) | 31.5572495632937
| (0,0) | (5.1,34.5) | 34.8749193547455 | (0,0) | (5.1,34.5) | 34.8749193547455
| (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455 | (1e-300,-1e-300) | (5.1,34.5) | 34.8749193547455
| (-10,0) | (5.1,34.5) | 37.6597928831267 | (-10,0) | (5.1,34.5) | 37.6597928831267
| (-5,-12) | (5.1,34.5) | 47.5842410888311 | (-5,-12) | (5.1,34.5) | 47.5842410888311
| (-10,0) | (1e+300,Infinity) | Infinity | (-10,0) | (1e+300,Infinity) | Infinity
| (-5,-12) | (1e+300,Infinity) | Infinity | (-10,0) | (Infinity,1e+300) | Infinity
| (-3,4) | (1e+300,Infinity) | Infinity | (-5,-12) | (1e+300,Infinity) | Infinity
| (0,0) | (1e+300,Infinity) | Infinity | (-5,-12) | (Infinity,1e+300) | Infinity
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity | (-3,4) | (1e+300,Infinity) | Infinity
| (5.1,34.5) | (1e+300,Infinity) | Infinity | (-3,4) | (Infinity,1e+300) | Infinity
| (10,10) | (1e+300,Infinity) | Infinity | (0,0) | (1e+300,Infinity) | Infinity
(27 rows) | (0,0) | (Infinity,1e+300) | Infinity
| (1e-300,-1e-300) | (1e+300,Infinity) | Infinity
| (1e-300,-1e-300) | (Infinity,1e+300) | Infinity
| (5.1,34.5) | (1e+300,Infinity) | Infinity
| (5.1,34.5) | (Infinity,1e+300) | Infinity
| (10,10) | (1e+300,Infinity) | Infinity
| (10,10) | (Infinity,1e+300) | Infinity
| (1e+300,Infinity) | (Infinity,1e+300) | Infinity
(35 rows)
-- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10 -- put distance result into output to allow sorting with GEQ optimizer - tgl 97/05/10
SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance SELECT '' AS three, p1.f1 AS point1, p2.f1 AS point2, (p1.f1 <-> p2.f1) AS distance
FROM POINT_TBL p1, POINT_TBL p2 FROM POINT_TBL p1, POINT_TBL p2
WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 >^ p2.f1 WHERE (p1.f1 <-> p2.f1) > 3 and p1.f1 << p2.f1 and p1.f1 >^ p2.f1
ORDER BY distance; ORDER BY distance;
three | point1 | point2 | distance three | point1 | point2 | distance
-------+------------+------------------+------------------ -------+-------------------+-------------------+------------------
| (-3,4) | (0,0) | 5 | (-3,4) | (0,0) | 5
| (-3,4) | (1e-300,-1e-300) | 5 | (-3,4) | (1e-300,-1e-300) | 5
| (-10,0) | (-5,-12) | 13 | (-10,0) | (-5,-12) | 13
| (5.1,34.5) | (10,10) | 24.9851956166046 | (5.1,34.5) | (10,10) | 24.9851956166046
(4 rows) | (1e+300,Infinity) | (Infinity,1e+300) | Infinity
(5 rows)
-- Test that GiST indexes provide same behavior as sequential scan -- Test that GiST indexes provide same behavior as sequential scan
CREATE TEMP TABLE point_gist_tbl(f1 point); CREATE TEMP TABLE point_gist_tbl(f1 point);

View File

@ -85,6 +85,10 @@ SELECT p.f1, p1.f1, p.f1 <-> p1.f1 AS dist_ppath, p1.f1 <-> p.f1 AS dist_pathp F
-- Distance to polygon -- 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; 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;
-- 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;
-- Closest point to line -- Closest point to line
SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l; SELECT p.f1, l.s, p.f1 ## l.s FROM POINT_TBL p, LINE_TBL l;

View File

@ -21,6 +21,8 @@ INSERT INTO POINT_TBL(f1) VALUES ('(1e-300,-1e-300)'); -- To underflow
INSERT INTO POINT_TBL(f1) VALUES ('(1e+300,Inf)'); -- To overflow INSERT INTO POINT_TBL(f1) VALUES ('(1e+300,Inf)'); -- To overflow
INSERT INTO POINT_TBL(f1) VALUES ('(Inf,1e+300)'); -- Transposed
INSERT INTO POINT_TBL(f1) VALUES (' ( Nan , NaN ) '); INSERT INTO POINT_TBL(f1) VALUES (' ( Nan , NaN ) ');
-- bad format points -- bad format points