From: Thomas G. Lockhart Date: Tue, 29 Jul 1997 16:22:48 +0000 (+0000) Subject: Start adding tests for new geometry functions. X-Git-Tag: REL9_0_0~28612 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3d5dd9bdd9eff7c7c2cb922bd35a7262640a9c26;p=pg-rex%2Fsyncrep.git Start adding tests for new geometry functions. Not all cleaned up yet. --- diff --git a/src/test/regress/sql/circle.sql b/src/test/regress/sql/circle.sql index bd6ad9c091..b430f72132 100644 --- a/src/test/regress/sql/circle.sql +++ b/src/test/regress/sql/circle.sql @@ -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; diff --git a/src/test/regress/sql/geometry.sql b/src/test/regress/sql/geometry.sql index bd2b88a1a7..a560f24f02 100644 --- a/src/test/regress/sql/geometry.sql +++ b/src/test/regress/sql/geometry.sql @@ -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; diff --git a/src/test/regress/sql/lseg.sql b/src/test/regress/sql/lseg.sql index a70b5c2adf..b43e626706 100644 --- a/src/test/regress/sql/lseg.sql +++ b/src/test/regress/sql/lseg.sql @@ -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; diff --git a/src/test/regress/sql/point.sql b/src/test/regress/sql/point.sql index ac5751b5f6..8bd8569900 100644 --- a/src/test/regress/sql/point.sql +++ b/src/test/regress/sql/point.sql @@ -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; diff --git a/src/test/regress/sql/polygon.sql b/src/test/regress/sql/polygon.sql index 83f453c908..977e602348 100644 --- a/src/test/regress/sql/polygon.sql +++ b/src/test/regress/sql/polygon.sql @@ -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