~ubuntu-branches/ubuntu/oneiric/postgresql-9.1/oneiric-security

« back to all changes in this revision

Viewing changes to src/test/regress/expected/polygon.out

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- POLYGON
 
3
--
 
4
-- polygon logic
 
5
--
 
6
-- 3          o
 
7
--            |
 
8
-- 2        + |
 
9
--         /  |
 
10
-- 1      # o +
 
11
--       /    |
 
12
-- 0    #-----o-+
 
13
--
 
14
--      0 1 2 3 4
 
15
--
 
16
CREATE TABLE POLYGON_TBL(f1 polygon);
 
17
INSERT INTO POLYGON_TBL(f1) VALUES ('(2.0,0.0),(2.0,4.0),(0.0,0.0)');
 
18
INSERT INTO POLYGON_TBL(f1) VALUES ('(3.0,1.0),(3.0,3.0),(1.0,0.0)');
 
19
-- degenerate polygons
 
20
INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,0.0)');
 
21
INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0,1.0),(0.0,1.0)');
 
22
-- bad polygon input strings
 
23
INSERT INTO POLYGON_TBL(f1) VALUES ('0.0');
 
24
ERROR:  invalid input syntax for type polygon: "0.0"
 
25
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('0.0');
 
26
                                            ^
 
27
INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0');
 
28
ERROR:  invalid input syntax for type polygon: "(0.0 0.0"
 
29
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('(0.0 0.0');
 
30
                                            ^
 
31
INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)');
 
32
ERROR:  invalid input syntax for type polygon: "(0,1,2)"
 
33
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2)');
 
34
                                            ^
 
35
INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
 
36
ERROR:  invalid input syntax for type polygon: "(0,1,2,3"
 
37
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('(0,1,2,3');
 
38
                                            ^
 
39
INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
 
40
ERROR:  invalid input syntax for type polygon: "asdf"
 
41
LINE 1: INSERT INTO POLYGON_TBL(f1) VALUES ('asdf');
 
42
                                            ^
 
43
SELECT '' AS four, * FROM POLYGON_TBL;
 
44
 four |         f1          
 
45
------+---------------------
 
46
      | ((2,0),(2,4),(0,0))
 
47
      | ((3,1),(3,3),(1,0))
 
48
      | ((0,0))
 
49
      | ((0,1),(0,1))
 
50
(4 rows)
 
51
 
 
52
-- overlap
 
53
SELECT '' AS three, p.*
 
54
   FROM POLYGON_TBL p
 
55
   WHERE p.f1 && '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
56
 three |         f1          
 
57
-------+---------------------
 
58
       | ((2,0),(2,4),(0,0))
 
59
       | ((3,1),(3,3),(1,0))
 
60
(2 rows)
 
61
 
 
62
-- left overlap
 
63
SELECT '' AS four, p.*
 
64
   FROM POLYGON_TBL p
 
65
   WHERE p.f1 &< '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
66
 four |         f1          
 
67
------+---------------------
 
68
      | ((2,0),(2,4),(0,0))
 
69
      | ((3,1),(3,3),(1,0))
 
70
      | ((0,0))
 
71
      | ((0,1),(0,1))
 
72
(4 rows)
 
73
 
 
74
-- right overlap
 
75
SELECT '' AS two, p.*
 
76
   FROM POLYGON_TBL p
 
77
   WHERE p.f1 &> '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
78
 two |         f1          
 
79
-----+---------------------
 
80
     | ((3,1),(3,3),(1,0))
 
81
(1 row)
 
82
 
 
83
-- left of
 
84
SELECT '' AS one, p.*
 
85
   FROM POLYGON_TBL p
 
86
   WHERE p.f1 << '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
87
 one |      f1       
 
88
-----+---------------
 
89
     | ((0,0))
 
90
     | ((0,1),(0,1))
 
91
(2 rows)
 
92
 
 
93
-- right of
 
94
SELECT '' AS zero, p.*
 
95
   FROM POLYGON_TBL p
 
96
   WHERE p.f1 >> '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
97
 zero | f1 
 
98
------+----
 
99
(0 rows)
 
100
 
 
101
-- contained
 
102
SELECT '' AS one, p.*
 
103
   FROM POLYGON_TBL p
 
104
   WHERE p.f1 <@ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
105
 one |         f1          
 
106
-----+---------------------
 
107
     | ((3,1),(3,3),(1,0))
 
108
(1 row)
 
109
 
 
110
-- same
 
111
SELECT '' AS one, p.*
 
112
   FROM POLYGON_TBL p
 
113
   WHERE p.f1 ~= polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
114
 one |         f1          
 
115
-----+---------------------
 
116
     | ((3,1),(3,3),(1,0))
 
117
(1 row)
 
118
 
 
119
-- contains
 
120
SELECT '' AS one, p.*
 
121
   FROM POLYGON_TBL p
 
122
   WHERE p.f1 @> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)';
 
123
 one |         f1          
 
124
-----+---------------------
 
125
     | ((3,1),(3,3),(1,0))
 
126
(1 row)
 
127
 
 
128
--
 
129
-- polygon logic
 
130
--
 
131
-- 3          o
 
132
--            |
 
133
-- 2        + |
 
134
--         /  |
 
135
-- 1      / o +
 
136
--       /    |
 
137
-- 0    +-----o-+
 
138
--
 
139
--      0 1 2 3 4
 
140
--
 
141
-- left of
 
142
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' << polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
143
 false 
 
144
-------
 
145
 f
 
146
(1 row)
 
147
 
 
148
-- left overlap
 
149
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' << polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
 
150
 true 
 
151
------
 
152
 f
 
153
(1 row)
 
154
 
 
155
-- right overlap
 
156
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' &> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
157
 false 
 
158
-------
 
159
 f
 
160
(1 row)
 
161
 
 
162
-- right of
 
163
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' >> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
164
 false 
 
165
-------
 
166
 f
 
167
(1 row)
 
168
 
 
169
-- contained in
 
170
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' <@ polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
171
 false 
 
172
-------
 
173
 f
 
174
(1 row)
 
175
 
 
176
-- contains
 
177
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' @> polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
178
 false 
 
179
-------
 
180
 f
 
181
(1 row)
 
182
 
 
183
--     +------------------------+
 
184
--     |    *---*               1
 
185
--     |  + |   |
 
186
--     |  2 *---*
 
187
--     +------------------------+
 
188
--                              3
 
189
--     endpoints '+' is ofr one polygon, '*' - for another
 
190
--     Edges 1-2, 2-3 are not shown on picture
 
191
SELECT '((0,4),(6,4),(1,2),(6,0),(0,0))'::polygon @> '((2,1),(2,3),(3,3),(3,1))'::polygon AS "false";
 
192
 false 
 
193
-------
 
194
 f
 
195
(1 row)
 
196
 
 
197
--     +-----------+
 
198
--     |    *---* /
 
199
--     |    |   |/
 
200
--     |    |   +
 
201
--     |    |   |\
 
202
--     |    *---* \
 
203
--     +-----------+
 
204
SELECT '((0,4),(6,4),(3,2),(6,0),(0,0))'::polygon @> '((2,1),(2,3),(3,3),(3,1))'::polygon AS "true";
 
205
 true 
 
206
------
 
207
 t
 
208
(1 row)
 
209
 
 
210
--     +-----------------+
 
211
--     |                 |
 
212
--     |   +---*---*-----+
 
213
--     |   |   |   |
 
214
--     |   +---*---*-----+
 
215
--     |                 |
 
216
--     +-----------------+
 
217
SELECT '((1,1),(1,4),(5,4),(5,3),(2,3),(2,2),(5,2),(5,1))'::polygon @> '((3,2),(3,3),(4,3),(4,2))'::polygon AS "false";
 
218
 false 
 
219
-------
 
220
 f
 
221
(1 row)
 
222
 
 
223
--     +---------+
 
224
--     |         |
 
225
--     |    *----*
 
226
--     |    |    |
 
227
--     |    *----*
 
228
--     |         |
 
229
--     +---------+
 
230
SELECT '((0,0),(0,3),(3,3),(3,0))'::polygon @> '((2,1),(2,2),(3,2),(3,1))'::polygon AS "true";
 
231
 true 
 
232
------
 
233
 t
 
234
(1 row)
 
235
 
 
236
-- same
 
237
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' ~= polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS false;
 
238
 false 
 
239
-------
 
240
 f
 
241
(1 row)
 
242
 
 
243
-- overlap
 
244
SELECT polygon '(2.0,0.0),(2.0,4.0),(0.0,0.0)' && polygon '(3.0,1.0),(3.0,3.0),(1.0,0.0)' AS true;
 
245
 true 
 
246
------
 
247
 t
 
248
(1 row)
 
249
 
 
250
--     +--------------------+
 
251
--     |    *---*               1
 
252
--     |  + |   |
 
253
--     |  2 *---*
 
254
--     +--------------------+
 
255
--                              3
 
256
--     Edges 1-2, 2-3 are not shown on picture
 
257
SELECT '((0,4),(6,4),(1,2),(6,0),(0,0))'::polygon && '((2,1),(2,3),(3,3),(3,1))'::polygon AS "true";
 
258
 true 
 
259
------
 
260
 t
 
261
(1 row)
 
262
 
 
263
--     +--+ *--*
 
264
--     |  | |  |
 
265
--     |  | *--*
 
266
--     |  +----+
 
267
--     |       |
 
268
--     +-------+
 
269
SELECT '((1,4),(1,1),(4,1),(4,2),(2,2),(2,4),(1,4))'::polygon && '((3,3),(4,3),(4,4),(3,4),(3,3))'::polygon AS "false";
 
270
 false 
 
271
-------
 
272
 f
 
273
(1 row)
 
274
 
 
275
SELECT '((200,800),(800,800),(800,200),(200,200))' &&  '(1000,1000,0,0)'::polygon AS "true";
 
276
 true 
 
277
------
 
278
 t
 
279
(1 row)
 
280