~clint-fewbar/ubuntu/natty/mysql-5.1/merge-5.1.49-2

« back to all changes in this revision

Viewing changes to mysql-test/suite/innodb_plugin/r/innodb_gis.result

  • Committer: Bazaar Package Importer
  • Author(s): Chuck Short
  • Date: 2010-08-04 13:18:27 UTC
  • mfrom: (1.2.2 upstream) (2.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20100804131827-4tjg88vr9dd49s3k
Tags: 5.1.49-1ubuntu1
* Merge from debian unstable:
  + debian/control:
     * Update maintainer according to spec.
     * Move section from "misc" to "database".
     * Added libmysqlclient16-dev an empty transitional package. 
     * Added mysql-client-core-5.1 package.
     * Suggest mailx for mysql-server-5.1
     * Add mysql-testsuite package so you can run the testsuite seperately.
  + debian/additions/my.cnf:
    * Remove language options. Error message files are located in a different directory in Mysql
      5.0. Setting the language option to use /usr/share/mysql/english breaks Mysql 5.0. Both 5.0
      and 5.1 use a different value that works. (LP: #316974)
  + Add apparmor profile:
    + debian/apparmor-profile: apparmor-profile
    + debian/rules, debian/mysql-server-5.1.files: install apparmor profile
    + debian/mysql-server-5.1.dirs: add etc/apparmor.d/fore-complain
    + debian/mysql-server-5.1.postrm: remove symlink in force-complain/ on purge.
    + debian/mysql-server-5.1.README.Debian: add apparmor documentation.
    + debian/additions/my.cnf: Add warning about apparmor. (LP: #201799)
    + debian/mysql-server-5.1.postinst: reload apparmor profiles
  * Convert the package from sysvinit to upstart:
    + debian/mysql-server-5.1.mysql.upstart: Add upstart script.
    + debian/mysql-server-5.1.mysql.init: Dropped, unused now with upstart.
    + debian/additions/mysqld_safe_syslog.cnf: Dropped, unused now with upstart.
    + debian/additons/my.cnf: Remove pid declaration and setup error logging to /var/log/mysql since
      we're not piping anything around logger anymore.
    + debian/rules, debian/mysql-server-5.1.logcheck.ignore.{paranoid,worstation},
      debian/mysql-server-5.1.logcheck.ignore.server: : Remove references to mysqld_safe
    + debian/patches/38_scripts_mysqld_safe.sh_signals.dpatch: Dropped
  * Added -fno-strict-aliasing to CFLAGS to get around mysql testsuite build failures.
  * Add Apport hook (LP: #354188):
    + debian/mysql-server-5.1.py: apport package hook
    + debian/rules: Make it installable
  * debian/mysql-server-5.1.mysql-server.logrotate: Check to see if mysql is running before
    running logrotate. (LP: #513135)
  * Make the testsuite installable. (LP: #530752)
    + debian/mysql-server-5.1.files, debian/rules: install apport package hook
  * debian/mysql-server-5.1.preinst: Set mysql user's home directory
    to /nonexistent to protect against having the /var/lib/mysql
    user-writeable. If an attacker can trick mysqld into creating
    dot files in the home directory, he could do .rhost-like attacks
    on the system. (LP: #293258)
  * debian/control: mysql-client-5.1 should depend on mysql-core-client-5.1.
    (LP: #590952) 

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
SET storage_engine=innodb;
 
2
DROP TABLE IF EXISTS t1, gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
 
3
CREATE TABLE gis_point  (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POINT);
 
4
CREATE TABLE gis_line  (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g LINESTRING);
 
5
CREATE TABLE gis_polygon   (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g POLYGON);
 
6
CREATE TABLE gis_multi_point (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTIPOINT);
 
7
CREATE TABLE gis_multi_line (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTILINESTRING);
 
8
CREATE TABLE gis_multi_polygon  (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g MULTIPOLYGON);
 
9
CREATE TABLE gis_geometrycollection  (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g GEOMETRYCOLLECTION);
 
10
CREATE TABLE gis_geometry (fid INTEGER PRIMARY KEY AUTO_INCREMENT, g GEOMETRY);
 
11
SHOW CREATE TABLE gis_point;
 
12
Table   Create Table
 
13
gis_point       CREATE TABLE `gis_point` (
 
14
  `fid` int(11) NOT NULL AUTO_INCREMENT,
 
15
  `g` point DEFAULT NULL,
 
16
  PRIMARY KEY (`fid`)
 
17
) ENGINE=InnoDB DEFAULT CHARSET=latin1
 
18
SHOW FIELDS FROM gis_point;
 
19
Field   Type    Null    Key     Default Extra
 
20
fid     int(11) NO      PRI     NULL    auto_increment
 
21
g       point   YES             NULL    
 
22
SHOW FIELDS FROM gis_line;
 
23
Field   Type    Null    Key     Default Extra
 
24
fid     int(11) NO      PRI     NULL    auto_increment
 
25
g       linestring      YES             NULL    
 
26
SHOW FIELDS FROM gis_polygon;
 
27
Field   Type    Null    Key     Default Extra
 
28
fid     int(11) NO      PRI     NULL    auto_increment
 
29
g       polygon YES             NULL    
 
30
SHOW FIELDS FROM gis_multi_point;
 
31
Field   Type    Null    Key     Default Extra
 
32
fid     int(11) NO      PRI     NULL    auto_increment
 
33
g       multipoint      YES             NULL    
 
34
SHOW FIELDS FROM gis_multi_line;
 
35
Field   Type    Null    Key     Default Extra
 
36
fid     int(11) NO      PRI     NULL    auto_increment
 
37
g       multilinestring YES             NULL    
 
38
SHOW FIELDS FROM gis_multi_polygon;
 
39
Field   Type    Null    Key     Default Extra
 
40
fid     int(11) NO      PRI     NULL    auto_increment
 
41
g       multipolygon    YES             NULL    
 
42
SHOW FIELDS FROM gis_geometrycollection;
 
43
Field   Type    Null    Key     Default Extra
 
44
fid     int(11) NO      PRI     NULL    auto_increment
 
45
g       geometrycollection      YES             NULL    
 
46
SHOW FIELDS FROM gis_geometry;
 
47
Field   Type    Null    Key     Default Extra
 
48
fid     int(11) NO      PRI     NULL    auto_increment
 
49
g       geometry        YES             NULL    
 
50
INSERT INTO gis_point VALUES 
 
51
(101, PointFromText('POINT(10 10)')),
 
52
(102, PointFromText('POINT(20 10)')),
 
53
(103, PointFromText('POINT(20 20)')),
 
54
(104, PointFromWKB(AsWKB(PointFromText('POINT(10 20)'))));
 
55
INSERT INTO gis_line VALUES
 
56
(105, LineFromText('LINESTRING(0 0,0 10,10 0)')),
 
57
(106, LineStringFromText('LINESTRING(10 10,20 10,20 20,10 20,10 10)')),
 
58
(107, LineStringFromWKB(LineString(Point(10, 10), Point(40, 10))));
 
59
INSERT INTO gis_polygon VALUES
 
60
(108, PolygonFromText('POLYGON((10 10,20 10,20 20,10 20,10 10))')),
 
61
(109, PolyFromText('POLYGON((0 0,50 0,50 50,0 50,0 0), (10 10,20 10,20 20,10 20,10 10))')),
 
62
(110, PolyFromWKB(Polygon(LineString(Point(0, 0), Point(30, 0), Point(30, 30), Point(0, 0)))));
 
63
INSERT INTO gis_multi_point VALUES
 
64
(111, MultiPointFromText('MULTIPOINT(0 0,10 10,10 20,20 20)')),
 
65
(112, MPointFromText('MULTIPOINT(1 1,11 11,11 21,21 21)')),
 
66
(113, MPointFromWKB(MultiPoint(Point(3, 6), Point(4, 10))));
 
67
INSERT INTO gis_multi_line VALUES
 
68
(114, MultiLineStringFromText('MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))')),
 
69
(115, MLineFromText('MULTILINESTRING((10 48,10 21,10 0))')),
 
70
(116, MLineFromWKB(MultiLineString(LineString(Point(1, 2), Point(3, 5)), LineString(Point(2, 5), Point(5, 8), Point(21, 7)))));
 
71
INSERT INTO gis_multi_polygon VALUES
 
72
(117, MultiPolygonFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
 
73
(118, MPolyFromText('MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))')),
 
74
(119, MPolyFromWKB(MultiPolygon(Polygon(LineString(Point(0, 3), Point(3, 3), Point(3, 0), Point(0, 3))))));
 
75
INSERT INTO gis_geometrycollection VALUES
 
76
(120, GeomCollFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
 
77
(121, GeometryFromWKB(GeometryCollection(Point(44, 6), LineString(Point(3, 6), Point(7, 9)))));
 
78
INSERT into gis_geometry SELECT * FROM gis_point;
 
79
INSERT into gis_geometry SELECT * FROM gis_line;
 
80
INSERT into gis_geometry SELECT * FROM gis_polygon;
 
81
INSERT into gis_geometry SELECT * FROM gis_multi_point;
 
82
INSERT into gis_geometry SELECT * FROM gis_multi_line;
 
83
INSERT into gis_geometry SELECT * FROM gis_multi_polygon;
 
84
INSERT into gis_geometry SELECT * FROM gis_geometrycollection;
 
85
SELECT fid, AsText(g) FROM gis_point ORDER by fid;
 
86
fid     AsText(g)
 
87
101     POINT(10 10)
 
88
102     POINT(20 10)
 
89
103     POINT(20 20)
 
90
104     POINT(10 20)
 
91
SELECT fid, AsText(g) FROM gis_line ORDER by fid;
 
92
fid     AsText(g)
 
93
105     LINESTRING(0 0,0 10,10 0)
 
94
106     LINESTRING(10 10,20 10,20 20,10 20,10 10)
 
95
107     LINESTRING(10 10,40 10)
 
96
SELECT fid, AsText(g) FROM gis_polygon ORDER by fid;
 
97
fid     AsText(g)
 
98
108     POLYGON((10 10,20 10,20 20,10 20,10 10))
 
99
109     POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
 
100
110     POLYGON((0 0,30 0,30 30,0 0))
 
101
SELECT fid, AsText(g) FROM gis_multi_point ORDER by fid;
 
102
fid     AsText(g)
 
103
111     MULTIPOINT(0 0,10 10,10 20,20 20)
 
104
112     MULTIPOINT(1 1,11 11,11 21,21 21)
 
105
113     MULTIPOINT(3 6,4 10)
 
106
SELECT fid, AsText(g) FROM gis_multi_line ORDER by fid;
 
107
fid     AsText(g)
 
108
114     MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
 
109
115     MULTILINESTRING((10 48,10 21,10 0))
 
110
116     MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
 
111
SELECT fid, AsText(g) FROM gis_multi_polygon ORDER by fid;
 
112
fid     AsText(g)
 
113
117     MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
 
114
118     MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
 
115
119     MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
 
116
SELECT fid, AsText(g) FROM gis_geometrycollection ORDER by fid;
 
117
fid     AsText(g)
 
118
120     GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
 
119
121     GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
 
120
SELECT fid, AsText(g) FROM gis_geometry ORDER by fid;
 
121
fid     AsText(g)
 
122
101     POINT(10 10)
 
123
102     POINT(20 10)
 
124
103     POINT(20 20)
 
125
104     POINT(10 20)
 
126
105     LINESTRING(0 0,0 10,10 0)
 
127
106     LINESTRING(10 10,20 10,20 20,10 20,10 10)
 
128
107     LINESTRING(10 10,40 10)
 
129
108     POLYGON((10 10,20 10,20 20,10 20,10 10))
 
130
109     POLYGON((0 0,50 0,50 50,0 50,0 0),(10 10,20 10,20 20,10 20,10 10))
 
131
110     POLYGON((0 0,30 0,30 30,0 0))
 
132
111     MULTIPOINT(0 0,10 10,10 20,20 20)
 
133
112     MULTIPOINT(1 1,11 11,11 21,21 21)
 
134
113     MULTIPOINT(3 6,4 10)
 
135
114     MULTILINESTRING((10 48,10 21,10 0),(16 0,16 23,16 48))
 
136
115     MULTILINESTRING((10 48,10 21,10 0))
 
137
116     MULTILINESTRING((1 2,3 5),(2 5,5 8,21 7))
 
138
117     MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
 
139
118     MULTIPOLYGON(((28 26,28 0,84 0,84 42,28 26),(52 18,66 23,73 9,48 6,52 18)),((59 18,67 18,67 13,59 13,59 18)))
 
140
119     MULTIPOLYGON(((0 3,3 3,3 0,0 3)))
 
141
120     GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
 
142
121     GEOMETRYCOLLECTION(POINT(44 6),LINESTRING(3 6,7 9))
 
143
SELECT fid, Dimension(g) FROM gis_geometry ORDER by fid;
 
144
fid     Dimension(g)
 
145
101     0
 
146
102     0
 
147
103     0
 
148
104     0
 
149
105     1
 
150
106     1
 
151
107     1
 
152
108     2
 
153
109     2
 
154
110     2
 
155
111     0
 
156
112     0
 
157
113     0
 
158
114     1
 
159
115     1
 
160
116     1
 
161
117     2
 
162
118     2
 
163
119     2
 
164
120     1
 
165
121     1
 
166
SELECT fid, GeometryType(g) FROM gis_geometry ORDER by fid;
 
167
fid     GeometryType(g)
 
168
101     POINT
 
169
102     POINT
 
170
103     POINT
 
171
104     POINT
 
172
105     LINESTRING
 
173
106     LINESTRING
 
174
107     LINESTRING
 
175
108     POLYGON
 
176
109     POLYGON
 
177
110     POLYGON
 
178
111     MULTIPOINT
 
179
112     MULTIPOINT
 
180
113     MULTIPOINT
 
181
114     MULTILINESTRING
 
182
115     MULTILINESTRING
 
183
116     MULTILINESTRING
 
184
117     MULTIPOLYGON
 
185
118     MULTIPOLYGON
 
186
119     MULTIPOLYGON
 
187
120     GEOMETRYCOLLECTION
 
188
121     GEOMETRYCOLLECTION
 
189
SELECT fid, IsEmpty(g) FROM gis_geometry ORDER by fid;
 
190
fid     IsEmpty(g)
 
191
101     0
 
192
102     0
 
193
103     0
 
194
104     0
 
195
105     0
 
196
106     0
 
197
107     0
 
198
108     0
 
199
109     0
 
200
110     0
 
201
111     0
 
202
112     0
 
203
113     0
 
204
114     0
 
205
115     0
 
206
116     0
 
207
117     0
 
208
118     0
 
209
119     0
 
210
120     0
 
211
121     0
 
212
SELECT fid, AsText(Envelope(g)) FROM gis_geometry ORDER by fid;
 
213
fid     AsText(Envelope(g))
 
214
101     POLYGON((10 10,10 10,10 10,10 10,10 10))
 
215
102     POLYGON((20 10,20 10,20 10,20 10,20 10))
 
216
103     POLYGON((20 20,20 20,20 20,20 20,20 20))
 
217
104     POLYGON((10 20,10 20,10 20,10 20,10 20))
 
218
105     POLYGON((0 0,10 0,10 10,0 10,0 0))
 
219
106     POLYGON((10 10,20 10,20 20,10 20,10 10))
 
220
107     POLYGON((10 10,40 10,40 10,10 10,10 10))
 
221
108     POLYGON((10 10,20 10,20 20,10 20,10 10))
 
222
109     POLYGON((0 0,50 0,50 50,0 50,0 0))
 
223
110     POLYGON((0 0,30 0,30 30,0 30,0 0))
 
224
111     POLYGON((0 0,20 0,20 20,0 20,0 0))
 
225
112     POLYGON((1 1,21 1,21 21,1 21,1 1))
 
226
113     POLYGON((3 6,4 6,4 10,3 10,3 6))
 
227
114     POLYGON((10 0,16 0,16 48,10 48,10 0))
 
228
115     POLYGON((10 0,10 0,10 48,10 48,10 0))
 
229
116     POLYGON((1 2,21 2,21 8,1 8,1 2))
 
230
117     POLYGON((28 0,84 0,84 42,28 42,28 0))
 
231
118     POLYGON((28 0,84 0,84 42,28 42,28 0))
 
232
119     POLYGON((0 0,3 0,3 3,0 3,0 0))
 
233
120     POLYGON((0 0,10 0,10 10,0 10,0 0))
 
234
121     POLYGON((3 6,44 6,44 9,3 9,3 6))
 
235
explain extended select Dimension(g), GeometryType(g), IsEmpty(g), AsText(Envelope(g)) from gis_geometry;
 
236
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
237
1       SIMPLE  gis_geometry    ALL     NULL    NULL    NULL    NULL    21      100.00  
 
238
Warnings:
 
239
Note    1003    select dimension(`test`.`gis_geometry`.`g`) AS `Dimension(g)`,geometrytype(`test`.`gis_geometry`.`g`) AS `GeometryType(g)`,isempty(`test`.`gis_geometry`.`g`) AS `IsEmpty(g)`,astext(envelope(`test`.`gis_geometry`.`g`)) AS `AsText(Envelope(g))` from `test`.`gis_geometry`
 
240
SELECT fid, X(g) FROM gis_point ORDER by fid;
 
241
fid     X(g)
 
242
101     10
 
243
102     20
 
244
103     20
 
245
104     10
 
246
SELECT fid, Y(g) FROM gis_point ORDER by fid;
 
247
fid     Y(g)
 
248
101     10
 
249
102     10
 
250
103     20
 
251
104     20
 
252
explain extended select X(g),Y(g) FROM gis_point;
 
253
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
254
1       SIMPLE  gis_point       ALL     NULL    NULL    NULL    NULL    4       100.00  
 
255
Warnings:
 
256
Note    1003    select x(`test`.`gis_point`.`g`) AS `X(g)`,y(`test`.`gis_point`.`g`) AS `Y(g)` from `test`.`gis_point`
 
257
SELECT fid, AsText(StartPoint(g)) FROM gis_line ORDER by fid;
 
258
fid     AsText(StartPoint(g))
 
259
105     POINT(0 0)
 
260
106     POINT(10 10)
 
261
107     POINT(10 10)
 
262
SELECT fid, AsText(EndPoint(g)) FROM gis_line ORDER by fid;
 
263
fid     AsText(EndPoint(g))
 
264
105     POINT(10 0)
 
265
106     POINT(10 10)
 
266
107     POINT(40 10)
 
267
SELECT fid, GLength(g) FROM gis_line ORDER by fid;
 
268
fid     GLength(g)
 
269
105     24.142135623731
 
270
106     40
 
271
107     30
 
272
SELECT fid, NumPoints(g) FROM gis_line ORDER by fid;
 
273
fid     NumPoints(g)
 
274
105     3
 
275
106     5
 
276
107     2
 
277
SELECT fid, AsText(PointN(g, 2)) FROM gis_line ORDER by fid;
 
278
fid     AsText(PointN(g, 2))
 
279
105     POINT(0 10)
 
280
106     POINT(20 10)
 
281
107     POINT(40 10)
 
282
SELECT fid, IsClosed(g) FROM gis_line ORDER by fid;
 
283
fid     IsClosed(g)
 
284
105     0
 
285
106     1
 
286
107     0
 
287
explain extended select AsText(StartPoint(g)),AsText(EndPoint(g)),GLength(g),NumPoints(g),AsText(PointN(g, 2)),IsClosed(g) FROM gis_line;
 
288
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
289
1       SIMPLE  gis_line        ALL     NULL    NULL    NULL    NULL    3       100.00  
 
290
Warnings:
 
291
Note    1003    select astext(startpoint(`test`.`gis_line`.`g`)) AS `AsText(StartPoint(g))`,astext(endpoint(`test`.`gis_line`.`g`)) AS `AsText(EndPoint(g))`,glength(`test`.`gis_line`.`g`) AS `GLength(g)`,numpoints(`test`.`gis_line`.`g`) AS `NumPoints(g)`,astext(pointn(`test`.`gis_line`.`g`,2)) AS `AsText(PointN(g, 2))`,isclosed(`test`.`gis_line`.`g`) AS `IsClosed(g)` from `test`.`gis_line`
 
292
SELECT fid, AsText(Centroid(g)) FROM gis_polygon ORDER by fid;
 
293
fid     AsText(Centroid(g))
 
294
108     POINT(15 15)
 
295
109     POINT(25.4166666666667 25.4166666666667)
 
296
110     POINT(20 10)
 
297
SELECT fid, Area(g) FROM gis_polygon ORDER by fid;
 
298
fid     Area(g)
 
299
108     100
 
300
109     2400
 
301
110     450
 
302
SELECT fid, AsText(ExteriorRing(g)) FROM gis_polygon ORDER by fid;
 
303
fid     AsText(ExteriorRing(g))
 
304
108     LINESTRING(10 10,20 10,20 20,10 20,10 10)
 
305
109     LINESTRING(0 0,50 0,50 50,0 50,0 0)
 
306
110     LINESTRING(0 0,30 0,30 30,0 0)
 
307
SELECT fid, NumInteriorRings(g) FROM gis_polygon ORDER by fid;
 
308
fid     NumInteriorRings(g)
 
309
108     0
 
310
109     1
 
311
110     0
 
312
SELECT fid, AsText(InteriorRingN(g, 1)) FROM gis_polygon ORDER by fid;
 
313
fid     AsText(InteriorRingN(g, 1))
 
314
108     NULL
 
315
109     LINESTRING(10 10,20 10,20 20,10 20,10 10)
 
316
110     NULL
 
317
explain extended select AsText(Centroid(g)),Area(g),AsText(ExteriorRing(g)),NumInteriorRings(g),AsText(InteriorRingN(g, 1)) FROM gis_polygon;
 
318
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
319
1       SIMPLE  gis_polygon     ALL     NULL    NULL    NULL    NULL    3       100.00  
 
320
Warnings:
 
321
Note    1003    select astext(centroid(`test`.`gis_polygon`.`g`)) AS `AsText(Centroid(g))`,area(`test`.`gis_polygon`.`g`) AS `Area(g)`,astext(exteriorring(`test`.`gis_polygon`.`g`)) AS `AsText(ExteriorRing(g))`,numinteriorrings(`test`.`gis_polygon`.`g`) AS `NumInteriorRings(g)`,astext(interiorringn(`test`.`gis_polygon`.`g`,1)) AS `AsText(InteriorRingN(g, 1))` from `test`.`gis_polygon`
 
322
SELECT fid, IsClosed(g) FROM gis_multi_line ORDER by fid;
 
323
fid     IsClosed(g)
 
324
114     0
 
325
115     0
 
326
116     0
 
327
SELECT fid, AsText(Centroid(g)) FROM gis_multi_polygon ORDER by fid;
 
328
fid     AsText(Centroid(g))
 
329
117     POINT(55.5885277530424 17.426536064114)
 
330
118     POINT(55.5885277530424 17.426536064114)
 
331
119     POINT(2 2)
 
332
SELECT fid, Area(g) FROM gis_multi_polygon ORDER by fid;
 
333
fid     Area(g)
 
334
117     1684.5
 
335
118     1684.5
 
336
119     4.5
 
337
SELECT fid, NumGeometries(g) from gis_multi_point ORDER by fid;
 
338
fid     NumGeometries(g)
 
339
111     4
 
340
112     4
 
341
113     2
 
342
SELECT fid, NumGeometries(g) from gis_multi_line ORDER by fid;
 
343
fid     NumGeometries(g)
 
344
114     2
 
345
115     1
 
346
116     2
 
347
SELECT fid, NumGeometries(g) from gis_multi_polygon ORDER by fid;
 
348
fid     NumGeometries(g)
 
349
117     2
 
350
118     2
 
351
119     1
 
352
SELECT fid, NumGeometries(g) from gis_geometrycollection ORDER by fid;
 
353
fid     NumGeometries(g)
 
354
120     2
 
355
121     2
 
356
explain extended SELECT fid, NumGeometries(g) from gis_multi_point;
 
357
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
358
1       SIMPLE  gis_multi_point ALL     NULL    NULL    NULL    NULL    3       100.00  
 
359
Warnings:
 
360
Note    1003    select `test`.`gis_multi_point`.`fid` AS `fid`,numgeometries(`test`.`gis_multi_point`.`g`) AS `NumGeometries(g)` from `test`.`gis_multi_point`
 
361
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point ORDER by fid;
 
362
fid     AsText(GeometryN(g, 2))
 
363
111     POINT(10 10)
 
364
112     POINT(11 11)
 
365
113     POINT(4 10)
 
366
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_line ORDER by fid;
 
367
fid     AsText(GeometryN(g, 2))
 
368
114     LINESTRING(16 0,16 23,16 48)
 
369
115     NULL
 
370
116     LINESTRING(2 5,5 8,21 7)
 
371
SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_polygon ORDER by fid;
 
372
fid     AsText(GeometryN(g, 2))
 
373
117     POLYGON((59 18,67 18,67 13,59 13,59 18))
 
374
118     POLYGON((59 18,67 18,67 13,59 13,59 18))
 
375
119     NULL
 
376
SELECT fid, AsText(GeometryN(g, 2)) from gis_geometrycollection ORDER by fid;
 
377
fid     AsText(GeometryN(g, 2))
 
378
120     LINESTRING(0 0,10 10)
 
379
121     LINESTRING(3 6,7 9)
 
380
SELECT fid, AsText(GeometryN(g, 1)) from gis_geometrycollection ORDER by fid;
 
381
fid     AsText(GeometryN(g, 1))
 
382
120     POINT(0 0)
 
383
121     POINT(44 6)
 
384
explain extended SELECT fid, AsText(GeometryN(g, 2)) from gis_multi_point;
 
385
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
386
1       SIMPLE  gis_multi_point ALL     NULL    NULL    NULL    NULL    3       100.00  
 
387
Warnings:
 
388
Note    1003    select `test`.`gis_multi_point`.`fid` AS `fid`,astext(geometryn(`test`.`gis_multi_point`.`g`,2)) AS `AsText(GeometryN(g, 2))` from `test`.`gis_multi_point`
 
389
SELECT g1.fid as first, g2.fid as second,
 
390
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
 
391
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 
392
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 
393
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
 
394
first   second  w       c       o       e       d       t       i       r
 
395
120     120     1       1       0       1       0       0       1       0
 
396
120     121     0       0       1       0       0       0       1       0
 
397
121     120     0       0       1       0       0       0       1       0
 
398
121     121     1       1       0       1       0       0       1       0
 
399
explain extended SELECT g1.fid as first, g2.fid as second,
 
400
Within(g1.g, g2.g) as w, Contains(g1.g, g2.g) as c, Overlaps(g1.g, g2.g) as o,
 
401
Equals(g1.g, g2.g) as e, Disjoint(g1.g, g2.g) as d, Touches(g1.g, g2.g) as t,
 
402
Intersects(g1.g, g2.g) as i, Crosses(g1.g, g2.g) as r
 
403
FROM gis_geometrycollection g1, gis_geometrycollection g2 ORDER BY first, second;
 
404
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
405
1       SIMPLE  g1      ALL     NULL    NULL    NULL    NULL    2       100.00  Using temporary; Using filesort
 
406
1       SIMPLE  g2      ALL     NULL    NULL    NULL    NULL    2       100.00  Using join buffer
 
407
Warnings:
 
408
Note    1003    select `test`.`g1`.`fid` AS `first`,`test`.`g2`.`fid` AS `second`,within(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `w`,contains(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `c`,overlaps(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `o`,equals(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `e`,disjoint(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `d`,touches(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `t`,intersects(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `i`,crosses(`test`.`g1`.`g`,`test`.`g2`.`g`) AS `r` from `test`.`gis_geometrycollection` `g1` join `test`.`gis_geometrycollection` `g2` order by `test`.`g1`.`fid`,`test`.`g2`.`fid`
 
409
DROP TABLE gis_point, gis_line, gis_polygon, gis_multi_point, gis_multi_line, gis_multi_polygon, gis_geometrycollection, gis_geometry;
 
410
CREATE TABLE t1 (
 
411
a INTEGER PRIMARY KEY AUTO_INCREMENT,
 
412
gp  point,
 
413
ln  linestring,
 
414
pg  polygon,
 
415
mp  multipoint,
 
416
mln multilinestring,
 
417
mpg multipolygon,
 
418
gc  geometrycollection,
 
419
gm  geometry
 
420
);
 
421
SHOW FIELDS FROM t1;
 
422
Field   Type    Null    Key     Default Extra
 
423
a       int(11) NO      PRI     NULL    auto_increment
 
424
gp      point   YES             NULL    
 
425
ln      linestring      YES             NULL    
 
426
pg      polygon YES             NULL    
 
427
mp      multipoint      YES             NULL    
 
428
mln     multilinestring YES             NULL    
 
429
mpg     multipolygon    YES             NULL    
 
430
gc      geometrycollection      YES             NULL    
 
431
gm      geometry        YES             NULL    
 
432
ALTER TABLE t1 ADD fid INT;
 
433
SHOW FIELDS FROM t1;
 
434
Field   Type    Null    Key     Default Extra
 
435
a       int(11) NO      PRI     NULL    auto_increment
 
436
gp      point   YES             NULL    
 
437
ln      linestring      YES             NULL    
 
438
pg      polygon YES             NULL    
 
439
mp      multipoint      YES             NULL    
 
440
mln     multilinestring YES             NULL    
 
441
mpg     multipolygon    YES             NULL    
 
442
gc      geometrycollection      YES             NULL    
 
443
gm      geometry        YES             NULL    
 
444
fid     int(11) YES             NULL    
 
445
DROP TABLE t1;
 
446
create table t1 (pk integer primary key auto_increment, a geometry not null);
 
447
insert into t1 (a) values (GeomFromText('Point(1 2)'));
 
448
insert into t1 (a) values ('Garbage');
 
449
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
 
450
insert IGNORE into t1 (a) values ('Garbage');
 
451
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
 
452
drop table t1;
 
453
create table t1 (pk integer primary key auto_increment, fl geometry not null);
 
454
insert into t1 (fl) values (1);
 
455
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
 
456
insert into t1 (fl) values (1.11);
 
457
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
 
458
insert into t1 (fl) values ("qwerty");
 
459
ERROR 22003: Cannot get geometry object from data you send to the GEOMETRY field
 
460
insert into t1 (fl) values (pointfromtext('point(1,1)'));
 
461
ERROR 23000: Column 'fl' cannot be null
 
462
drop table t1;
 
463
End of 4.1 tests
 
464
CREATE TABLE t1 (name VARCHAR(100), square GEOMETRY);
 
465
INSERT INTO t1 VALUES("center", GeomFromText('POLYGON (( 0 0, 0 2, 2 2, 2 0, 0 0))'));
 
466
INSERT INTO t1 VALUES("small",  GeomFromText('POLYGON (( 0 0, 0 1, 1 1, 1 0, 0 0))'));
 
467
INSERT INTO t1 VALUES("big",    GeomFromText('POLYGON (( 0 0, 0 3, 3 3, 3 0, 0 0))'));
 
468
INSERT INTO t1 VALUES("up",     GeomFromText('POLYGON (( 0 1, 0 3, 2 3, 2 1, 0 1))'));
 
469
INSERT INTO t1 VALUES("up2",    GeomFromText('POLYGON (( 0 2, 0 4, 2 4, 2 2, 0 2))'));
 
470
INSERT INTO t1 VALUES("up3",    GeomFromText('POLYGON (( 0 3, 0 5, 2 5, 2 3, 0 3))'));
 
471
INSERT INTO t1 VALUES("down",   GeomFromText('POLYGON (( 0 -1, 0  1, 2  1, 2 -1, 0 -1))'));
 
472
INSERT INTO t1 VALUES("down2",  GeomFromText('POLYGON (( 0 -2, 0  0, 2  0, 2 -2, 0 -2))'));
 
473
INSERT INTO t1 VALUES("down3",  GeomFromText('POLYGON (( 0 -3, 0 -1, 2 -1, 2 -3, 0 -3))'));
 
474
INSERT INTO t1 VALUES("right",  GeomFromText('POLYGON (( 1 0, 1 2, 3 2, 3 0, 1 0))'));
 
475
INSERT INTO t1 VALUES("right2", GeomFromText('POLYGON (( 2 0, 2 2, 4 2, 4 0, 2 0))'));
 
476
INSERT INTO t1 VALUES("right3", GeomFromText('POLYGON (( 3 0, 3 2, 5 2, 5 0, 3 0))'));
 
477
INSERT INTO t1 VALUES("left",   GeomFromText('POLYGON (( -1 0, -1 2,  1 2,  1 0, -1 0))'));
 
478
INSERT INTO t1 VALUES("left2",  GeomFromText('POLYGON (( -2 0, -2 2,  0 2,  0 0, -2 0))'));
 
479
INSERT INTO t1 VALUES("left3",  GeomFromText('POLYGON (( -3 0, -3 2, -1 2, -1 0, -3 0))'));
 
480
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrcontains  FROM t1 a1 JOIN t1 a2 ON MBRContains(   a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
481
mbrcontains
 
482
center,small
 
483
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrdisjoint  FROM t1 a1 JOIN t1 a2 ON MBRDisjoint(   a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
484
mbrdisjoint
 
485
down3,left3,right3,up3
 
486
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrequal     FROM t1 a1 JOIN t1 a2 ON MBREqual(      a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
487
mbrequal
 
488
center
 
489
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrintersect FROM t1 a1 JOIN t1 a2 ON MBRIntersects( a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
490
mbrintersect
 
491
big,center,down,down2,left,left2,right,right2,small,up,up2
 
492
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbroverlaps  FROM t1 a1 JOIN t1 a2 ON MBROverlaps(   a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
493
mbroverlaps
 
494
down,left,right,up
 
495
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrtouches   FROM t1 a1 JOIN t1 a2 ON MBRTouches(    a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
496
mbrtouches
 
497
down2,left2,right2,up2
 
498
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS mbrwithin    FROM t1 a1 JOIN t1 a2 ON MBRWithin(     a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
499
mbrwithin
 
500
big,center
 
501
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS contains     FROM t1 a1 JOIN t1 a2 ON Contains(      a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
502
contains
 
503
center,small
 
504
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS disjoint     FROM t1 a1 JOIN t1 a2 ON Disjoint(      a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
505
disjoint
 
506
down3,left3,right3,up3
 
507
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS equals       FROM t1 a1 JOIN t1 a2 ON Equals(        a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
508
equals
 
509
center
 
510
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS intersect    FROM t1 a1 JOIN t1 a2 ON Intersects(    a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
511
intersect
 
512
big,center,down,down2,left,left2,right,right2,small,up,up2
 
513
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS overlaps     FROM t1 a1 JOIN t1 a2 ON Overlaps(      a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
514
overlaps
 
515
down,left,right,up
 
516
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS touches      FROM t1 a1 JOIN t1 a2 ON Touches(       a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
517
touches
 
518
down2,left2,right2,up2
 
519
SELECT GROUP_CONCAT(a2.name ORDER BY a2.name) AS within       FROM t1 a1 JOIN t1 a2 ON Within(        a1.square, a2.square) WHERE a1.name = "center" GROUP BY a1.name;
 
520
within
 
521
big,center
 
522
SET @vert1   = GeomFromText('POLYGON ((0 -2, 0 2, 0 -2))');
 
523
SET @horiz1  = GeomFromText('POLYGON ((-2 0, 2 0, -2 0))');
 
524
SET @horiz2 = GeomFromText('POLYGON ((-1 0, 3 0, -1 0))');
 
525
SET @horiz3 = GeomFromText('POLYGON ((2 0, 3 0, 2 0))');
 
526
SET @point1 = GeomFromText('POLYGON ((0 0))');
 
527
SET @point2 = GeomFromText('POLYGON ((-2 0))');
 
528
SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS overlaps FROM t1 a1 WHERE Overlaps(a1.square, @vert1) GROUP BY a1.name;
 
529
overlaps
 
530
SELECT GROUP_CONCAT(a1.name ORDER BY a1.name) AS overlaps FROM t1 a1 WHERE Overlaps(a1.square, @horiz1) GROUP BY a1.name;
 
531
overlaps
 
532
SELECT Overlaps(@horiz1, @vert1) FROM DUAL;
 
533
Overlaps(@horiz1, @vert1)
 
534
0
 
535
SELECT Overlaps(@horiz1, @horiz2) FROM DUAL;
 
536
Overlaps(@horiz1, @horiz2)
 
537
1
 
538
SELECT Overlaps(@horiz1, @horiz3) FROM DUAL;
 
539
Overlaps(@horiz1, @horiz3)
 
540
0
 
541
SELECT Overlaps(@horiz1, @point1) FROM DUAL;
 
542
Overlaps(@horiz1, @point1)
 
543
0
 
544
SELECT Overlaps(@horiz1, @point2) FROM DUAL;
 
545
Overlaps(@horiz1, @point2)
 
546
0
 
547
DROP TABLE t1;
 
548
End of 5.0 tests
 
549
CREATE TABLE t1 (p POINT);
 
550
CREATE TABLE t2 (p POINT, INDEX(p));
 
551
INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)'));
 
552
INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)'));
 
553
SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
554
COUNT(*)
 
555
1
 
556
EXPLAIN 
 
557
SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
558
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
559
1       SIMPLE  t2      ref     p       p       28      const   1       Using where
 
560
SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
561
COUNT(*)
 
562
1
 
563
INSERT INTO t1 VALUES (POINTFROMTEXT('POINT(1 2)'));
 
564
INSERT INTO t2 VALUES (POINTFROMTEXT('POINT(1 2)'));
 
565
EXPLAIN 
 
566
SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
567
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
568
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
569
SELECT COUNT(*) FROM t1 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
570
COUNT(*)
 
571
2
 
572
EXPLAIN 
 
573
SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
574
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
575
1       SIMPLE  t2      ref     p       p       28      const   1       Using where
 
576
SELECT COUNT(*) FROM t2 WHERE p=POINTFROMTEXT('POINT(1 2)');
 
577
COUNT(*)
 
578
2
 
579
EXPLAIN 
 
580
SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
 
581
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
582
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    2       Using where
 
583
SELECT COUNT(*) FROM t2 IGNORE INDEX(p) WHERE p=POINTFROMTEXT('POINT(1 2)');
 
584
COUNT(*)
 
585
2
 
586
DROP TABLE t1, t2;
 
587
End of 5.0 tests
 
588
create table t1 (g geometry not null, spatial gk(g)) engine=innodb;
 
589
ERROR HY000: The used table type doesn't support SPATIAL indexes