1# Creating the spatial objects
2USE test;
3CREATE TABLE gis_point (fid INTEGER NOT NULL PRIMARY KEY, g POINT);
4CREATE TABLE gis_linestring (fid INTEGER NOT NULL PRIMARY KEY, g LINESTRING);
5CREATE TABLE gis_polygon (fid INTEGER NOT NULL PRIMARY KEY, g POLYGON);
6CREATE TABLE gis_multi_point (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOINT);
7CREATE TABLE gis_multi_linestring (fid INTEGER NOT NULL PRIMARY KEY, g MULTILINESTRING);
8CREATE TABLE gis_multi_polygon (fid INTEGER NOT NULL PRIMARY KEY, g MULTIPOLYGON);
9CREATE TABLE gis_geometrycollection (fid INTEGER NOT NULL PRIMARY KEY, g GEOMETRYCOLLECTION);
10# Inserting POINT Geometry Values
11INSERT INTO gis_point VALUES
12(101, ST_POINTFROMTEXT('POINT(0 0)')),
13(102, ST_POINTFROMTEXT('POINT(1 0)')),
14(103, ST_POINTFROMTEXT('POINT(0 1)')),
15(104, ST_POINTFROMTEXT('POINT(1 1)')),
16(105, ST_POINTFROMTEXT('POINT(-1 1)'));
17INSERT INTO gis_point VALUES
18(106, ST_POINTFROMWKB(ST_ASWKB(POINT(0,0)))),
19(107, ST_POINTFROMWKB(ST_ASWKB(POINT(10,0)))),
20(108, ST_POINTFROMWKB(ST_ASWKB(POINT(0,10)))),
21(109, ST_POINTFROMWKB(ST_ASWKB(POINT(-10,0)))),
22(110, ST_POINTFROMWKB(ST_ASWKB(POINT(0,-10))));
23INSERT INTO gis_point VALUES
24(111, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1 1)')))),
25(112, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 1e308)')))),
26(113, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(1e308 -1e308)')))),
27(114, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 1e308)')))),
28(115, ST_POINTFROMWKB(ST_ASWKB(ST_POINTFROMTEXT('POINT(-1e308 -1e308)'))));
29# Displaying the inserted POINT Geometry Data
30SELECT fid, ST_ASTEXT(g) FROM gis_point;
31fid	ST_ASTEXT(g)
32101	POINT(0 0)
33102	POINT(1 0)
34103	POINT(0 1)
35104	POINT(1 1)
36105	POINT(-1 1)
37106	POINT(0 0)
38107	POINT(10 0)
39108	POINT(0 10)
40109	POINT(-10 0)
41110	POINT(0 -10)
42111	POINT(1 1)
43112	POINT(1e308 1e308)
44113	POINT(1e308 -1e308)
45114	POINT(-1e308 1e308)
46115	POINT(-1e308 -1e308)
47# Checking the integrity of the above insert statements
48SELECT COUNT(g) FROM gis_point;
49COUNT(g)
5015
51SELECT COUNT(ST_ASTEXT(g)) FROM gis_point;
52COUNT(ST_ASTEXT(g))
5315
54SELECT COUNT(DISTINCT(g)) FROM gis_point;
55COUNT(DISTINCT(g))
5613
57SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_point;
58COUNT(DISTINCT(ST_ASTEXT(g)))
5913
60# Inserting LINESTRING Geometry Values
61INSERT INTO gis_linestring VALUES
62(201, ST_LINEFROMTEXT('LINESTRING(0 0,5 5)')),
63(202, ST_LINEFROMTEXT('LINESTRING(0 0,2 2,4 4)')),
64(203, ST_LINEFROMTEXT('LINESTRING(0 0,5 5,10 10)'));
65INSERT INTO gis_linestring VALUES
66(204, ST_LINESTRINGFROMTEXT('LINESTRING(10 10,5 5)')),
67(205, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,12 12,24 24)')),
68(206, ST_LINESTRINGFROMTEXT('LINESTRING(0 0,50 50,100 100)'));
69INSERT INTO gis_linestring VALUES
70(207, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5))))),
71(208, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,10))))),
72(209, ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)))));
73INSERT INTO gis_linestring VALUES
74(210, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5))))),
75(211, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(-50,-50), POINT(10,-10))))),
76(212, ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(1e308,1e308), POINT(1e308,-1e308)))));
77INSERT INTO gis_linestring VALUES
78(213, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1e308 1e308,1e308 -1e308)')))),
79(214, ST_LINEFROMWKB(ST_ASWKB(ST_LINEFROMTEXT('LINESTRING(1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)')))),
80(215, ST_LINESTRINGFROMWKB(ST_ASWKB(ST_LINESTRINGFROMTEXT('LINESTRING(10 10,10 -10,-10 -10,-10 10,10 10)'))));
81# Displaying the inserted LINESTRING Geometry Data
82SELECT fid, ST_ASTEXT(g) FROM gis_linestring;
83fid	ST_ASTEXT(g)
84201	LINESTRING(0 0,5 5)
85202	LINESTRING(0 0,2 2,4 4)
86203	LINESTRING(0 0,5 5,10 10)
87204	LINESTRING(10 10,5 5)
88205	LINESTRING(0 0,12 12,24 24)
89206	LINESTRING(0 0,50 50,100 100)
90207	LINESTRING(0 0,5 5)
91208	LINESTRING(0 0,-5 -5,-10 10)
92209	LINESTRING(0 0,2 2,4 4,6 6,8 8)
93210	LINESTRING(0 0,5 5)
94211	LINESTRING(0 0,-50 -50,10 -10)
95212	LINESTRING(0 0,1e308 1e308,1e308 -1e308)
96213	LINESTRING(1e308 1e308,1e308 -1e308)
97214	LINESTRING(1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)
98215	LINESTRING(10 10,10 -10,-10 -10,-10 10,10 10)
99# Checking the integrity of the above insert statements
100SELECT COUNT(g) FROM gis_linestring;
101COUNT(g)
10215
103SELECT COUNT(ST_ASTEXT(g)) FROM gis_linestring;
104COUNT(ST_ASTEXT(g))
10515
106SELECT COUNT(DISTINCT(g)) FROM gis_linestring;
107COUNT(DISTINCT(g))
10813
109SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_linestring;
110COUNT(DISTINCT(ST_ASTEXT(g)))
11113
112# Inserting POLYGON Geometry Values
113INSERT INTO gis_polygon VALUES
114(301, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5, 0 0))')),
115(302, ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')),
116(303, ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
117INSERT INTO gis_polygon VALUES
118(304, ST_POLYGONFROMTEXT('POLYGON((0 0,0 50,50 50,50 0,0 0))')),
119(305, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')),
120(306, ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'));
121INSERT INTO gis_polygon VALUES
122(307, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))),
123(308, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)))))),
124(309, ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)),
125LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))));
126INSERT INTO gis_polygon VALUES
127(310, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))),
128(311, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,15), POINT(15,15), POINT(15,10), POINT(10,10)))))),
129(312, ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(10,10), POINT(10,20), POINT(20,20), POINT(20,10), POINT(10,10)),
130LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))));
131INSERT INTO gis_polygon VALUES
132(313, ST_POLYFROMWKB(ST_ASWKB(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,5 5,0 0))')))),
133(314, ST_POLYFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0))')))),
134(315, ST_POLYGONFROMWKB(ST_ASWKB(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))));
135# Displaying the inserted POLYGON Geometry Data
136SELECT fid, ST_ASTEXT(g) FROM gis_polygon;
137fid	ST_ASTEXT(g)
138301	POLYGON((0 0,0 5,5 5,0 0))
139302	POLYGON((0 0,0 5,5 5,5 0,0 0))
140303	POLYGON((0 0,0 10,10 10,10 0,0 0))
141304	POLYGON((0 0,0 50,50 50,50 0,0 0))
142305	POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))
143306	POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))
144307	POLYGON((0 0,0 5,5 5,0 0))
145308	POLYGON((0 0,0 15,15 15,15 0,0 0))
146309	POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))
147310	POLYGON((0 0,0 5,5 5,0 0))
148311	POLYGON((10 10,10 15,15 15,15 10,10 10))
149312	POLYGON((10 10,10 20,20 20,20 10,10 10),(14 14,14 16,16 16,16 14,14 14))
150313	POLYGON((0 0,0 10,10 10,10 0,5 5,0 0))
151314	POLYGON((10 0,10 10,0 10,-10 10,-10 0,-10 -10,0 10,10 -10,10 0))
152315	POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))
153# Checking the integrity of the above insert statements
154SELECT COUNT(g) FROM gis_polygon;
155COUNT(g)
15615
157SELECT COUNT(ST_ASTEXT(g)) FROM gis_polygon;
158COUNT(ST_ASTEXT(g))
15915
160SELECT COUNT(DISTINCT(g)) FROM gis_polygon;
161COUNT(DISTINCT(g))
16211
163SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_polygon;
164COUNT(DISTINCT(ST_ASTEXT(g)))
16511
166# Inserting MULTIPOINT Geometry Values
167INSERT INTO gis_multi_point VALUES
168(401, ST_MPOINTFROMTEXT('MULTIPOINT(0 0)')),
169(402, ST_MPOINTFROMTEXT('MULTIPOINT(0 0,2 2,4 4)')),
170(403, ST_MPOINTFROMTEXT('MULTIPOINT(0 0,5 5,10 10)'));
171INSERT INTO gis_multi_point VALUES
172(404, ST_MULTIPOINTFROMTEXT('MULTIPOINT(0 0,100 100)')),
173(405, ST_MULTIPOINTFROMTEXT('MULTIPOINT(0 0,1e308 1e308)')),
174(406, ST_MULTIPOINTFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308)'));
175INSERT INTO gis_multi_point VALUES
176(407, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0))))),
177(408, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(10,10))))),
178(409, ST_MPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)))));
179INSERT INTO gis_multi_point VALUES
180(410, ST_MULTIPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0))))),
181(411, ST_MULTIPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(0,0), POINT(1e308,1e308))))),
182(412, ST_MULTIPOINTFROMWKB(ST_ASWKB(MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308), POINT(-1e308,-1e308)))));
183INSERT INTO gis_multi_point VALUES
184(413, ST_MPOINTFROMWKB(ST_ASWKB(ST_MPOINTFROMTEXT('MULTIPOINT(0 0)')))),
185(414, ST_MPOINTFROMWKB(ST_ASWKB(ST_MPOINTFROMTEXT('MULTIPOINT(0 0,1e308 1e308,-1e308 -1e308)')))),
186(415, ST_MPOINTFROMWKB(ST_ASWKB(ST_MPOINTFROMTEXT('MULTIPOINT(1e308 1e308,1e308 -1e308,-1e308 1e308,-1e308 -1e308,1e308 1e308)'))));
187# Displaying the inserted MULTIPOINT Geometry Data
188SELECT fid, ST_ASTEXT(g) FROM gis_multi_point;
189fid	ST_ASTEXT(g)
190401	MULTIPOINT((0 0))
191402	MULTIPOINT((0 0),(2 2),(4 4))
192403	MULTIPOINT((0 0),(5 5),(10 10))
193404	MULTIPOINT((0 0),(100 100))
194405	MULTIPOINT((0 0),(1e308 1e308))
195406	MULTIPOINT((1e308 1e308),(1e308 -1e308),(-1e308 1e308),(-1e308 -1e308))
196407	MULTIPOINT((0 0))
197408	MULTIPOINT((0 0),(10 10))
198409	MULTIPOINT((0 0),(2 2),(4 4),(6 6))
199410	MULTIPOINT((0 0))
200411	MULTIPOINT((0 0),(1e308 1e308))
201412	MULTIPOINT((1e308 1e308),(-1e308 1e308),(1e308 -1e308),(-1e308 -1e308))
202413	MULTIPOINT((0 0))
203414	MULTIPOINT((0 0),(1e308 1e308),(-1e308 -1e308))
204415	MULTIPOINT((1e308 1e308),(1e308 -1e308),(-1e308 1e308),(-1e308 -1e308),(1e308 1e308))
205# Checking the integrity of the above insert statements
206SELECT COUNT(g) FROM gis_multi_point;
207COUNT(g)
20815
209SELECT COUNT(ST_ASTEXT(g)) FROM gis_multi_point;
210COUNT(ST_ASTEXT(g))
21115
212SELECT COUNT(DISTINCT(g)) FROM gis_multi_point;
213COUNT(DISTINCT(g))
21411
215SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_multi_point;
216COUNT(DISTINCT(ST_ASTEXT(g)))
21711
218# Inserting MULTILINESTRING Geometry Values
219INSERT INTO gis_multi_linestring VALUES
220(501, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2))')),
221(502, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4))')),
222(503, ST_MLINEFROMTEXT('MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))'));
223INSERT INTO gis_multi_linestring VALUES
224(504, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,100 100,-100 -100))')),
225(505, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308))')),
226(506, ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1e308 1e308,-1e308 -1e308),(1e308 -1e308,-1e308 1e308))'));
227INSERT INTO gis_multi_linestring VALUES
228(507, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2)))))),
229(508, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)))))),
230(509, ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)),
231LINESTRING(POINT(6,6), POINT(8,8), POINT(10,10))))));
232INSERT INTO gis_multi_linestring VALUES
233(510, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4)))))),
234(511, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1,1), POINT(2,2)))))),
235(512, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(12,12), POINT(24,24)),
236LINESTRING(POINT(36,36), POINT(48,48), POINT(50,50))))));
237INSERT INTO gis_multi_linestring VALUES
238(513, ST_MLINEFROMWKB(ST_ASWKB(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 10),(0 10,10 0))')))),
239(514, ST_MLINEFROMWKB(ST_ASWKB(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0))')))),
240(515, ST_MULTILINESTRINGFROMWKB(ST_ASWKB(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))'))));
241# Displaying the inserted MULTILINESTRING Geometry Data
242SELECT fid, ST_ASTEXT(g) FROM gis_multi_linestring;
243fid	ST_ASTEXT(g)
244501	MULTILINESTRING((0 0,2 2))
245502	MULTILINESTRING((0 0,2 2,4 4))
246503	MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))
247504	MULTILINESTRING((0 0,100 100,-100 -100))
248505	MULTILINESTRING((1e308 1e308,-1e308 -1e308))
249506	MULTILINESTRING((1e308 1e308,-1e308 -1e308),(1e308 -1e308,-1e308 1e308))
250507	MULTILINESTRING((0 0,2 2))
251508	MULTILINESTRING((0 0,12 12,24 24))
252509	MULTILINESTRING((0 0,2 2,4 4),(6 6,8 8,10 10))
253510	MULTILINESTRING((0 0,2 2,4 4))
254511	MULTILINESTRING((0 0,1 1,2 2))
255512	MULTILINESTRING((0 0,12 12,24 24),(36 36,48 48,50 50))
256513	MULTILINESTRING((0 0,10 10),(0 10,10 0))
257514	MULTILINESTRING((0 0,10 10,-10 10,0 0),(0 0,-10 -10,10 -10,0 0))
258515	MULTILINESTRING((0 0,0 100),(0 0,100 0),(0 0,0 -100),(0 0,-100 0))
259# Checking the integrity of the above insert statements
260SELECT COUNT(g) FROM gis_multi_linestring;
261COUNT(g)
26215
263SELECT COUNT(ST_ASTEXT(g)) FROM gis_multi_linestring;
264COUNT(ST_ASTEXT(g))
26515
266SELECT COUNT(DISTINCT(g)) FROM gis_multi_linestring;
267COUNT(DISTINCT(g))
26812
269SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_multi_linestring;
270COUNT(DISTINCT(ST_ASTEXT(g)))
27112
272# Inserting MULTIPOLGYON Geometry Values
273INSERT INTO gis_multi_polygon VALUES
274(601, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)))')),
275(602, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5)))')),
276(603, ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))'));
277INSERT INTO gis_multi_polygon VALUES
278(604, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5, 0 0)))')),
279(605, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4, 4 4)),((0 0,0 -2,-2 -2, 0 0)))')),
280(606, ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0)))'));
281INSERT INTO gis_multi_polygon VALUES
282(607, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))))))),
283(608, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
284LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))),
285(609, ST_MPOLYFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(5,0), POINT(5,5), POINT(0,5), POINT(0,0))),
286POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))));
287INSERT INTO gis_multi_polygon VALUES
288(610, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0))))))),
289(611, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(10,10), POINT(20,10), POINT(20,20), POINT(10,20), POINT(10,10)),
290LINESTRING(POINT(14,14), POINT(14,16), POINT(16,16), POINT(16,14), POINT(14,14))))))),
291(612, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)),
292LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
293POLYGON(LINESTRING(POINT(0,0), POINT(-5,0), POINT(-5,-5), POINT(0,-5), POINT(0,0)))))));
294INSERT INTO gis_multi_polygon VALUES
295(613, ST_MPOLYFROMWKB(ST_ASWKB(ST_MPOLYFROMTEXT('MULTIPOLYGON(((0 0,5 5,5 -5,0 0)),((0 0,-5 5,-5 -5,0 0)))')))),
296(614, ST_MPOLYFROMWKB(ST_ASWKB(ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0)))')))),
297(615, ST_MULTIPOLYGONFROMWKB(ST_ASWKB(ST_MULTIPOLYGONFROMTEXT('MULTIPOLYGON(((0 0,5 5,10 0,5 -5,0 0)))'))));
298# Displaying the inserted MULTIPOLYGON Geometry Data
299SELECT fid, ST_ASTEXT(g) FROM gis_multi_polygon;
300fid	ST_ASTEXT(g)
301601	MULTIPOLYGON(((0 0,0 5,5 5,0 0)))
302602	MULTIPOLYGON(((0 0,0 5,5 5,0 0)),((5 5,5 10,10 10,5 5)))
303603	MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))
304604	MULTIPOLYGON(((0 0,0 5,5 5,0 0)))
305605	MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,0 -2,-2 -2,0 0)))
306606	MULTIPOLYGON(((0 0,5 5,-5 5,0 0)),((0 0,-5 -5,5 -5,0 0)))
307607	MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0)))
308608	MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(4 4,4 6,6 6,6 4,4 4)))
309609	MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0)),((0 0,-5 0,-5 -5,0 -5,0 0)))
310610	MULTIPOLYGON(((0 0,-5 0,-5 -5,0 -5,0 0)))
311611	MULTIPOLYGON(((10 10,20 10,20 20,10 20,10 10),(14 14,14 16,16 16,16 14,14 14)))
312612	MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,-5 0,-5 -5,0 -5,0 0)))
313613	MULTIPOLYGON(((0 0,5 5,5 -5,0 0)),((0 0,-5 5,-5 -5,0 0)))
314614	MULTIPOLYGON(((0 0,10 10,-10 10,0 0)),((0 0,-10 -10,10 -10,0 0)))
315615	MULTIPOLYGON(((0 0,5 5,10 0,5 -5,0 0)))
316# Checking the integrity of the above insert statements
317SELECT COUNT(g) FROM gis_multi_polygon;
318COUNT(g)
31915
320SELECT COUNT(ST_ASTEXT(g)) FROM gis_multi_polygon;
321COUNT(ST_ASTEXT(g))
32215
323SELECT COUNT(DISTINCT(g)) FROM gis_multi_polygon;
324COUNT(DISTINCT(g))
32514
326SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_multi_polygon;
327COUNT(DISTINCT(ST_ASTEXT(g)))
32814
329# Inserting GEOMETRYCOLLECTION Geometry Values
330INSERT INTO gis_geometrycollection VALUES
331(701, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))')),
332(702, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
333(703, ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(5 5), POLYGON((0 0,0 10,10 10,10 0,0 0)))'));
334INSERT INTO gis_geometrycollection VALUES
335(704, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(0 0,10 10))')),
336(705, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0),'
337                                                           'LINESTRING(0 0,10 10),'
338                                                           'POLYGON((0 0,0 10,10 10,10 0, 0 0)))')),
339(706, ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(MULTIPOINT(0 0,5 5,10 10),'
340                                                           'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
341                                                           'MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),'
342                                                                        '((0 0,-10 0,-10 -10,0 -10,0 0))))'));
343INSERT INTO gis_geometrycollection VALUES
344(707, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0))))),
345(708, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0),
346LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
347POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)),
348LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))),
349(709, ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(0,0), POINT(5,5), POINT(10,10)),
350MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
351LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))),
352MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)),
353LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
354POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))));
355INSERT INTO gis_geometrycollection VALUES
356(710, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0),
357LINESTRING(POINT(0,0), POINT(100,100)))))),
358(711, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(10,10),
359LINESTRING(POINT(10,10), POINT(12,12), POINT(14,14), POINT(16,16), POINT(18,18)),
360POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)),
361LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))),
362(712, ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(MULTIPOINT(POINT(10,10), POINT(15,15), POINT(20,20)),
363MULTILINESTRING(LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
364LINESTRING(POINT(10,10), POINT(5,5), POINT(0,10))),
365MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,10), POINT(10,10), POINT(10,0), POINT(0,0)),
366LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
367POLYGON(LINESTRING(POINT(0,0), POINT(-10,0), POINT(-10,-10), POINT(0,0))))))));
368INSERT INTO gis_geometrycollection VALUES
369(713, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
370                                                                'POINT(0 0),'
371                                                                'LINESTRING(0 0,10 10),'
372                                                                'POLYGON((0 0,0 10,10 10,10 0, 0 0)),'
373                                                                'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),'
374                                                                'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
375                                                                'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))')))),
376(714, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
377                                                                'GEOMETRYCOLLECTION('
378                                                                      'POINT(0 0)),'
379                                                                'GEOMETRYCOLLECTION('
380                                                                      'LINESTRING(0 0,10 10)),'
381                                                                'GEOMETRYCOLLECTION('
382                                                                      'POLYGON((0 0,0 10,10 10,10 0, 0 0))),'
383                                                                'GEOMETRYCOLLECTION('
384                                                                       'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10)),'
385                                                                'GEOMETRYCOLLECTION('
386                                                                       'MULTILINESTRING((0 0,10 10),(0 10,10 0))),'
387                                                                'GEOMETRYCOLLECTION('
388                                                                       'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))))')))),
389(715, ST_GEOMCOLLFROMWKB(ST_ASWKB(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
390                                                                'GEOMETRYCOLLECTION(),'
391                                                                'POINT(0 0),'
392                                                                'GEOMETRYCOLLECTION('
393                                                                      'LINESTRING(0 0,10 10),'
394                                                                      'GEOMETRYCOLLECTION('
395                                                                            'GEOMETRYCOLLECTION())),'
396                                                                'GEOMETRYCOLLECTION(),'
397                                                                'GEOMETRYCOLLECTION('
398                                                                       'GEOMETRYCOLLECTION()),'
399                                                                'POLYGON((0 0,0 10,10 10,10 0, 0 0)),'
400                                                                'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),'
401                                                                'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
402                                                                'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))'))));
403# Displaying the inserted GEOMETRYCOLLECTION Geometry Data
404SELECT fid, ST_ASTEXT(g) FROM gis_geometrycollection;
405fid	ST_ASTEXT(g)
406701	GEOMETRYCOLLECTION(POINT(0 0))
407702	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
408703	GEOMETRYCOLLECTION(POINT(5 5),POLYGON((0 0,0 10,10 10,10 0,0 0)))
409704	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10))
410705	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10),POLYGON((0 0,0 10,10 10,10 0,0 0)))
411706	GEOMETRYCOLLECTION(MULTIPOINT((0 0),(5 5),(10 10)),MULTILINESTRING((0 0,10 10),(0 10,10 0)),MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0)),((0 0,-10 0,-10 -10,0 -10,0 0))))
412707	GEOMETRYCOLLECTION(POINT(0 0))
413708	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,2 2,4 4,6 6,8 8),POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))
414709	GEOMETRYCOLLECTION(MULTIPOINT((0 0),(5 5),(10 10)),MULTILINESTRING((0 0,2 2,4 4,6 6,8 8),(10 10,5 5,0 10)),MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,-10 0,-10 -10,0 0))))
415710	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,100 100))
416711	GEOMETRYCOLLECTION(POINT(10 10),LINESTRING(10 10,12 12,14 14,16 16,18 18),POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)))
417712	GEOMETRYCOLLECTION(MULTIPOINT((10 10),(15 15),(20 20)),MULTILINESTRING((0 0,2 2,4 4,6 6,8 8),(10 10,5 5,0 10)),MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4)),((0 0,-10 0,-10 -10,0 0))))
418713	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(0 0,10 10),POLYGON((0 0,0 10,10 10,10 0,0 0)),MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10)),MULTILINESTRING((0 0,10 10),(0 10,10 0)),MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))
419714	GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)),GEOMETRYCOLLECTION(LINESTRING(0 0,10 10)),GEOMETRYCOLLECTION(POLYGON((0 0,0 10,10 10,10 0,0 0))),GEOMETRYCOLLECTION(MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10))),GEOMETRYCOLLECTION(MULTILINESTRING((0 0,10 10),(0 10,10 0))),GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))))
420715	GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY,POINT(0 0),GEOMETRYCOLLECTION(LINESTRING(0 0,10 10),GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY)),GEOMETRYCOLLECTION EMPTY,GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY),POLYGON((0 0,0 10,10 10,10 0,0 0)),MULTIPOINT((0 0),(2 2),(4 4),(6 6),(8 8),(10 10)),MULTILINESTRING((0 0,10 10),(0 10,10 0)),MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))
421# Checking the integrity of the above insert statements
422SELECT COUNT(g) FROM gis_geometrycollection;
423COUNT(g)
42415
425SELECT COUNT(ST_ASTEXT(g)) FROM gis_geometrycollection;
426COUNT(ST_ASTEXT(g))
42715
428SELECT COUNT(DISTINCT(g)) FROM gis_geometrycollection;
429COUNT(DISTINCT(g))
43013
431SELECT COUNT(DISTINCT(ST_ASTEXT(g))) FROM gis_geometrycollection;
432COUNT(DISTINCT(ST_ASTEXT(g)))
43313
434#====================================================================================
435# ST_X(point)
436#====================================================================================
437SELECT ST_X(ST_POINTFROMTEXT('POINT(0 0)'));
438ST_X(ST_POINTFROMTEXT('POINT(0 0)'))
4390
440SELECT ST_X(ST_POINTFROMTEXT('POINT(10 10)'));
441ST_X(ST_POINTFROMTEXT('POINT(10 10)'))
44210
443SELECT ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)'));
444ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)'))
4451e308
446SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111))));
447ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111))))
4481.1111
449SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000))));
450ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000))))
45110
452SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308))));
453ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308))))
454-1e308
455#====================================================================================
456# ST_Y(point)
457#====================================================================================
458SELECT ST_Y(ST_POINTFROMTEXT('POINT(0 0)'));
459ST_Y(ST_POINTFROMTEXT('POINT(0 0)'))
4600
461SELECT ST_Y(ST_POINTFROMTEXT('POINT(10 10)'));
462ST_Y(ST_POINTFROMTEXT('POINT(10 10)'))
46310
464SELECT ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)'));
465ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)'))
4661e308
467SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111))));
468ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1.1111,-1.1111))))
469-1.1111
470SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000))));
471ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(10.0000,10.0000))))
47210
473SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308))));
474ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(-1e308,-1e308))))
475-1e308
476#====================================================================================
477# ST_ISCLOSED(linestring)
478#====================================================================================
479SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'));
480ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))
4810
482SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2,0 0)'));
483ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,2 2,0 0)'))
4841
485SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0)'));
486ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0)'))
4870
488SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'));
489ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))
4901
491SELECT ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)))));
492ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)))))
4930
494SELECT ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10), POINT(0,0)))));
495ST_ISCLOSED(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10), POINT(0,0)))))
4961
497SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))));
498ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))
4990
500SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))));
501ST_ISCLOSED(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))
5021
503#====================================================================================
504# ST_LENGTH(linestring)
505#====================================================================================
506SELECT ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'));
507ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))
5082.8284271247461903
509SELECT ST_LENGTH(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'));
510ST_LENGTH(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))
51120
512SELECT ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))));
513ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))))
51428.284271247461902
515SELECT ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))));
516ST_LENGTH(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))))
51724.14213562373095
518SELECT ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))));
519ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))
52038.2842712474619
521SELECT ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))));
522ST_LENGTH(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))
52348.2842712474619
524# Cartesian SRS
525SELECT ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 2000));
526ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 2000))
52714.142135623730951
528# Geographic SRS
529# Different result on Windows and Linux, need to use ROUND
530SELECT ROUND(ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 4326)),7);
531ROUND(ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10, 10 10)', 4326)),7)
5321565127.2549243
533# Infinite Linestring
534SELECT ST_LENGTH(ST_GEOMFROMTEXT('LINESTRING(1e-300 0,1e300 0,1e-300 0,1e300 0,1e-300 0, 1e300 0, 1e-300 0)', 0));
535ERROR 22003: Length value is out of range in 'st_length'
536#====================================================================================
537# ST_NUMPOINTS(linestring)
538#====================================================================================
539SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'));
540ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'))
5412
542SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'));
543ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'))
5442
545SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'));
546ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'))
5472
548SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'));
549ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'))
5505
551SELECT ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))));
552ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))))
5533
554SELECT ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))));
555ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))))
5564
557SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))));
558ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))))
5594
560SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))));
561ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))))
5625
563#====================================================================================
564# ST_STARTPOINT(linestring)
565#====================================================================================
566SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')));
567ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')))
568POINT(0 0)
569SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)')));
570ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)')))
571POINT(0 0)
572SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)')));
573ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)')))
574POINT(1e308 1e308)
575SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')));
576ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')))
577POINT(0 0)
578SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))));
579ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))))
580POINT(0 0)
581SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))));
582ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))))
583POINT(0 0)
584SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))));
585ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))))
586POINT(0 0)
587SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))));
588ST_ASTEXT(ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))))
589POINT(0 0)
590#====================================================================================
591# ST_ENDPOINT(linestring)
592#====================================================================================
593SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')));
594ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)')))
595POINT(2 2)
596SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)')));
597ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)')))
598POINT(1e308 1e308)
599SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)')));
600ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)')))
601POINT(-1e308 -1e308)
602SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')));
603ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)')))
604POINT(0 0)
605SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))));
606ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10))))))
607POINT(-10 -10)
608SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))));
609ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0))))))
610POINT(0 0)
611SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))));
612ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10))))))
613POINT(0 10)
614SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))));
615ST_ASTEXT(ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0))))))
616POINT(0 0)
617#====================================================================================
618# ST_POINTN(linestring, number)
619#====================================================================================
620SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'), 1));
621ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,2 2)'), 1))
622POINT(0 0)
623SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'), 2));
624ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1e308 1e308)'), 2))
625POINT(1e308 1e308)
626SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'), 2));
627ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1e308 1e308,-1e308 -1e308)'), 2))
628POINT(-1e308 -1e308)
629SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'), 3));
630ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,0 5,5 5,5 0,0 0)'), 3))
631POINT(5 5)
632SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))), 3));
633ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-10,-10)))), 3))
634POINT(-10 -10)
635SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))), 4));
636ST_ASTEXT(ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(5,5), POINT(-5,5), POINT(0,0)))), 4))
637POINT(0 0)
638SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))), 4));
639ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10)))), 4))
640POINT(0 10)
641SELECT ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))), 4));
642ST_ASTEXT(ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(10,10), POINT(10,0), POINT(0,10), POINT(0,0)))), 4))
643POINT(0 10)
644#====================================================================================
645# ST_NUMINTERIORRINGS(polygon)
646#====================================================================================
647SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'));
648ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'))
6490
650SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'));
651ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'))
6521
653SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'));
654ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))
6552
656SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'));
657ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'))
6580
659SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))));
660ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))))
6610
662SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
663LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))));
664ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
665LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))
6661
667SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
668LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)),
669LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), POINT(10,8), POINT(8,8))))));
670ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
671LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)),
672LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), PO
6732
674SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))));
675ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))))
6760
677#====================================================================================
678# ST_EXTERIORRING(polygon)
679#====================================================================================
680SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')));
681ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))')))
682LINESTRING(0 0,0 5,5 5,5 0,0 0)
683SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')));
684ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))')))
685LINESTRING(0 0,0 10,10 10,10 0,0 0)
686SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')));
687ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')))
688LINESTRING(0 0,0 10,10 10,10 0,0 0)
689SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))')));
690ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))')))
691LINESTRING(0 0,0 -115,-115 -115,-115 0,0 0)
692SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))));
693ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0)))))))
694LINESTRING(0 0,0 5,5 5,0 0)
695SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
696LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))));
697ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
698LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))))
699LINESTRING(0 0,0 15,15 15,15 0,0 0)
700SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
701LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)),
702LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), POINT(10,8), POINT(8,8)))))));
703ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
704LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)),
705LINESTRING(POINT(8,8), POINT(8,10), POINT(10,1
706LINESTRING(0 0,0 15,15 15,15 0,0 0)
707SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110)))))));
708ST_ASTEXT(ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110)))))))
709LINESTRING(110 110,110 5,5 5,110 110)
710#====================================================================================
711# ST_INTERIORRINGN(polygon, number)
712#====================================================================================
713SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'), 1));
714ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 5,5 5,5 0,0 0))'), 1))
715NULL
716SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'), 1));
717ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))'), 1))
718LINESTRING(4 4,4 6,6 6,6 4,4 4)
719SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2));
720ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2))
721LINESTRING(6 6,6 8,8 8,8 6,6 6)
722SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'), 1));
723ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 -115,-115 -115,-115 0,0 0))'), 1))
724NULL
725SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), 1));
726ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,5), POINT(5,5), POINT(0,0))))), 1))
727NULL
728SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
729LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))), 1));
730ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
731LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))), 1))
732LINESTRING(4 4,4 6,6 6,6 4,4 4)
733SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
734LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)),
735LINESTRING(POINT(8,8), POINT(8,10), POINT(10,10), POINT(10,8), POINT(8,8))))), 2));
736ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,15), POINT(15,15), POINT(15,0), POINT(0,0)),
737LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)),
738LINESTRING(POINT(8,8), POINT(8,10), POINT(10,
739LINESTRING(8 8,8 10,10 10,10 8,8 8)
740SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))), 2));
741ST_ASTEXT(ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(110,110), POINT(110,5), POINT(5,5), POINT(110,110))))), 2))
742NULL
743#====================================================================================
744# ST_ISCLOSED(multilinestring)
745#====================================================================================
746SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))'));
747ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))'))
7481
749SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,-10 0,0 0))'));
750ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,-10 0,0 0))'))
7510
752SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))'));
753ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))'))
7541
755SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0,0 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))'));
756ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0,0 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))'))
7570
758SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0))))));
759ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0))))))
7601
761SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e308,1e308))))));
762ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e308,1e308))))))
7630
764SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(10,10), POINT(0,0)),
765LINESTRING(POINT(1e308,1e308), POINT(-1e308,-1e308), POINT(1e308,1e308))))));
766ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(10,10), POINT(0,0)),
767LINESTRING(POINT(1e308,1e308), POINT(-1e308,-1e308), POINT(1e308,1e308))))))
7681
769SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10))))));
770ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10))))))
7710
772#====================================================================================
773# ST_LENGTH(multilinestring)
774#====================================================================================
775SELECT ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))'));
776ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0))'))
77720
778SELECT ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0),(0 0,-10 0,0 0))'));
779ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0,0 0),(0 0,-10 0,0 0))'))
78040
781SELECT ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))'));
782ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,10 10,0 0),(0 0,-10 -10,0 0))'))
78356.568542494923804
784SELECT ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))'));
785ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))'))
78620
787SELECT ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0))))));
788ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(0,0))))))
7890
790SELECT ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10))))));
791ST_LENGTH(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(0,0), POINT(1e10,1e10))))))
79214142135623.730951
793# Cartesian SRS
794SELECT ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 2000));
795ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 2000))
79620
797# Geographic SRS
798SELECT ROUND(ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 4326)), 7);
799ROUND(ST_LENGTH(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((0 0,5 0),(0 0,0 5),(0 0,-5 0),(0 0,0 -5))', 4326)), 7)
8002218953.5324189
801#====================================================================================
802# ST_NUMGEOMETRIES(geometrycollection)
803#====================================================================================
804SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'));
805ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'))
8061
807SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
808                                                  'POINT(0 0),'
809                                                  'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
810                                                  'POLYGON((0 0,0 5,5 5,5 0,0 0)))'));
811ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
812                                                  'POINT(0 0),'
813                                                  'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
814
8153
816SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
817                                                            'MULTIPOINT(0 0),'
818                                                            'MULTILINESTRING((0 0,5 5,10 10),'
819                                                                            '(0 0,-5 -5,-10 -10)),'
820                                                            'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),'
821                                                                         '((5 5,5 10,10 10,10 5,5 5))))'));
822ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
823                                                            'MULTIPOINT(0 0),'
824                                                            'MULTILINESTRING((0 0,5 5,10 10),'
825
8263
827SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
828                                                            'POINT(0 0),'
829                                                            'GEOMETRYCOLLECTION(),'
830                                                            'GEOMETRYCOLLECTION('
831                                                                  'GEOMETRYCOLLECTION()),'
832                                                            'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10))'));
833ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
834                                                            'POINT(0 0),'
835                                                            'GEOMETRYCOLLECTION(),'
836
8374
838SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
839POINT(10,10),
840LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
841POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
842LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))));
843ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
844POINT(10,10),
845LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
846POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
847LINESTRING(POINT(4,4
8483
849SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
850MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
851MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
852LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))),
853MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))),
854POLYGON(LINESTRING(POINT(2,2), POINT(2,13), POINT(13,13), POINT(13,2), POINT(2,2)),
855LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))));
856ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
857MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
858MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
859LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10
8603
861SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
862POINT(0,0),
863LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
864POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
865LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
866MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
867MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
868LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))),
869MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))),
870POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))));
871ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
872POINT(0,0),
873LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
874POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
875LINESTRING(POINT(4,4), P
8766
877#====================================================================================
878# ST_GEOMETRYN(geometrycollection, number)
879#====================================================================================
880SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'), 1));
881ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0))'), 1))
882POINT(0 0)
883SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
884                                                  'POINT(0 0),'
885                                                  'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
886                                                  'POLYGON((0 0,0 5,5 5,5 0,0 0)))'), 2));
887ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
888                                                  'POINT(0 0),'
889                                                  'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
890
891LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10)
892SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
893                                                            'MULTIPOINT(0 0),'
894                                                            'MULTILINESTRING((0 0,5 5,10 10),'
895                                                                            '(0 0,-5 -5,-10 -10)),'
896                                                            'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),'
897                                                                         '((5 5,5 10,10 10,10 5,5 5))))'), 3));
898ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
899                                                            'MULTIPOINT(0 0),'
900                                                            'MULTILINESTRING((0 0,5 5,10 10),'
901
902MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5)))
903SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
904                                                            'POINT(0 0),'
905                                                            'GEOMETRYCOLLECTION(),'
906                                                            'GEOMETRYCOLLECTION('
907                                                                  'GEOMETRYCOLLECTION()),'
908                                                            'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10))'), 2));
909ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION('
910                                                            'POINT(0 0),'
911                                                            'GEOMETRYCOLLECTION(),'
912
913GEOMETRYCOLLECTION EMPTY
914SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
915POINT(10,10),
916LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
917POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
918LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4)))))), 2));
919ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
920POINT(10,10),
921LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6), POINT(8,8)),
922POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
923LINESTRING(POI
924LINESTRING(0 0,2 2,4 4,6 6,8 8)
925SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
926MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
927MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
928LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))),
929MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))),
930POLYGON(LINESTRING(POINT(2,2), POINT(2,13), POINT(13,13), POINT(13,2), POINT(2,2)),
931LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))))))), 3));
932ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
933MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
934MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
935LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-
936MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((2 2,2 13,13 13,13 2,2 2),(4 4,4 6,6 6,6 4,4 4)))
937SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
938POINT(0,0),
939LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
940POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
941LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
942MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
943MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
944LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))),
945MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))),
946POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))), 2));
947ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
948POINT(0,0),
949LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
950POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
951LINESTRING(POINT(4
952LINESTRING(0 0,2 2,4 4,6 6)
953SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
954POINT(0,0),
955LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
956POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
957LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
958MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
959MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
960LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))),
961MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))),
962POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))), 5));
963ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
964POINT(0,0),
965LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
966POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
967LINESTRING(POINT(4
968MULTILINESTRING((0 0,5 5,10 10),(0 0,-5 -5,-10 -10))
969SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
970POINT(0,0),
971LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
972POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
973LINESTRING(POINT(4,4), POINT(4,6), POINT(6,6), POINT(6,4), POINT(4,4))),
974MULTIPOINT(POINT(1e308,1e308), POINT(-1e308,1e308), POINT(1e308,-1e308)),
975MULTILINESTRING(LINESTRING(POINT(0,0), POINT(5,5), POINT(10,10)),
976LINESTRING(POINT(0,0), POINT(-5,-5), POINT(-10,-10))),
977MULTIPOLYGON(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(1,0), POINT(0,0))),
978POLYGON(LINESTRING(POINT(2,2), POINT(2,3), POINT(3,3), POINT(3,2), POINT(2,2))))))), 6));
979ST_ASTEXT(ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(
980POINT(0,0),
981LINESTRING(POINT(0,0), POINT(2,2), POINT(4,4), POINT(6,6)),
982POLYGON(LINESTRING(POINT(0,0), POINT(10,0), POINT(10,10), POINT(0,10), POINT(0,0)),
983LINESTRING(POINT(4
984MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0)),((2 2,2 3,3 3,3 2,2 2)))
985#====================================================================================
986# ST_X(point)
987#====================================================================================
988SELECT ST_X();
989ERROR 42000: Incorrect parameter count in the call to native function 'ST_X'
990SELECT ST_X(NULL);
991ST_X(NULL)
992NULL
993SELECT ST_X(ST_POINTFROMWKB());
994ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMWKB'
995SELECT ST_X(ST_POINTFROMWKB(NULL));
996ST_X(ST_POINTFROMWKB(NULL))
997NULL
998SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1))));
999ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))))' at line 1
1000SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(1,a))));
1001ERROR 42S22: Unknown column 'a' in 'field list'
1002SELECT ST_X(ST_POINTFROMWKB(ST_ASWKB(POINT(a,b))));
1003ERROR 42S22: Unknown column 'a' in 'field list'
1004SELECT ST_X(ST_POINTFROMTEXT());
1005ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMTEXT'
1006SELECT ST_X(ST_POINTFROMTEXT('NULL'));
1007ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1008SELECT ST_X(ST_POINTFROMTEXT('POINT()'));
1009ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1010SELECT ST_X(ST_POINTFROMTEXT('POINT(1)'));
1011ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1012SELECT ST_X(ST_POINTFROMTEXT('POINT(a 1)'));
1013ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1014SELECT ST_X(ST_POINTFROMTEXT('POINT(1 1,2)'));
1015ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1016SELECT ST_X(ST_POINTFROMTEXT('POINT('!' 0)'));
1017ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0)'))' at line 1
1018#====================================================================================
1019# ST_Y(point)
1020#====================================================================================
1021SELECT ST_Y();
1022ERROR 42000: Incorrect parameter count in the call to native function 'ST_Y'
1023SELECT ST_Y(NULL);
1024ST_Y(NULL)
1025NULL
1026SELECT ST_Y(ST_POINTFROMWKB());
1027ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMWKB'
1028SELECT ST_Y(ST_POINTFROMWKB(NULL));
1029ST_Y(ST_POINTFROMWKB(NULL))
1030NULL
1031SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1))));
1032ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '))))' at line 1
1033SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(1,a))));
1034ERROR 42S22: Unknown column 'a' in 'field list'
1035SELECT ST_Y(ST_POINTFROMWKB(ST_ASWKB(POINT(a,b))));
1036ERROR 42S22: Unknown column 'a' in 'field list'
1037SELECT ST_Y(ST_POINTFROMTEXT());
1038ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTFROMTEXT'
1039SELECT ST_Y(ST_POINTFROMTEXT('NULL'));
1040ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1041SELECT ST_Y(ST_POINTFROMTEXT('POINT()'));
1042ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1043SELECT ST_Y(ST_POINTFROMTEXT('POINT(1)'));
1044ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1045SELECT ST_Y(ST_POINTFROMTEXT('POINT(a 1)'));
1046ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1047SELECT ST_Y(ST_POINTFROMTEXT('POINT(1 1,2)'));
1048ERROR 22023: Invalid GIS data provided to function st_pointfromtext.
1049SELECT ST_Y(ST_POINTFROMTEXT('POINT('!' 0)'));
1050ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0)'))' at line 1
1051#====================================================================================
1052# ST_ISCLOSED(linestring)
1053#====================================================================================
1054SELECT ST_ISCLOSED();
1055ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED'
1056SELECT ST_ISCLOSED(NULL);
1057ST_ISCLOSED(NULL)
1058NULL
1059SELECT ST_ISCLOSED(ST_LINEFROMWKB());
1060ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB'
1061SELECT ST_ISCLOSED(ST_LINEFROMWKB(LINESTRING(POINT(0,0), POINT(2,2))), 2);
1062ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED'
1063SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(LINESTRING(POINT(a,1), POINT(2,2))));
1064ERROR 42S22: Unknown column 'a' in 'field list'
1065SELECT ST_ISCLOSED(ST_LINESTRINGFROMWKB(LINESTRING(POINT(a,1), POINT(2,b))));
1066ERROR 42S22: Unknown column 'a' in 'field list'
1067SELECT ST_ISCLOSED(ST_LINEFROMTEXT());
1068ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT'
1069SELECT ST_ISCLOSED(ST_LINEFROMTEXT('NULL'));
1070ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1071SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING()'));
1072ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1073SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0)'));
1074ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1075SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1'));
1076ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1077SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)'));
1078ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1079SELECT ST_ISCLOSED(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)'));
1080ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1
1081#====================================================================================
1082# ST_NUMPOINTS(linestring)
1083#====================================================================================
1084SELECT ST_NUMPOINTS();
1085ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMPOINTS'
1086SELECT ST_NUMPOINTS(NULL);
1087ST_NUMPOINTS(NULL)
1088NULL
1089SELECT ST_NUMPOINTS(ST_LINEFROMWKB());
1090ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB'
1091SELECT ST_NUMPOINTS(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))), 2);
1092ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMPOINTS'
1093SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2)))));
1094ERROR 42S22: Unknown column 'a' in 'field list'
1095SELECT ST_NUMPOINTS(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b)))));
1096ERROR 42S22: Unknown column 'a' in 'field list'
1097SELECT ST_NUMPOINTS(ST_LINEFROMTEXT());
1098ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT'
1099SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('NULL'));
1100ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1101SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING()'));
1102ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1103SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0)'));
1104ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1105SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1'));
1106ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1107SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)'));
1108ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1109SELECT ST_NUMPOINTS(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)'));
1110ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1
1111#====================================================================================
1112# ST_STARTPOINT(linestring)
1113#====================================================================================
1114SELECT ST_STARTPOINT();
1115ERROR 42000: Incorrect parameter count in the call to native function 'ST_STARTPOINT'
1116SELECT ST_STARTPOINT(NULL);
1117ST_STARTPOINT(NULL)
1118NULL
1119SELECT ST_STARTPOINT(ST_LINEFROMWKB());
1120ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB'
1121SELECT ST_STARTPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))), 2);
1122ERROR 42000: Incorrect parameter count in the call to native function 'ST_STARTPOINT'
1123SELECT ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2)))));
1124ERROR 42S22: Unknown column 'a' in 'field list'
1125SELECT ST_STARTPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b)))));
1126ERROR 42S22: Unknown column 'a' in 'field list'
1127SELECT ST_STARTPOINT(ST_LINEFROMTEXT());
1128ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT'
1129SELECT ST_STARTPOINT(ST_LINEFROMTEXT('NULL'));
1130ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1131SELECT ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING()'));
1132ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1133SELECT ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0)'));
1134ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1135SELECT ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1'));
1136ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1137SELECT ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)'));
1138ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1139SELECT ST_STARTPOINT(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)'));
1140ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1
1141#====================================================================================
1142# ST_ENDPOINT(linestring)
1143#====================================================================================
1144SELECT ST_ENDPOINT();
1145ERROR 42000: Incorrect parameter count in the call to native function 'ST_ENDPOINT'
1146SELECT ST_ENDPOINT(NULL);
1147ST_ENDPOINT(NULL)
1148NULL
1149SELECT ST_ENDPOINT(ST_LINEFROMWKB());
1150ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMWKB'
1151SELECT ST_ENDPOINT(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))), 2);
1152ERROR 42000: Incorrect parameter count in the call to native function 'ST_ENDPOINT'
1153SELECT ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2)))));
1154ERROR 42S22: Unknown column 'a' in 'field list'
1155SELECT ST_ENDPOINT(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b)))));
1156ERROR 42S22: Unknown column 'a' in 'field list'
1157SELECT ST_ENDPOINT(ST_LINEFROMTEXT());
1158ERROR 42000: Incorrect parameter count in the call to native function 'ST_LINEFROMTEXT'
1159SELECT ST_ENDPOINT(ST_LINEFROMTEXT('NULL'));
1160ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1161SELECT ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING()'));
1162ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1163SELECT ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0)'));
1164ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1165SELECT ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1'));
1166ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1167SELECT ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)'));
1168ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1169SELECT ST_ENDPOINT(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)'));
1170ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'))' at line 1
1171#====================================================================================
1172# ST_POINTN(linestring, number)
1173#====================================================================================
1174SELECT ST_POINTN();
1175ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN'
1176SELECT ST_POINTN(NULL);
1177ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN'
1178SELECT ST_POINTN(NULL, 1);
1179ST_POINTN(NULL, 1)
1180NULL
1181SELECT ST_POINTN(ST_LINEFROMWKB());
1182ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN'
1183SELECT ST_POINTN(ST_LINEFROMWKB(ST_ASWKB(LINESTRING(POINT(0,0), POINT(2,2)))));
1184ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN'
1185SELECT ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,2)))), 1);
1186ERROR 42S22: Unknown column 'a' in 'field list'
1187SELECT ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(a,1), POINT(2,b)))), 1);
1188ERROR 42S22: Unknown column 'a' in 'field list'
1189SELECT ST_POINTN(ST_LINESTRINGFROMWKB(ST_ASWKB(LINESTRING(POINT(1,1), POINT(2,2)))), a);
1190ERROR 42S22: Unknown column 'a' in 'field list'
1191SELECT ST_POINTN(ST_LINEFROMTEXT());
1192ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN'
1193SELECT ST_POINTN(ST_LINEFROMTEXT('NULL'));
1194ERROR 42000: Incorrect parameter count in the call to native function 'ST_POINTN'
1195SELECT ST_POINTN(ST_LINEFROMTEXT('NULL'), 1);
1196ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1197SELECT ST_POINTN(ST_LINEFROMTEXT('LINESTRING()'), 2);
1198ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1199SELECT ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0)'), 3);
1200ERROR 22023: Invalid GIS data provided to function st_linefromtext.
1201SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1 2,1'), 4);
1202ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1203SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(1 1,2 2,a 3)'), 5);
1204ERROR 22023: Invalid GIS data provided to function st_linestringfromtext.
1205SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING('!' 0,1 1,2 2)'), 6);
1206ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,1 1,2 2)'), 6)' at line 1
1207SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 0);
1208ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 0)
1209NULL
1210SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1);
1211ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1)
1212NULL
1213SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1024);
1214ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), -1024)
1215NULL
1216SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 10000);
1217ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 10000)
1218NULL
1219SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 1234567890);
1220ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 1234567890)
1221NULL
1222SELECT ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 'a');
1223ST_POINTN(ST_LINESTRINGFROMTEXT('LINESTRING(0 0,1 1,2 2)'), 'a')
1224NULL
1225Warnings:
1226Warning	1292	Truncated incorrect INTEGER value: 'a'
1227#====================================================================================
1228# ST_NUMINTERIORRINGS(polygon)
1229#====================================================================================
1230SELECT ST_NUMINTERIORRINGS();
1231ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMINTERIORRINGS'
1232SELECT ST_NUMINTERIORRINGS(NULL);
1233ST_NUMINTERIORRINGS(NULL)
1234NULL
1235SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB());
1236ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMWKB'
1237SELECT ST_NUMINTERIORRINGS(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))), 1);
1238ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMINTERIORRINGS'
1239SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(0,1), POINT(1,1), POINT(0,0))))));
1240ERROR 42S22: Unknown column 'a' in 'field list'
1241SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(b,1), POINT(1,1), POINT(0,0))))));
1242ERROR 42S22: Unknown column 'a' in 'field list'
1243SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT());
1244ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMTEXT'
1245SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('NULL'));
1246ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1247SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON(())'));
1248ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1249SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0))'));
1250ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1251SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 4,4 4,0 0)'));
1252ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1253SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,2 0,2))'));
1254ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1255SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 a,0 0))'));
1256ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1257SELECT ST_NUMINTERIORRINGS(ST_POLYGONFROMTEXT('POLYGON(('!' 0,2 0,2 4,0 0))'));
1258ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,2 0,2 4,0 0))'))' at line 1
1259#====================================================================================
1260# ST_EXTERIORRING(polygon)
1261#====================================================================================
1262SELECT ST_EXTERIORRING();
1263ERROR 42000: Incorrect parameter count in the call to native function 'ST_EXTERIORRING'
1264SELECT ST_EXTERIORRING(NULL);
1265ST_EXTERIORRING(NULL)
1266NULL
1267SELECT ST_EXTERIORRING(ST_POLYFROMWKB());
1268ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMWKB'
1269SELECT ST_EXTERIORRING(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))), 1);
1270ERROR 42000: Incorrect parameter count in the call to native function 'ST_EXTERIORRING'
1271SELECT ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(0,1), POINT(1,1), POINT(0,0))))));
1272ERROR 42S22: Unknown column 'a' in 'field list'
1273SELECT ST_EXTERIORRING(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(b,1), POINT(1,1), POINT(0,0))))));
1274ERROR 42S22: Unknown column 'a' in 'field list'
1275SELECT ST_EXTERIORRING(ST_POLYFROMTEXT());
1276ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMTEXT'
1277SELECT ST_EXTERIORRING(ST_POLYFROMTEXT('NULL'));
1278ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1279SELECT ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON(())'));
1280ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1281SELECT ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0))'));
1282ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1283SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 4,4 4,0 0)'));
1284ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1285SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,2 0,2))'));
1286ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1287SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 a,0 0))'));
1288ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1289SELECT ST_EXTERIORRING(ST_POLYGONFROMTEXT('POLYGON(('!' 0,2 0,2 4,0 0))'));
1290ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,2 0,2 4,0 0))'))' at line 1
1291#====================================================================================
1292# ST_INTERIORRINGN(polygon, number)
1293#====================================================================================
1294SELECT ST_INTERIORRINGN();
1295ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN'
1296SELECT ST_INTERIORRINGN(NULL);
1297ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN'
1298SELECT ST_INTERIORRINGN(NULL, 1);
1299ST_INTERIORRINGN(NULL, 1)
1300NULL
1301SELECT ST_INTERIORRINGN(ST_POLYFROMWKB());
1302ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN'
1303SELECT ST_INTERIORRINGN(ST_POLYFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))));
1304ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN'
1305SELECT ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(0,1), POINT(1,1), POINT(0,0))))), 1);
1306ERROR 42S22: Unknown column 'a' in 'field list'
1307SELECT ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(a,0), POINT(b,1), POINT(1,1), POINT(0,0))))), 1);
1308ERROR 42S22: Unknown column 'a' in 'field list'
1309SELECT ST_INTERIORRINGN(ST_POLYGONFROMWKB(ST_ASWKB(POLYGON(LINESTRING(POINT(0,0), POINT(0,1), POINT(1,1), POINT(0,0))))), a);
1310ERROR 42S22: Unknown column 'a' in 'field list'
1311SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT());
1312ERROR 42000: Incorrect parameter count in the call to native function 'ST_INTERIORRINGN'
1313SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT('NULL'), 1);
1314ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1315SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON(())'), 2);
1316ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1317SELECT ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0))'), 3);
1318ERROR 22023: Invalid GIS data provided to function st_polyfromtext.
1319SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 4,4 4,0 0)'), 4);
1320ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1321SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,2 0,2))'), 5);
1322ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1323SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 5,5 a,0 0))'), 6);
1324ERROR 22023: Invalid GIS data provided to function st_polygonfromtext.
1325SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON(('!' 0,2 0,2 4,0 0))'), 7);
1326ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 0,2 0,2 4,0 0))'), 7)' at line 1
1327SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 0);
1328ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 0)
1329NULL
1330SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1);
1331ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1)
1332NULL
1333SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1024);
1334ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), -1024)
1335NULL
1336SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 10000);
1337ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 10000)
1338NULL
1339SELECT ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 123456789);
1340ST_INTERIORRINGN(ST_POLYGONFROMTEXT('POLYGON((0 0,0 2,2 2,0 0))'), 123456789)
1341NULL
1342#====================================================================================
1343# ST_ISCLOSED(multilinestring)
1344#====================================================================================
1345SELECT ST_ISCLOSED();
1346ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED'
1347SELECT ST_ISCLOSED(NULL);
1348ST_ISCLOSED(NULL)
1349NULL
1350SELECT ST_ISCLOSED(ST_MLINEFROMWKB());
1351ERROR 42000: Incorrect parameter count in the call to native function 'ST_MLINEFROMWKB'
1352SELECT ST_ISCLOSED(ST_MLINEFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(1,1), POINT(2,2))))), 1);
1353ERROR 42000: Incorrect parameter count in the call to native function 'ST_ISCLOSED'
1354SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(1,1), POINT(2,2), POINT(3,3), POINT(a,4))))));
1355ERROR 42S22: Unknown column 'a' in 'field list'
1356SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMWKB(ST_ASWKB(MULTILINESTRING(LINESTRING(POINT(1,1), POINT(2,2)), LINESTRING(POINT(3,3), POINT(a,4))))));
1357ERROR 42S22: Unknown column 'a' in 'field list'
1358SELECT ST_ISCLOSED(ST_POLYFROMTEXT());
1359ERROR 42000: Incorrect parameter count in the call to native function 'ST_POLYFROMTEXT'
1360SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('NULL'));
1361ERROR 22023: Invalid GIS data provided to function st_mlinefromtext.
1362SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING(())'));
1363ERROR 22023: Invalid GIS data provided to function st_mlinefromtext.
1364SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((1 1,2 2),()'));
1365ERROR 22023: Invalid GIS data provided to function st_mlinefromtext.
1366SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((1 1,2 2,3 3)'));
1367ERROR 22023: Invalid GIS data provided to function st_mlinefromtext.
1368SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1 1,2 3,3 3,4))'));
1369ERROR 22023: Invalid GIS data provided to function st_multilinestringfromtext.
1370SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING((1 1,2 2,3 3,4 a))'));
1371ERROR 22023: Invalid GIS data provided to function st_multilinestringfromtext.
1372SELECT ST_ISCLOSED(ST_MULTILINESTRINGFROMTEXT('MULTILINESTRING(('!' 1,2 2,3 3,4 4'));
1373ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!' 1,2 2,3 3,4 4'))' at line 1
1374#====================================================================================
1375# ST_LENGTH(multilinestring)
1376#====================================================================================
1377SELECT ST_LENGTH();
1378ERROR 42000: Incorrect parameter count in the call to native function 'ST_LENGTH'
1379SELECT ST_LENGTH(NULL);
1380ST_LENGTH(NULL)
1381NULL
1382#====================================================================================
1383# ST_NUMGEOMETRIES(geometrycollection)
1384#====================================================================================
1385SELECT ST_NUMGEOMETRIES();
1386ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMGEOMETRIES'
1387SELECT ST_NUMGEOMETRIES(NULL);
1388ST_NUMGEOMETRIES(NULL)
1389NULL
1390SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB());
1391ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMCOLLFROMWKB'
1392SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(1,1), POINT(2,2))))), 1);
1393ERROR 42000: Incorrect parameter count in the call to native function 'ST_NUMGEOMETRIES'
1394SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(a,1), POINT(2,2))))));
1395ERROR 42S22: Unknown column 'a' in 'field list'
1396SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,b), LINESTRING(POINT(a,1), POINT(2,2))))));
1397ERROR 42S22: Unknown column 'b' in 'field list'
1398SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT());
1399ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMCOLLFROMTEXT'
1400SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('NULL'));
1401ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1402SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(1)'));
1403ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1404SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0))'));
1405ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1406SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2)'));
1407ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1408SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2))'));
1409ERROR 22023: Invalid GIS data provided to function st_geometrycollectionfromtext.
1410SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 a))'));
1411ERROR 22023: Invalid GIS data provided to function st_geometrycollectionfromtext.
1412SELECT ST_NUMGEOMETRIES(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 '!'))'));
1413ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!'))'))' at line 1
1414#====================================================================================
1415# ST_GEOMETRYN(geometrycollection, number)
1416#====================================================================================
1417SELECT ST_GEOMETRYN();
1418ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN'
1419SELECT ST_GEOMETRYN(NULL);
1420ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN'
1421SELECT ST_GEOMETRYN(NULL, 1);
1422ST_GEOMETRYN(NULL, 1)
1423NULL
1424SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMWKB());
1425ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN'
1426SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(1,1), POINT(2,2))))));
1427ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN'
1428SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(a,1), POINT(2,2))))), 1);
1429ERROR 42S22: Unknown column 'a' in 'field list'
1430SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,b), LINESTRING(POINT(a,1), POINT(2,2))))), 1);
1431ERROR 42S22: Unknown column 'b' in 'field list'
1432SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMWKB(ST_ASWKB(GEOMETRYCOLLECTION(POINT(0,0), LINESTRING(POINT(1,1), POINT(2,2))))), A);
1433ERROR 42S22: Unknown column 'A' in 'field list'
1434SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT());
1435ERROR 42000: Incorrect parameter count in the call to native function 'ST_GEOMETRYN'
1436SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('NULL'), 1);
1437ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1438SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(1)'), 2);
1439ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1440SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0))'), 3);
1441ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1442SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2)'), 4);
1443ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1444SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2))'), 5);
1445ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1446SELECT ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 a))'), 6);
1447ERROR 22023: Invalid GIS data provided to function st_geomcollfromtext.
1448SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 '!'))'), 7);
1449ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '!'))'), 7)' at line 1
1450SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 0);
1451ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 0)
1452NULL
1453SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1);
1454ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1)
1455NULL
1456SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1024);
1457ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), -1024)
1458NULL
1459SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 10000);
1460ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 10000)
1461NULL
1462SELECT ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 123456789);
1463ST_GEOMETRYN(ST_GEOMETRYCOLLECTIONFROMTEXT('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1,2 2))'), 123456789)
1464NULL
1465# Check procedure to work with Point and MultiPoint properties
1466CREATE PROCEDURE point_attri()
1467BEGIN
1468SELECT ST_X(ST_POINTFROMTEXT('POINT(0 0)'));
1469SELECT ST_X(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)'));
1470SELECT ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)'));
1471SELECT ST_Y(ST_POINTFROMTEXT('POINT(0 0)'));
1472SELECT ST_Y(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)'));
1473SELECT ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)'));
1474END |
1475# Call the proc
1476CALL point_attri;
1477ST_X(ST_POINTFROMTEXT('POINT(0 0)'))
14780
1479ST_X(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)'))
14801.1111
1481ST_X(ST_POINTFROMTEXT('POINT(1e308 1e308)'))
14821e308
1483ST_Y(ST_POINTFROMTEXT('POINT(0 0)'))
14840
1485ST_Y(ST_POINTFROMTEXT('POINT(1.1111 -1.1111)'))
1486-1.1111
1487ST_Y(ST_POINTFROMTEXT('POINT(1e308 1e308)'))
14881e308
1489# Dropping the created procedure
1490DROP PROCEDURE point_attri;
1491# Check procedure to work with Linestring and MultiLineString properties
1492CREATE PROCEDURE line_attri()
1493BEGIN
1494SELECT ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)'));
1495SELECT ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)'));
1496SELECT ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,10 0,0 0,-10 0,0 0,0 10,0 0,0 -10,0 0)'));
1497SELECT ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)')));
1498SELECT ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,0 0)')));
1499SELECT ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)'), 8));
1500SELECT ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,1 1,2 2,0 0),(0 0,-1 -1,-2 -2,0 0))'));
1501SELECT ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,0 10),(0 0,-10 0),(0 0,0 -10))'));
1502END |
1503# Call the proc
1504CALL line_attri;
1505ST_ISCLOSED(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)'))
15061
1507ST_NUMPOINTS(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)'))
15084
1509ST_LENGTH(ST_LINEFROMTEXT('LINESTRING(0 0,10 0,0 0,-10 0,0 0,0 10,0 0,0 -10,0 0)'))
151080
1511ST_ASTEXT(ST_STARTPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,0 0)')))
1512POINT(0 0)
1513ST_ASTEXT(ST_ENDPOINT(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,0 0)')))
1514POINT(0 0)
1515ST_ASTEXT(ST_POINTN(ST_LINEFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9)'), 8))
1516POINT(7 7)
1517ST_ISCLOSED(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,1 1,2 2,0 0),(0 0,-1 -1,-2 -2,0 0))'))
15181
1519ST_LENGTH(ST_MLINEFROMTEXT('MULTILINESTRING((0 0,10 0),(0 0,0 10),(0 0,-10 0),(0 0,0 -10))'))
152040
1521# Dropping the created procedure
1522DROP PROCEDURE line_attri;
1523CREATE PROCEDURE poly_attri()
1524BEGIN
1525SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'));
1526SELECT ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'));
1527SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')));
1528SELECT ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')));
1529SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'), 1));
1530SELECT ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2));
1531END |
1532# Call the proc
1533CALL poly_attri;
1534ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'))
15350
1536ST_NUMINTERIORRINGS(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'))
15372
1538ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))')))
1539LINESTRING(0 0,0 10,10 10,10 0,0 0)
1540ST_ASTEXT(ST_EXTERIORRING(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))')))
1541LINESTRING(0 0,0 10,10 10,10 0,0 0)
1542ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0))'), 1))
1543NULL
1544ST_ASTEXT(ST_INTERIORRINGN(ST_POLYFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,2 4,4 4,4 2,2 2),(6 6,6 8,8 8,8 6,6 6))'), 2))
1545LINESTRING(6 6,6 8,8 8,8 6,6 6)
1546# Dropping the created procedure
1547DROP PROCEDURE poly_attri;
1548CREATE PROCEDURE geom_coll_attri()
1549BEGIN
1550SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1551                                                      'POINT(0 0),'
1552                                                      'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1553                                                      'POLYGON((0 0,0 5,5 5,5 0,0 0)))'));
1554SELECT ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1555                                                      'POINT(0 0),'
1556                                                      'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1557                                                      'GEOMETRYCOLLECTION('
1558                                                            'GEOMETRYCOLLECTION()),'
1559                                                      'POLYGON((0 0,0 5,5 5,5 0,0 0)))'));
1560SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1561                                                            'POINT(0 0),'
1562                                                            'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1563                                                            'POLYGON((0 0,0 5,5 5,5 0,0 0)))'), 3));
1564SELECT ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1565                                                            'POINT(0 0),'
1566                                                            'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1567                                                            'GEOMETRYCOLLECTION('
1568                                                                  'GEOMETRYCOLLECTION()),'
1569                                                            'POLYGON((0 0,0 5,5 5,5 0,0 0)))'), 3));
1570END |
1571# Call the proc
1572CALL geom_coll_attri;
1573ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1574                                                      'POINT(0 0),'
1575                                                      'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1576
15773
1578ST_NUMGEOMETRIES(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1579                                                      'POINT(0 0),'
1580                                                      'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1581
15824
1583ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1584                                                            'POINT(0 0),'
1585                                                            'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1586
1587POLYGON((0 0,0 5,5 5,5 0,0 0))
1588ST_ASTEXT(ST_GEOMETRYN(ST_GEOMCOLLFROMTEXT('GEOMETRYCOLLECTION('
1589                                                            'POINT(0 0),'
1590                                                            'LINESTRING(0 0,2 2,4 4,6 6,8 8,10 10),'
1591
1592GEOMETRYCOLLECTION(GEOMETRYCOLLECTION EMPTY)
1593# Dropping the created procedure
1594DROP PROCEDURE geom_coll_attri;
1595# Final cleanup
1596DROP TABLE gis_point;
1597DROP TABLE gis_linestring;
1598DROP TABLE gis_polygon;
1599DROP TABLE gis_multi_point;
1600DROP TABLE gis_multi_linestring;
1601DROP TABLE gis_multi_polygon;
1602DROP TABLE gis_geometrycollection;
1603#
1604# WL#8579 Spatial Reference Systems
1605#
1606# SRID 0 (should pass)
1607SELECT ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 0));
1608ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 0))
1609NULL
1610# Projected SRS (should pass)
1611SELECT ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 2000));
1612ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 2000))
1613NULL
1614# Geographic SRS (should pass)
1615SELECT ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 4326));
1616ST_LENGTH(ST_GEOMFROMTEXT('POINT(0 0)', 4326))
1617NULL
1618#
1619# WL#8579 Spatial Reference Systems
1620# GIS functions that do not depend on any SRS
1621#
1622CREATE PROCEDURE geom_prop_func(IN srid INT)
1623BEGIN
1624SET @pt_geom = ST_GEOMFROMTEXT('POINT(10 20)', srid);
1625SET @ln_geom = ST_GEOMFROMTEXT('LINESTRING(0 0,2 2,4 4,6 6,8 8, 10 10)', srid);
1626SET @py_geom = ST_GEOMFROMTEXT('POLYGON((0 0,0 10,10 10,10 0,0 0),(4 4,4 6,6 6,6 4,4 4))', srid);
1627SET @gc_geom = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION('
1628                                       'POINT(0 0),'
1629                                       'LINESTRING(0 0,10 10),'
1630                                       'POLYGON((0 0,0 10,10 10,10 0, 0 0)),'
1631                                       'MULTIPOINT(0 0,2 2,4 4,6 6,8 8,10 10),'
1632                                       'MULTILINESTRING((0 0,10 10),(0 10,10 0)),'
1633                                       'MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((5 5,5 10,10 10,10 5,5 5))))', srid);
1634# GIS geometry property functions that do not depend on any SRS
1635DO ST_SRID(@pt_geom);
1636DO ST_ISEMPTY(@pt_geom);
1637DO ST_DIMENSION(@pt_geom);
1638DO ST_GEOMETRYTYPE(@pt_geom);
1639DO ST_X(@pt_geom);
1640DO ST_Y(@pt_geom);
1641DO ST_ISCLOSED(@ln_geom);
1642DO ST_NUMPOINTS(@ln_geom);
1643DO ST_ENDPOINT(@ln_geom);
1644DO ST_POINTN(@ln_geom, 2);
1645DO ST_STARTPOINT(@ln_geom);
1646DO ST_NUMINTERIORRING(@py_geom);
1647DO ST_NUMINTERIORRINGS(@py_geom);
1648DO ST_EXTERIORRING(@py_geom);
1649DO ST_INTERIORRINGN(@py_geom, 1);
1650DO ST_NUMGEOMETRIES(@gc_geom);
1651DO ST_GEOMETRYN(@gc_geom, 1);
1652END |
1653# SRID 0 (should pass)
1654CALL geom_prop_func(0);
1655# Projected SRS (should pass)
1656CALL geom_prop_func(2000);
1657# Geographic SRS (should fail)
1658CALL geom_prop_func(4326);
1659ERROR 22S00: st_isclosed(LINESTRING) has not been implemented for geographic spatial reference systems.
1660DROP PROCEDURE geom_prop_func;
1661#
1662# WL#11096 Don't do Cartesian computations on geographic geometries
1663#
1664# Assume SRID 10 is not defined.
1665DO ST_ISCLOSED(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000');
1666ERROR SR001: There's no spatial reference system with SRID 10.
1667DO ST_LENGTH(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000');
1668ERROR SR001: There's no spatial reference system with SRID 10.
1669DO ST_SRID(ST_GEOMFROMTEXT('LINESTRING(0 0, 10 10)'), 10);
1670ERROR SR001: There's no spatial reference system with SRID 10.
1671DO ST_DIMENSION(x'0A000000010100000000000000000000000000000000000000');
1672ERROR SR001: There's no spatial reference system with SRID 10.
1673DO ST_ENDPOINT(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000');
1674ERROR SR001: There's no spatial reference system with SRID 10.
1675DO ST_EXTERIORRING(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
1676ERROR SR001: There's no spatial reference system with SRID 10.
1677DO ST_GEOMETRYN(x'0A000000010700000001000000010100000000000000000000000000000000000000', 1);
1678ERROR SR001: There's no spatial reference system with SRID 10.
1679DO ST_INTERIORRINGN(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000', 1);
1680ERROR SR001: There's no spatial reference system with SRID 10.
1681DO ST_ISEMPTY(x'0A000000010100000000000000000000000000000000000000');
1682ERROR SR001: There's no spatial reference system with SRID 10.
1683DO ST_NUMGEOMETRIES(x'0A000000010700000001000000010100000000000000000000000000000000000000');
1684ERROR SR001: There's no spatial reference system with SRID 10.
1685DO ST_NUMINTERIORRING(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
1686ERROR SR001: There's no spatial reference system with SRID 10.
1687DO ST_NUMINTERIORRINGS(x'0A0000000103000000010000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000');
1688ERROR SR001: There's no spatial reference system with SRID 10.
1689DO ST_NUMPOINTS(x'0A000000010400000001000000010100000000000000000000000000000000000000');
1690ERROR SR001: There's no spatial reference system with SRID 10.
1691DO ST_NUMPOINTS(x'0A000000010400000001000000010100000000000000000000000000000000000000');
1692ERROR SR001: There's no spatial reference system with SRID 10.
1693DO ST_POINTN(x'0A000000010400000001000000010100000000000000000000000000000000000000', 1);
1694ERROR SR001: There's no spatial reference system with SRID 10.
1695DO ST_STARTPOINT(x'0A0000000102000000020000000000000000000000000000000000000000000000000000000000000000000000');
1696ERROR SR001: There's no spatial reference system with SRID 10.
1697DO ST_X(x'0A000000010100000000000000000000000000000000000000');
1698ERROR SR001: There's no spatial reference system with SRID 10.
1699DO ST_Y(x'0A000000010100000000000000000000000000000000000000');
1700ERROR SR001: There's no spatial reference system with SRID 10.
1701SET @LINE = ST_GEOMFROMTEXT( 'LINESTRING(0 0 , 1 1 )', 4326);
1702SET @MLINE = ST_GEOMFROMTEXT( 'MULTILINESTRING((0 0 , 1 1 ))', 4326);
1703SELECT ST_LENGTH( @LINE, 'METRE');
1704ST_LENGTH( @LINE, 'METRE')
1705156897.79947
1706SELECT ST_LENGTH( @MLINE, 'METRE');
1707ST_LENGTH( @MLINE, 'METRE')
1708156897.79947
1709SELECT ST_LENGTH( @LINE, 'METER');
1710ERROR SU001: There's no unit of measure named 'METER'.
1711SELECT ST_LENGTH( @LINE, NULL);
1712ST_LENGTH( @LINE, NULL)
1713NULL
1714SELECT ST_LENGTH( NULL, 'FOOT');
1715ST_LENGTH( NULL, 'FOOT')
1716NULL
1717SET @LINE = ST_GEOMFROMTEXT( 'LINESTRING(0 0 , 1 1 )', 32167);
1718SELECT ST_LENGTH( @LINE);
1719ST_LENGTH( @LINE)
17201.4142135623730951
1721SELECT ST_LENGTH( @LINE, 'METRE');
1722ST_LENGTH( @LINE, 'METRE')
17230.43105
1724