2000-01-05 07:06:23 +01:00
|
|
|
--
|
|
|
|
-- CIRCLE
|
|
|
|
--
|
2019-08-25 18:14:50 +02:00
|
|
|
-- Back off displayed precision a little bit to reduce platform-to-platform
|
|
|
|
-- variation in results.
|
|
|
|
SET extra_float_digits = -1;
|
2000-01-05 07:06:23 +01:00
|
|
|
CREATE TABLE CIRCLE_TBL (f1 circle);
|
2002-11-08 21:09:55 +01:00
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('<(5,1),3>');
|
2020-04-08 02:50:02 +02:00
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('((1,2),100)');
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES (' 1 , 3 , 5 ');
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES (' ( ( 1 , 2 ) , 3 ) ');
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES (' ( 100 , 200 ) , 10 ');
|
2018-09-26 10:45:21 +02:00
|
|
|
INSERT INTO CIRCLE_TBL VALUES (' < ( 100 , 1 ) , 115 > ');
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('<(3,5),0>'); -- Zero radius
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('<(3,5),NaN>'); -- NaN radius
|
2000-01-05 07:06:23 +01:00
|
|
|
-- bad values
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>');
|
2003-09-25 08:58:07 +02:00
|
|
|
ERROR: invalid input syntax for type circle: "<(-100,0),-100>"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(-100,0),-100>');
|
|
|
|
^
|
2018-09-26 10:45:21 +02:00
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10');
|
|
|
|
ERROR: invalid input syntax for type circle: "<(100,200),10"
|
|
|
|
LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10');
|
|
|
|
^
|
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10> x');
|
|
|
|
ERROR: invalid input syntax for type circle: "<(100,200),10> x"
|
|
|
|
LINE 1: INSERT INTO CIRCLE_TBL VALUES ('<(100,200),10> x');
|
|
|
|
^
|
2000-01-05 07:06:23 +01:00
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5');
|
2003-09-25 08:58:07 +02:00
|
|
|
ERROR: invalid input syntax for type circle: "1abc,3,5"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO CIRCLE_TBL VALUES ('1abc,3,5');
|
|
|
|
^
|
2000-01-05 07:06:23 +01:00
|
|
|
INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)');
|
2003-09-25 08:58:07 +02:00
|
|
|
ERROR: invalid input syntax for type circle: "(3,(1,2),3)"
|
2008-09-01 22:42:46 +02:00
|
|
|
LINE 1: INSERT INTO CIRCLE_TBL VALUES ('(3,(1,2),3)');
|
|
|
|
^
|
2000-01-05 07:06:23 +01:00
|
|
|
SELECT * FROM CIRCLE_TBL;
|
|
|
|
f1
|
|
|
|
----------------
|
2002-11-08 21:09:55 +01:00
|
|
|
<(5,1),3>
|
2000-01-05 07:06:23 +01:00
|
|
|
<(1,2),100>
|
|
|
|
<(1,3),5>
|
|
|
|
<(1,2),3>
|
|
|
|
<(100,200),10>
|
2002-11-08 21:09:55 +01:00
|
|
|
<(100,1),115>
|
2018-09-26 10:45:21 +02:00
|
|
|
<(3,5),0>
|
|
|
|
<(3,5),NaN>
|
|
|
|
(8 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT center(f1) AS center
|
1997-05-11 17:42:09 +02:00
|
|
|
FROM CIRCLE_TBL;
|
2020-12-15 21:54:06 +01:00
|
|
|
center
|
|
|
|
-----------
|
|
|
|
(5,1)
|
|
|
|
(1,2)
|
|
|
|
(1,3)
|
|
|
|
(1,2)
|
|
|
|
(100,200)
|
|
|
|
(100,1)
|
|
|
|
(3,5)
|
|
|
|
(3,5)
|
2018-09-26 10:45:21 +02:00
|
|
|
(8 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT radius(f1) AS radius
|
1997-05-11 17:42:09 +02:00
|
|
|
FROM CIRCLE_TBL;
|
2020-12-15 21:54:06 +01:00
|
|
|
radius
|
|
|
|
--------
|
|
|
|
3
|
|
|
|
100
|
|
|
|
5
|
|
|
|
3
|
|
|
|
10
|
|
|
|
115
|
|
|
|
0
|
|
|
|
NaN
|
2018-09-26 10:45:21 +02:00
|
|
|
(8 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT diameter(f1) AS diameter
|
1997-05-11 17:42:09 +02:00
|
|
|
FROM CIRCLE_TBL;
|
2020-12-15 21:54:06 +01:00
|
|
|
diameter
|
|
|
|
----------
|
|
|
|
6
|
|
|
|
200
|
|
|
|
10
|
|
|
|
6
|
|
|
|
20
|
|
|
|
230
|
|
|
|
0
|
|
|
|
NaN
|
2018-09-26 10:45:21 +02:00
|
|
|
(8 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT f1 FROM CIRCLE_TBL WHERE radius(f1) < 5;
|
|
|
|
f1
|
|
|
|
-----------
|
|
|
|
<(5,1),3>
|
|
|
|
<(1,2),3>
|
|
|
|
<(3,5),0>
|
2018-09-26 10:45:21 +02:00
|
|
|
(3 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10;
|
|
|
|
f1
|
|
|
|
----------------
|
|
|
|
<(1,2),100>
|
|
|
|
<(1,3),5>
|
|
|
|
<(100,200),10>
|
|
|
|
<(100,1),115>
|
|
|
|
<(3,5),NaN>
|
2018-09-26 10:45:21 +02:00
|
|
|
(5 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|
2020-12-15 21:54:06 +01:00
|
|
|
SELECT c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance
|
1997-05-11 17:42:09 +02:00
|
|
|
FROM CIRCLE_TBL c1, CIRCLE_TBL c2
|
1997-07-29 18:24:04 +02:00
|
|
|
WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
|
2007-01-09 03:14:16 +01:00
|
|
|
ORDER BY distance, area(c1.f1), area(c2.f1);
|
2020-12-15 21:54:06 +01:00
|
|
|
one | two | distance
|
|
|
|
----------------+----------------+------------------
|
|
|
|
<(3,5),0> | <(1,2),3> | 0.60555127546399
|
|
|
|
<(3,5),0> | <(5,1),3> | 1.4721359549996
|
|
|
|
<(100,200),10> | <(100,1),115> | 74
|
|
|
|
<(100,200),10> | <(1,2),100> | 111.37072977248
|
|
|
|
<(1,3),5> | <(100,200),10> | 205.4767561445
|
|
|
|
<(5,1),3> | <(100,200),10> | 207.51303816328
|
|
|
|
<(3,5),0> | <(100,200),10> | 207.79348015953
|
|
|
|
<(1,2),3> | <(100,200),10> | 208.37072977248
|
2018-09-26 10:45:21 +02:00
|
|
|
(8 rows)
|
1997-05-11 17:42:09 +02:00
|
|
|
|