185 lines
5.4 KiB
Plaintext
185 lines
5.4 KiB
Plaintext
#############################################################################
|
|
#
|
|
# The aim of this test case is to test the new column property/constraint
|
|
# on geometry columns which allows to specify the SRID.
|
|
#
|
|
# E.g: CREATE TABLE t1(c1 GEOMETRY SRID 4326, c2 POINT SRID 0 NOT NULL);
|
|
#
|
|
# The following scenarios are tested :
|
|
#
|
|
# 1. Test table having columns with and without SRID property must
|
|
# replicate properly.
|
|
# 2. Test removing of the SRID property from a geometry column must work
|
|
# fine and replicates properly.
|
|
# 3. Test the SRID property on a generated column must work fine and
|
|
# replicate properly.
|
|
#
|
|
# Creation date: 2017-08-03
|
|
# Author: Pavan Naik
|
|
#
|
|
#############################################################################
|
|
|
|
# Skip the test case on group replication runs since it uses
|
|
# MyISAM engine tables.
|
|
--source include/not_group_replication_plugin.inc
|
|
|
|
--source include/master-slave.inc
|
|
|
|
--connection master
|
|
|
|
--echo # Create a table with three columns:
|
|
--echo # 1) Normal POINT column without SRID specification
|
|
--echo # 2) Normal POINT column with SRID 0
|
|
--echo # 3) Normal POINT column with SRID 4326
|
|
CREATE TABLE t1 (no_srid POINT DEFAULT NULL,
|
|
srid_0 POINT SRID 0 DEFAULT NULL,
|
|
srid_4326 POINT SRID 4326 DEFAULT NULL);
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS;
|
|
|
|
--echo # Insert some data with correct SRID into these columns
|
|
INSERT INTO t1 (no_srid, srid_0, srid_4326)
|
|
VALUES (ST_GeomFromText('POINT(0 0)', 0),
|
|
ST_GeomFromText('POINT(0 0)', 0),
|
|
ST_GeomFromText('POINT(0 0)', 4326));
|
|
|
|
INSERT INTO t1 (no_srid, srid_0, srid_4326)
|
|
VALUES (ST_GeomFromText('POINT(1 1)', 4326),
|
|
ST_GeomFromText('POINT(1 1)', 0),
|
|
ST_GeomFromText('POINT(1 1)', 4326));
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
--echo [Connection Slave]
|
|
|
|
--let $diff_tables = master:t1, slave:t1
|
|
--source include/diff_tables.inc
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS;
|
|
|
|
SELECT ST_SRID(no_srid) AS no_srid,
|
|
ST_SRID(srid_0) AS srid_0,
|
|
ST_SRID(srid_4326) AS srid_4326 FROM t1;
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
--echo # Removing the SRID specification from a column should work just fine.
|
|
ALTER TABLE t1 CHANGE COLUMN srid_4326 no_srid_2 POINT DEFAULT NULL;
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS ORDER BY COLUMN_NAME;
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
--echo [Connection Slave]
|
|
|
|
--let $diff_tables = master:t1, slave:t1
|
|
--source include/diff_tables.inc
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS ORDER BY COLUMN_NAME;
|
|
|
|
SELECT ST_SRID(no_srid) AS no_srid,
|
|
ST_SRID(no_srid_2) AS no_srid_2,
|
|
ST_SRID(srid_0) AS srid_0 FROM t1;
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
DELETE FROM t1;
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
--echo [Connection Slave]
|
|
|
|
--let $diff_tables = master:t1, slave:t1
|
|
--source include/diff_tables.inc
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
ALTER TABLE t1 CHANGE COLUMN srid_0 srid_4326 POINT SRID 4326 DEFAULT NULL;
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS ORDER BY COLUMN_NAME;
|
|
|
|
INSERT INTO t1 (no_srid, no_srid_2, srid_4326)
|
|
VALUES (ST_GeomFromText('POINT(0 0)', 2000),
|
|
ST_GeomFromText('POINT(0 0)', 0),
|
|
ST_GeomFromText('POINT(0 0)', 4326));
|
|
|
|
INSERT INTO t1 (no_srid, no_srid_2, srid_4326)
|
|
VALUES (ST_GeomFromText('POINT(1 1)', 4326),
|
|
ST_GeomFromText('POINT(1 1)', 2000),
|
|
ST_GeomFromText('POINT(1 1)', 4326));
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
--echo [Connection Slave]
|
|
|
|
--let $diff_tables = master:t1, slave:t1
|
|
--source include/diff_tables.inc
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS ORDER BY COLUMN_NAME;
|
|
|
|
SELECT ST_SRID(no_srid) AS no_srid,
|
|
ST_SRID(no_srid_2) AS no_srid_2,
|
|
ST_SRID(srid_4326) AS srid_4326 FROM t1;
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
--echo # Cleanup
|
|
DROP TABLE t1;
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
|
|
--echo # The SRID property on a generated column should work
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
CREATE TABLE t1 (col1 POINT SRID 4326,
|
|
col2 POINT AS (ST_SRID(col1, 0)) SRID 0);
|
|
INSERT INTO t1 (col1) VALUES (ST_GeomFromText('POINT(0 0)', 4326));
|
|
INSERT INTO t1 (col1) VALUES (ST_GeomFromText('POINT(1 1)', 4326));
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS;
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
--echo [Connection Slave]
|
|
|
|
--let $diff_tables = master:t1, slave:t1
|
|
--source include/diff_tables.inc
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS;
|
|
|
|
SELECT ST_SRID(col1) AS srid_4326, ST_SRID(col2) AS srid_0 FROM t1;
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
DELETE FROM t1;
|
|
|
|
ALTER TABLE t1 CHANGE COLUMN col1 col1 POINT SRID 2000;
|
|
ALTER TABLE t1 CHANGE COLUMN col2 col2 POINT AS (ST_SRID(col1, 4326)) SRID 4326;
|
|
|
|
INSERT INTO t1 (col1) VALUES (ST_GeomFromText('POINT(0 0)', 2000));
|
|
INSERT INTO t1 (col1) VALUES (ST_GeomFromText('POINT(1 1)', 2000));
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS;
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
--echo [Connection Slave]
|
|
|
|
--let $diff_tables = master:t1, slave:t1
|
|
--source include/diff_tables.inc
|
|
|
|
SELECT * FROM INFORMATION_SCHEMA.ST_GEOMETRY_COLUMNS;
|
|
|
|
SELECT ST_SRID(col1) AS srid_2000, ST_SRID(col2) AS srid_4326 FROM t1;
|
|
|
|
--echo [Connection Master]
|
|
--connection master
|
|
|
|
--echo # Cleanup
|
|
DROP TABLE t1;
|
|
|
|
--source include/sync_slave_sql_with_master.inc
|
|
|
|
--source include/rpl_end.inc
|