]> granicus.if.org Git - postgresql/blob - src/test/regress/sql/polygon.sql
Add inter-type regression tests for geometry, date/time, and numbers.
[postgresql] / src / test / regress / sql / polygon.sql
1 -- *************testing built-in type polygon ****************
2 --
3 -- polygon logic
4 --
5 -- 3          o
6 --            |
7 -- 2        + |
8 --         /  |
9 -- 1      # o +
10 --       /    |
11 -- 0    #-----o-+
12 --
13 --      0 1 2 3 4
14 --
15
16 CREATE TABLE POLYGON_TBL(f1 polygon);
17
18
19 INSERT INTO POLYGON_TBL(f1) VALUES ('(2.0,2.0,0.0,0.0,4.0,0.0)');
20
21 INSERT INTO POLYGON_TBL(f1) VALUES ('(3.0,3.0,1.0,1.0,3.0,0.0)');
22
23 -- degenerate polygons 
24 INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0)');
25
26 INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0,1.0,1.0)');
27 -- bad polygon input strings 
28 INSERT INTO POLYGON_TBL(f1) VALUES ('0.0');
29
30 INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0');
31
32 INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)');
33
34 INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
35
36 INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
37
38
39 SELECT '' AS four, POLYGON_TBL.*;
40
41 -- overlap 
42 SELECT '' AS three, p.*
43    FROM POLYGON_TBL p
44    WHERE p.f1 && '(3.0,3.0,1.0,1.0,3.0,0.0)';
45
46 -- left overlap 
47 SELECT '' AS four, p.* 
48    FROM POLYGON_TBL p
49    WHERE p.f1 &< '(3.0,3.0,1.0,1.0,3.0,0.0)';
50
51 -- right overlap 
52 SELECT '' AS two, p.* 
53    FROM POLYGON_TBL p
54    WHERE p.f1 &> '(3.0,3.0,1.0,1.0,3.0,0.0)';
55
56 -- left of 
57 SELECT '' AS one, p.*
58    FROM POLYGON_TBL p
59    WHERE p.f1 << '(3.0,3.0,1.0,1.0,3.0,0.0)';
60
61 -- right of 
62 SELECT '' AS zero, p.*
63    FROM POLYGON_TBL p
64    WHERE p.f1 >> '(3.0,3.0,1.0,1.0,3.0,0.0)';
65
66 -- contained 
67 SELECT '' AS one, p.* 
68    FROM POLYGON_TBL p
69    WHERE p.f1 @ '(3.0,3.0,1.0,1.0,3.0,0.0)';
70
71 -- same 
72 SELECT '' AS one, p.*
73    FROM POLYGON_TBL p
74    WHERE p.f1 ~= '(3.0,3.0,1.0,1.0,3.0,0.0)';
75
76 -- contains 
77 SELECT '' AS one, p.*
78    FROM POLYGON_TBL p
79    WHERE p.f1 ~ '(3.0,3.0,1.0,1.0,3.0,0.0)';
80
81 --
82 -- polygon logic
83 --
84 -- 3          o
85 --            |
86 -- 2        + |
87 --         /  |
88 -- 1      / o +
89 --       /    |
90 -- 0    +-----o-+
91 --
92 --      0 1 2 3 4
93 --
94 -- left of 
95 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon << '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
96
97 -- left overlap 
98 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon &< '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS true;
99
100 -- right overlap 
101 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon &> '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS true;
102
103 -- right of 
104 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon >> '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
105
106 -- contained in 
107 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon @ '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
108
109 -- contains 
110 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon ~ '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
111
112 -- same 
113 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon ~= '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS false;
114
115 -- overlap 
116 SELECT '(2.0,2.0,0.0,0.0,4.0,0.0)'::polygon && '(3.0,3.0,1.0,1.0,3.0,0.0)'::polygon AS true;
117