OSDN Git Service

Start adding tests for new geometry functions.
authorThomas G. Lockhart <lockhart@fourpalms.org>
Tue, 29 Jul 1997 16:22:48 +0000 (16:22 +0000)
committerThomas G. Lockhart <lockhart@fourpalms.org>
Tue, 29 Jul 1997 16:22:48 +0000 (16:22 +0000)
Not all cleaned up yet.

src/test/regress/sql/circle.sql
src/test/regress/sql/geometry.sql
src/test/regress/sql/lseg.sql
src/test/regress/sql/point.sql
src/test/regress/sql/polygon.sql

index bd6ad9c..b430f72 100644 (file)
@@ -39,8 +39,8 @@ SELECT '' AS two, f1 FROM CIRCLE_TBL WHERE radius(f1) < 5;
 
 SELECT '' AS four, f1 FROM CIRCLE_TBL WHERE diameter(f1) >= 10;
 
-SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <===> c2.f1) AS distance
+SELECT '' as five, c1.f1 AS one, c2.f1 AS two, (c1.f1 <-> c2.f1) AS distance
   FROM CIRCLE_TBL c1, CIRCLE_TBL c2
-  WHERE (c1.f1 < c2.f1) AND ((c1.f1 <===> c2.f1) > 0)
+  WHERE (c1.f1 < c2.f1) AND ((c1.f1 <-> c2.f1) > 0)
   ORDER BY distance, one, two;
 
index bd2b88a..a560f24 100644 (file)
@@ -2,20 +2,54 @@
 -- Points
 --
 
-SELECT point(f1) FROM CIRCLE_TBL;
+SELECT '' AS xxx, center(f1) AS center
+   FROM BOX_TBL;
 
+SELECT '' AS xxx, (@@ f1) AS center
+   FROM BOX_TBL;
+
+SELECT '' AS xxx, point(f1) AS center
+   FROM CIRCLE_TBL;
+
+SELECT '' AS xxx, (@@ f1) AS center
+   FROM CIRCLE_TBL;
+
+SELECT '' AS xxx, (@@ f1) AS center
+   FROM POLYGON_TBL
+   WHERE (# f1) > 2;
+
+-- "is horizontal" function
 SELECT '' AS two, p1.f1
-    FROM POINT_TBL p1
-    WHERE ishorizontal(p1.f1, '(0,0)'::point);
+   FROM POINT_TBL p1
+   WHERE ishorizontal(p1.f1, '(0,0)'::point);
 
+-- "is horizontal" operator
+SELECT '' AS two, p1.f1
+   FROM POINT_TBL p1
+   WHERE p1.f1 ?- '(0,0)'::point;
+
+-- "is vertical" function
+SELECT '' AS one, p1.f1
+   FROM POINT_TBL p1
+   WHERE isvertical(p1.f1, '(5.1,34.5)'::point);
+
+-- "is vertical" operator
 SELECT '' AS one, p1.f1
-    FROM POINT_TBL p1
-    WHERE isvertical(p1.f1, '(5.1,34.5)'::point);
+   FROM POINT_TBL p1
+   WHERE p1.f1 ?| '(5.1,34.5)'::point;
 
 --
 -- Line segments
 --
 
+-- intersection
+SELECT '' AS xxx, p.f1, l.s, l.s # p.f1 AS intersection
+   FROM LSEG_TBL l, POINT_TBL p;
+
+-- closest point
+SELECT '' AS xxx, p.f1, l.s, p.f1 ## l.s AS closest
+   FROM LSEG_TBL l, POINT_TBL p;
+
 --
 -- Lines
 --
@@ -24,17 +58,22 @@ SELECT '' AS one, p1.f1
 -- Boxes
 --
 
-SELECT center(f1) FROM BOX_TBL;
-
-SELECT box(f1) FROM CIRCLE_TBL;
+SELECT box(f1) AS box FROM CIRCLE_TBL;
 
 -- translation
-SELECT '' AS count, b.f1 + p.f1
-    FROM BOX_TBL b, POINT_TBL p;
+SELECT '' AS count, b.f1 + p.f1 AS translation
+   FROM BOX_TBL b, POINT_TBL p;
+
+SELECT '' AS count, b.f1 - p.f1 AS translation
+   FROM BOX_TBL b, POINT_TBL p;
 
 -- scaling and rotation
-SELECT '' AS count, b.f1 * p.f1
-    FROM BOX_TBL b, POINT_TBL p;
+SELECT '' AS count, b.f1 * p.f1 AS rotation
+   FROM BOX_TBL b, POINT_TBL p;
+
+SELECT '' AS count, b.f1 / p.f1 AS rotation
+   FROM BOX_TBL b, POINT_TBL p
+   WHERE (p.f1 <-> '(0,0)'::point) >= 1;
 
 --
 -- Paths
@@ -42,17 +81,17 @@ SELECT '' AS count, b.f1 * p.f1
 
 SET geqo TO 'off';
 
-SELECT points(f1) AS npoints, f1 AS path FROM PATH_TBL;
+SELECT '' AS xxx, points(f1) AS npoints, f1 AS path FROM PATH_TBL;
 
-SELECT path(f1) FROM POLYGON_TBL;
+SELECT '' AS xxx, path(f1) FROM POLYGON_TBL;
 
 -- translation
 SELECT '' AS eight, p1.f1 + '(10,10)'::point AS dist_add
-    FROM PATH_TBL p1;
+   FROM PATH_TBL p1;
 
 -- scaling and rotation
 SELECT '' AS eight, p1.f1 * '(2,-1)'::point AS dist_mul
-    FROM PATH_TBL p1;
+   FROM PATH_TBL p1;
 
 RESET geqo;
 
@@ -60,28 +99,50 @@ RESET geqo;
 -- Polygons
 --
 
-SELECT points(f1) AS npoints, f1 AS polygon FROM POLYGON_TBL;
+-- containment
+SELECT '' AS xxx, p.f1, poly.f1, poly.f1 ~ p.f1 AS contains
+   FROM POLYGON_TBL poly, POINT_TBL p;
 
-SELECT polygon(f1) FROM BOX_TBL;
+SELECT '' AS xxx, p.f1, poly.f1, p.f1 @ poly.f1 AS contained
+   FROM POLYGON_TBL poly, POINT_TBL p;
 
-SELECT polygon(f1) FROM PATH_TBL WHERE isclosed(f1);
+SELECT '' AS xxx, points(f1) AS npoints, f1 AS polygon
+   FROM POLYGON_TBL;
 
-SELECT f1 AS open_path, polygon( pclose(f1)) AS polygon FROM PATH_TBL WHERE isopen(f1);
+SELECT '' AS xxx, polygon(f1)
+   FROM BOX_TBL;
+
+SELECT '' AS xxx, polygon(f1)
+   FROM PATH_TBL WHERE isclosed(f1);
+
+SELECT '' AS xxx, f1 AS open_path, polygon( pclose(f1)) AS polygon
+   FROM PATH_TBL
+   WHERE isopen(f1);
 
 -- convert circles to polygons using the default number of points
-SELECT polygon(f1) FROM CIRCLE_TBL;
+SELECT '' AS xxx, polygon(f1)
+   FROM CIRCLE_TBL;
 
 -- convert the circle to an 8-point polygon
-SELECT polygon(8, f1) FROM CIRCLE_TBL;
+SELECT '' AS xxx, polygon(8, f1)
+   FROM CIRCLE_TBL;
 
 --
 -- Circles
 --
 
-SELECT circle( f1, 50.0) FROM POINT_TBL;
+SELECT '' AS xxx, circle(f1, 50.0)
+   FROM POINT_TBL;
+
+SELECT '' AS xxx, circle(f1)
+   FROM BOX_TBL;
+
+SELECT '' AS xxx, circle(f1)
+   FROM POLYGON_TBL
+   WHERE (# f1) >= 2;
 
-SELECT '' AS twentyfour, 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, circle;
+SELECT '' AS twentyfour, 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, circle;
 
index a70b5c2..b43e626 100644 (file)
@@ -21,5 +21,5 @@ select * from LSEG_TBL;
 
 SELECT * FROM LSEG_TBL WHERE s <= '[(1,2),(3,4)]'::lseg;
 
-SELECT * FROM LSEG_TBL WHERE (s <===> '[(1,2),(3,4)]'::lseg) < 10;
+SELECT * FROM LSEG_TBL WHERE (s <-> '[(1,2),(3,4)]'::lseg) < 10;
 
index ac5751b..8bd8569 100644 (file)
@@ -25,54 +25,54 @@ INSERT INTO POINT_TBL(f1) VALUES ('(10.0,10.0');
 SELECT '' AS six, POINT_TBL.*;
 
 -- 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)';
 
 -- right of 
-SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' !> p.f1;
+SELECT '' AS three, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >> p.f1;
 
 -- above 
-SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' !^ p.f1;
+SELECT '' AS one, p.* FROM POINT_TBL p WHERE '(0.0,0.0)' >^ p.f1;
 
 -- below 
-SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 !| '(0.0, 0.0)';
+SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 <^ '(0.0, 0.0)';
 
 -- equal 
-SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 =|= '(5.1, 34.5)';
+SELECT '' AS one, p.* FROM POINT_TBL p WHERE p.f1 ~= '(5.1, 34.5)';
 
 -- point in box 
 SELECT '' AS three, p.* FROM POINT_TBL p
-   WHERE p.f1 ===> '(0,0,100,100)';
+   WHERE p.f1 @ '(0,0,100,100)'::box;
 
 SELECT '' AS three, p.* FROM POINT_TBL p
-   WHERE not on_pb(p.f1,'(0,0,100,100)'::box);
+   WHERE not p.f1 @ '(0,0,100,100)'::box;
 
 SELECT '' AS two, p.* FROM POINT_TBL p
-   WHERE on_ppath(p.f1,'[(0,0),(-10,0),(-10,10)]'::path);
+   WHERE p.f1 @ '[(0,0),(-10,0),(-10,10)]'::path;
 
-SELECT '' AS six, p.f1, p.f1 <===> '(0,0)'::point AS dist
+SELECT '' AS six, p.f1, p.f1 <-> '(0,0)'::point AS dist
    FROM POINT_TBL p
    ORDER BY dist;
 
 SET geqo TO 'off';
 
-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
    ORDER BY dist;
 
 SELECT '' AS thirty, p1.f1 AS point1, p2.f1 AS point2
    FROM POINT_TBL p1, POINT_TBL p2
-   WHERE (p1.f1 <===> p2.f1) > 3;
+   WHERE (p1.f1 <-> p2.f1) > 3;
 
 -- 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
-   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;
 
 -- 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 
-   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;
 
 RESET geqo;
index 83f453c..977e602 100644 (file)
@@ -67,17 +67,17 @@ SELECT '' AS zero, p.*
 -- contained 
 SELECT '' AS one, p.* 
    FROM POLYGON_TBL p
-   WHERE p.f1 @ '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
+   WHERE p.f1 @ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
 
 -- same 
 SELECT '' AS one, p.*
    FROM POLYGON_TBL p
-   WHERE p.f1 ~= '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
+   WHERE p.f1 ~= '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
 
 -- contains 
 SELECT '' AS one, p.*
    FROM POLYGON_TBL p
-   WHERE p.f1 ~ '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
+   WHERE p.f1 ~ '(3.0,1.0),(3.0,3.0),(1.0,0.0)'::polygon;
 
 --
 -- polygon logic