File: rpl_gis_geometry.test

package info (click to toggle)
mysql-8.0 8.0.43-3
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,273,924 kB
  • sloc: cpp: 4,684,605; ansic: 412,450; pascal: 108,398; java: 83,641; perl: 30,221; cs: 27,067; sql: 26,594; sh: 24,181; python: 21,816; yacc: 17,169; php: 11,522; xml: 7,388; javascript: 7,076; makefile: 2,194; lex: 1,075; awk: 670; asm: 520; objc: 183; ruby: 97; lisp: 86
file content (370 lines) | stat: -rw-r--r-- 18,885 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
#############################################################################################
#                                                                                           #
# The aim of this test is to set up replication between a master                            #
# and slave and check how it works with GEOMETRY data.                                      #
#                                                                                           #
# The following scenarios are tested :                                                      #
#                                                                                           #
#    1. Creating a table and inserting different types of spatial data into it.             #
#    2. Selecting the values from the table using a few geometric functions.                #
#    3. Creating a view on the table and checking whether it was replicated on slave        #
#       and then dropping the view.                                                         #
#    4. Altering the table by adding columns, adding index, dropping columns and            #
#       dropping index.                                                                     #
#    5. Updating values in the table.                                                       #
#    6. Deleting rows from the table.                                                       #
#    7. Dropping the table.                                                                 #
#                                                                                           #
# Creation Date : 2015-10-12                                                                #
# Author : Deepa Dixit                                                                      #
#                                                                                           #
#############################################################################################

--source include/set_privilege_checks_user_as_system_user.inc
--source include/master-slave.inc

#############################################################################################
# Create tables and insert different GEOMETRY data                                          #
#############################################################################################

--connection master

--echo # Create tables

CREATE TABLE point_geom(id INT PRIMARY KEY, pt POINT NOT NULL SRID 0, SPATIAL INDEX(pt));
CREATE TABLE linestring_geom(id INT PRIMARY KEY, lnstr LINESTRING NOT NULL SRID 0, SPATIAL INDEX(lnstr));
CREATE TABLE polygon_geom(id INT PRIMARY KEY, poly POLYGON NOT NULL SRID 0, SPATIAL INDEX(poly));
CREATE TABLE multipoint_geom(id INT PRIMARY KEY, mpt MULTIPOINT NOT NULL SRID 0, SPATIAL INDEX(mpt));
CREATE TABLE multilinestring_geom(id INT PRIMARY KEY, mlnstr MULTILINESTRING NOT NULL SRID 0, SPATIAL INDEX(mlnstr));
CREATE TABLE multipolygon_geom(id INT PRIMARY KEY, mpoly MULTIPOLYGON NOT NULL SRID 0, SPATIAL INDEX(mpoly));
CREATE TABLE geometrycollection_geom(id INT PRIMARY KEY, geomcoll GEOMETRYCOLLECTION NOT NULL SRID 0, SPATIAL INDEX(geomcoll));
CREATE TABLE geom_data(id INT PRIMARY KEY , geom GEOMETRY NOT NULL SRID 0, SPATIAL INDEX(geom));

--echo # Insert different GEOMETRY data

INSERT INTO point_geom VALUES
    (10,ST_GEOMFROMTEXT('POINT(0 0)')),
    (11,ST_GEOMFROMTEXT('POINT(6 4)')),
    (12,ST_GEOMFROMTEXT('POINT(3 4)')),
    (13,ST_GEOMFROMTEXT('POINT(5 5)')),
    (14,ST_GEOMFROMTEXT('POINT(2 1)'));

INSERT INTO linestring_geom VALUES
    (20,ST_GEOMFROMTEXT('LINESTRING(0 0,5 5,6 6)')),
    (21,ST_GEOMFROMTEXT('LINESTRING(2 3,4 5)')),
    (22,ST_GEOMFROMTEXT('LINESTRING(3 0,7 5,6 3,2 0)')),
    (23,ST_GEOMFROMTEXT('LINESTRING(5 0,9 5,2 6)')),
    (24,ST_GEOMFROMTEXT('LINESTRING(0 0,5 3,3 4,7 7,9 0)'));

INSERT INTO polygon_geom VALUES
    (30,ST_GEOMFROMTEXT('POLYGON((0 0,6 7,8 8,3 9,0 0),(3 6,4 6,4 7,3 6))')),
    (31,ST_GEOMFROMTEXT('POLYGON((1 2,5 4,9 9,1 9,1 2))')),
    (32,ST_GEOMFROMTEXT('POLYGON((2 3,3 5,8 1,2 6,2 3))')),
    (33,ST_GEOMFROMTEXT('POLYGON((8 0,2 7,5 6,9 5,8 0))')),
    (34,ST_GEOMFROMTEXT('POLYGON((5 2,5 10,10 10,10 2,5 2),(7 5,9 5,8 8,6 9,7 5))'));

INSERT INTO multipoint_geom VALUES
    (40,ST_GEOMFROMTEXT('MULTIPOINT(2 2,3 3,4 4)')),
    (41,ST_GEOMFROMTEXT('MULTIPOINT(1 2,3 0,7 4,6 6)')),
    (42,ST_GEOMFROMTEXT('MULTIPOINT(2 9,3 4,6 4,5 5,3 3)')),
    (43,ST_GEOMFROMTEXT('MULTIPOINT(8 7,2 1,5 4,3 4,2 8,4 5)')),
    (44,ST_GEOMFROMTEXT('MULTIPOINT(3 6,2 3,7 3)'));

INSERT INTO multilinestring_geom VALUES
    (50,ST_GEOMFROMTEXT('MULTILINESTRING((0 0,2 3,4 5),(6 6,8 8,9 9,10 10))')),
    (51,ST_GEOMFROMTEXT('MULTILINESTRING((2 3,5 6,4 4,1 1),(2 6,5 8,7 9,9 10))')),
    (52,ST_GEOMFROMTEXT('MULTILINESTRING((0 1,6 3,7 5),(6 2,5 8,6 9))')),
    (53,ST_GEOMFROMTEXT('MULTILINESTRING((5 5,3 7,7 8),(2 2,6 9,10 9),(1 2,6 7,9 9))')),
    (54,ST_GEOMFROMTEXT('MULTILINESTRING((0 1,5 3,8 5),(7 6,9 8,10 9,10 11))'));

INSERT INTO multipolygon_geom VALUES
    (60,ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 5,5 5,5 0,0 0)),((2 2,4 5,6 2,2 2)))')),
    (61,ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 6,6 6,6 0,0 0)),((2 1,2 3,5 3,5 1,2 1)))')),
    (62,ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 7,7 7,7 0,0 0)),((3 3,5 6,7 3,3 3)),((2 6,5 8,8 6,2 6)))')),
    (63,ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 8,8 8,8 0,0 0)),((0 0,0 2,2 2,2 0,0 0)))')),
    (64,ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 9,9 9,9 0,0 0)),((1 1,1 3,3 3,3 1,1 1)))'));

INSERT INTO geometrycollection_geom VALUES
    (70,ST_GEOMFROMTEXT('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))))')),
    (71,ST_GEOMFROMTEXT('GEOMETRYCOLLECTION('
                            'POINT(4 5),'
                            'LINESTRING(0 0,10 10,11 11),'
                            'POLYGON((0 0,0 8,8 8,8 0, 0 0)),'
                            'MULTIPOINT(0 0,4 4,6 4,8 6,9 9,12 12),'
                            'MULTILINESTRING((0 0,11 11),(0 8,1 0)),'
                            'MULTIPOLYGON(((0 0,0 9,9 9,9 0,0 0)),((1 1,4 4,4 1,1 1))))')),
    (72,ST_GEOMFROMTEXT('GEOMETRYCOLLECTION('
                            'POINT(0 0),'
                            'LINESTRING(0 0,2 2,3 3,4 4),'
                            'POLYGON((0 0,0 5,5 5,5 0, 0 0)),'
                            'MULTIPOINT(0 5,1 6),'
                            'MULTILINESTRING((0 0,9 9,10 10),(0 1,1 0),(1 0,1 1,1 2,1 3,1 4)),'
                            'MULTIPOLYGON(((0 0,0 6,6 6,6 0,0 0)),((1 1,7 10,9 8,7 4,1 1))))'));

INSERT INTO geom_data SELECT * FROM point_geom;
INSERT INTO geom_data SELECT * FROM linestring_geom;
INSERT INTO geom_data SELECT * FROM polygon_geom;
INSERT INTO geom_data SELECT * FROM multipoint_geom;
INSERT INTO geom_data SELECT * FROM multilinestring_geom;
INSERT INTO geom_data SELECT * FROM multipolygon_geom;
INSERT INTO geom_data SELECT * FROM geometrycollection_geom;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether data was inserted on the slave
SELECT id, ST_ASTEXT(geom) FROM geom_data;
SELECT COUNT(*) FROM geom_data;
SELECT ST_AREA(geom) FROM geom_data WHERE ST_GEOMETRYTYPE(geom) = 'POLYGON';

--let $diff_tables = master:geom_data, slave:geom_data
--source include/diff_tables.inc

#############################################################################################
# Create views on the LINESTRING and GEOMETRYCOLLECTION types                               #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Create a view on LINESTRING type
CREATE VIEW linestring_view
AS SELECT ST_NUMPOINTS(geom) AS numpoints, ST_LENGTH(geom) AS length
FROM geom_data WHERE ST_GEOMETRYTYPE(geom) = 'LINESTRING';

--echo # Create a view on GEOMETRYCOLLECTION type
CREATE VIEW geomcollection_view
AS SELECT ST_NUMGEOMETRIES(geom) as numgeometries, ST_GEOMETRYN(geom,3) as nthgeom
FROM geom_data WHERE ST_GEOMETRYTYPE(geom) = 'GEOMETRYCOLLECTION';

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether views were created on slave
SELECT * FROM linestring_view;
SELECT numgeometries, ST_ASTEXT(nthgeom) FROM geomcollection_view;

--let $diff_tables = master:geom_data, slave:geom_data
--source include/diff_tables.inc

#############################################################################################
# Drop the views                                                                            #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Drop the views
DROP VIEW linestring_view;
DROP VIEW geomcollection_view;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether views are dropped on slave
--error ER_NO_SUCH_TABLE
SELECT * FROM linestring_view;

--error ER_NO_SUCH_TABLE
SELECT * FROM geomcollection_view;

#############################################################################################
# Update a row in the table                                                                 #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Update a row in the table
UPDATE geom_data SET geom = ST_GEOMFROMTEXT('POINT(4 5)') WHERE id = 10;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether row is updated on slave
SELECT id, ST_ASTEXT(geom) FROM geom_data WHERE id = 10;

--let $diff_tables = master:geom_data, slave:geom_data
--source include/diff_tables.inc

#############################################################################################
# Delete a row from the table                                                               #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Delete a row from the table
DELETE FROM geom_data WHERE id = 13;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether row is deleted on slave
SELECT COUNT(geom) FROM geom_data;

--let $diff_tables = master:geom_data, slave:geom_data
--source include/diff_tables.inc

#############################################################################################
# Drop the spatial index from the table                                                     #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Drop the spatial index from the table
ALTER TABLE geom_data DROP INDEX geom;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether spatial index is dropped on slave
SHOW CREATE TABLE geom_data;

#############################################################################################
# Add spatial index to the column of GEOMETRY data type                                     #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Add spatial index to the column of GEOMETRY data type
ALTER TABLE geom_data ADD SPATIAL INDEX(geom);

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether spatial index is added on slave
SHOW CREATE TABLE geom_data;

#############################################################################################
# Add a column of GEOMETRY data type to the table and populate the column                   #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Add a column of GEOMETRY data type
ALTER TABLE geom_data ADD COLUMN geom1 GEOMETRY;

--echo # Insert values into the column
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POINT(2 3)') WHERE id = 10;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POINT(0 0)') WHERE id = 11;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POINT(9 9)') WHERE id = 12;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POINT(8 7)') WHERE id = 14;

UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('LINESTRING(0 0,1 1,2 2,3 3)') WHERE id = 20;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('LINESTRING(5 5,6 7,2 3,9 9)') WHERE id = 21;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('LINESTRING(6 6,8 9,6 7,10 10)') WHERE id = 22;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('LINESTRING(7 7,5 5,7 8,4 5)') WHERE id = 23;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('LINESTRING(9 9,1 6,0 0,2 3)') WHERE id = 24;

UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POLYGON((0 0,0 6,6 6,6 0,0 0))') WHERE id = 30;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POLYGON((0 0,6 6,6 0,0 0))') WHERE id = 31;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POLYGON((0 0,0 7,7 7,7 0,0 0))') WHERE id = 32;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POLYGON((1 1,1 6,6 6,6 1,1 1))') WHERE id = 33;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('POLYGON((2 2,2 8,8 8,8 2,2 2))') WHERE id = 34;

UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOINT(3 4,5 6,10 10,4 4)') WHERE id = 40;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOINT(0 0,2 2,3 3)') WHERE id = 41;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOINT(5 5,5 6,5 7,5 8)') WHERE id = 42;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOINT(7 8,2 3,5 6)') WHERE id = 43;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOINT(6 7,3 4,2 5,7 8,9 9)') WHERE id = 44;

UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTILINESTRING((5 6,8 8,9 9),(0 0,3 3,6 7))') WHERE id = 50;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTILINESTRING((5 6,8 8,9 9),(0 0,3 3,6 7),(1 1,5 5))') WHERE id = 51;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTILINESTRING((6 7,9 9,10 10),(0 0,3 3,6 7))') WHERE id = 52;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTILINESTRING((7 6,7 8,7 9),(1 1,4 4,7 7))') WHERE id = 53;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTILINESTRING((4 6,9 8,7 9),(3 0,3 3,3 7))') WHERE id = 54;

UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOLYGON(((0 0,0 3,3 3,3 0,0 0)),((3 7,6 9,9 7,3 7)))') WHERE id = 60;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOLYGON(((1 1,1 4,4 4,4 1,1 1)),((4 7,7 9,10 7,4 7)))') WHERE id = 61;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOLYGON(((2 2,2 5,5 5,5 2,2 2)),((5 6,7 10,9 7,5 6)),((0 0,5 5,5 0,0 0)))') WHERE id = 62;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOLYGON(((3 3,3 6,6 6,6 3,3 3)),((0 0,0 2,2 2,2 0,0 0)))') WHERE id = 63;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('MULTIPOLYGON(((4 4,4 7,7 7,7 4,4 4)),((5 7,6 9,9 7,5 7)))') WHERE id = 64;

UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION('
                                                 'POINT(6 7),'
                                                 'LINESTRING(4 4,5 5,8 8,10 10),'
                                                 'POLYGON((3 3,3 6,6 6,6 3,3 3)),'
                                                 'MULTIPOINT(5 5,7 8,9 10,10 10),'
                                                 'MULTILINESTRING((2 2,3 4,5 5),(5 6,7 7,7 8,9 9)),'
                                                 'MULTIPOLYGON(((4 4,4 7,7 7,7 4,4 4)),((3 3,5 6,7 3,3 3))))')
                                              WHERE id = 70;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION('
                                                 'POINT(7 8),'
                                                 'LINESTRING(5 5,6 6,9 9,10 10),'
                                                 'POLYGON((0 0,0 8,8 8,8 0,0 0)),'
                                                 'MULTIPOINT(7 5,7 8,7 10,7 11),'
                                                 'MULTILINESTRING((2 1,3 6,9 5),(9 6,8 7,7 6,5 9)),'
                                                 'MULTIPOLYGON(((0 0,0 4,4 4,4 0,0 0)),((6 3,5 6,7 3,6 3))))')
                                              WHERE id = 71;
UPDATE geom_data SET geom1 = ST_GEOMFROMTEXT('GEOMETRYCOLLECTION('
                                                 'POINT(9 6),'
                                                 'LINESTRING(7 8,7 9,7 10),'
                                                 'POLYGON((4 5,6 7,9 5,4 5)),'
                                                 'MULTIPOINT(5 0,6 0),'
                                                 'MULTILINESTRING((4 3,4 7,4 8),(4 4,5 6,7 6,8 8,10 10)),'
                                                 'MULTIPOLYGON(((7 7,7 10,10 10,10 7,7 7)),((3 4,5 7,7 4,3 4))))')
                                              WHERE id = 72;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether the column is added and populated on slave
SHOW CREATE TABLE geom_data;
SELECT id, ST_ASTEXT(geom1), ST_GEOMETRYTYPE(geom1), ST_DIMENSION(geom1) FROM geom_data;

--let $diff_tables = master:geom_data, slave:geom_data
--source include/diff_tables.inc

#############################################################################################
# Drop a column from the table                                                              #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Drop a column from the table

ALTER TABLE geom_data DROP COLUMN geom1;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether column is dropped on slave
SHOW CREATE TABLE geom_data;

#############################################################################################
# Drop all the tables                                                                       #
#############################################################################################

--echo [Connection Master]
--connection master

--echo # Drop all the tables

DROP TABLE point_geom;
DROP TABLE linestring_geom;
DROP TABLE polygon_geom;
DROP TABLE multipoint_geom;
DROP TABLE multilinestring_geom;
DROP TABLE multipolygon_geom;
DROP TABLE geometrycollection_geom;
DROP TABLE geom_data;

--source include/sync_slave_sql_with_master.inc
--echo [Connection Slave]

--echo # Check whether table is dropped on slave
--error ER_NO_SUCH_TABLE
SELECT COUNT(id) FROM geom_data;

--source include/rpl_end.inc