mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-28 17:15:19 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			235 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			235 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- source include/have_geometry.inc
 | |
| 
 | |
| #
 | |
| # test of rtree (using with spatial data)
 | |
| #
 | |
| --disable_warnings
 | |
| DROP TABLE IF EXISTS t1, t2;
 | |
| --enable_warnings
 | |
| 
 | |
| CREATE TABLE t1 (
 | |
|   fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 | |
|   g GEOMETRY NOT NULL,
 | |
|   SPATIAL KEY(g)
 | |
| ) ENGINE=MyISAM;
 | |
| 
 | |
| SHOW CREATE TABLE t1;
 | |
| 
 | |
| let $1=150;
 | |
| let $2=150;
 | |
| while ($1)
 | |
| {
 | |
|   eval INSERT INTO t1 (g) VALUES (GeomFromText('LineString($1 $1, $2 $2)'));
 | |
|   dec $1;
 | |
|   inc $2;
 | |
| }
 | |
| 
 | |
| SELECT count(*) FROM t1;
 | |
| EXPLAIN SELECT fid, AsText(g) FROM t1 WHERE Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))'));
 | |
| SELECT fid, AsText(g) FROM t1 WHERE Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))'));
 | |
| 
 | |
| DROP TABLE t1;
 | |
| 
 | |
| CREATE TABLE t2 (
 | |
|   fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 | |
|   g GEOMETRY NOT NULL
 | |
| ) ENGINE=MyISAM;
 | |
| 
 | |
| let $1=10;
 | |
| while ($1)
 | |
| {
 | |
|   let $2=10;
 | |
|   while ($2)
 | |
|   {
 | |
|     eval INSERT INTO t2 (g) VALUES (GeometryFromWKB(LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10))));
 | |
|     dec $2;
 | |
|   }
 | |
|   dec $1;
 | |
| }
 | |
| 
 | |
| ALTER TABLE t2 ADD SPATIAL KEY(g);
 | |
| SHOW CREATE TABLE t2;
 | |
| SELECT count(*) FROM t2;
 | |
| EXPLAIN SELECT fid, AsText(g) FROM t2 WHERE Within(g, 
 | |
|   GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
 | |
| SELECT fid, AsText(g) FROM t2 WHERE Within(g, 
 | |
|   GeomFromText('Polygon((40 40,60 40,60 60,40 60,40 40))'));
 | |
| 
 | |
| let $1=10;
 | |
| while ($1)
 | |
| {
 | |
|   let $2=10;
 | |
|   while ($2)
 | |
|   {
 | |
|     eval DELETE FROM t2 WHERE Within(g, Envelope(GeometryFromWKB(LineString(Point($1 * 10 - 9, $2 * 10 - 9), Point($1 * 10, $2 * 10)))));
 | |
|     SELECT count(*) FROM t2;
 | |
|     dec $2;
 | |
|   }
 | |
|   dec $1;
 | |
| }
 | |
| 
 | |
| DROP TABLE t2;
 | |
| 
 | |
| drop table if exists t1;
 | |
| CREATE TABLE t1 (a geometry NOT NULL, SPATIAL (a));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| INSERT INTO t1 VALUES (GeomFromText("LINESTRING(100 100, 200 200, 300 300)"));
 | |
| check table t1;
 | |
| analyze table t1;
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # The following crashed gis
 | |
| #
 | |
| 
 | |
| CREATE TABLE t1 (
 | |
|   fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY, 
 | |
|   g GEOMETRY NOT NULL,
 | |
|   SPATIAL KEY(g)
 | |
| ) ENGINE=MyISAM;
 | |
| 
 | |
| INSERT INTO t1 (g) VALUES (GeomFromText('LineString(1 2, 2 3)')),(GeomFromText('LineString(1 2, 2 4)'));
 | |
| #select * from t1 where g<GeomFromText('LineString(1 2, 2 3)');
 | |
| drop table t1;
 | |
| 
 | |
| CREATE TABLE t1 (
 | |
|   line LINESTRING NOT NULL,
 | |
|   kind ENUM('po', 'pp', 'rr', 'dr', 'rd', 'ts', 'cl') NOT NULL DEFAULT 'po',
 | |
|   name VARCHAR(32),
 | |
| 
 | |
|   SPATIAL KEY (line)
 | |
| 
 | |
| 
 | |
| ) engine=myisam;
 | |
| 
 | |
| ALTER TABLE t1 DISABLE KEYS;
 | |
| INSERT INTO t1 (name, kind, line) VALUES 
 | |
|   ("Aadaouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
 | |
|   ("Aadassiye", "pp", GeomFromText("POINT(35.816667 36.216667)")),
 | |
|   ("Aadbel", "pp", GeomFromText("POINT(34.533333 36.100000)")),
 | |
|   ("Aadchit", "pp", GeomFromText("POINT(33.347222 35.423611)")),
 | |
|   ("Aadchite", "pp", GeomFromText("POINT(33.347222 35.423611)")),
 | |
|   ("Aadchit el Qoussair", "pp", GeomFromText("POINT(33.283333 35.483333)")),
 | |
|   ("Aaddaye", "pp", GeomFromText("POINT(36.716667 40.833333)")),
 | |
|   ("'Aadeissa", "pp", GeomFromText("POINT(32.823889 35.698889)")),
 | |
|   ("Aaderup", "pp", GeomFromText("POINT(55.216667 11.766667)")),
 | |
|   ("Qalaat Aades", "pp", GeomFromText("POINT(33.503333 35.377500)")),
 | |
|   ("A ad'ino", "pp", GeomFromText("POINT(54.812222 38.209167)")),
 | |
|   ("Aadi Noia", "pp", GeomFromText("POINT(13.800000 39.833333)")),
 | |
|   ("Aad La Macta", "pp", GeomFromText("POINT(35.779444 -0.129167)")),
 | |
|   ("Aadland", "pp", GeomFromText("POINT(60.366667 5.483333)")),
 | |
|   ("Aadliye", "pp", GeomFromText("POINT(33.366667 36.333333)")),
 | |
|   ("Aadloun", "pp", GeomFromText("POINT(33.403889 35.273889)")),
 | |
|   ("Aadma", "pp", GeomFromText("POINT(58.798333 22.663889)")),
 | |
|   ("Aadma Asundus", "pp", GeomFromText("POINT(58.798333 22.663889)")),
 | |
|   ("Aadmoun", "pp", GeomFromText("POINT(34.150000 35.650000)")),
 | |
|   ("Aadneram", "pp", GeomFromText("POINT(59.016667 6.933333)")),
 | |
|   ("Aadneskaar", "pp", GeomFromText("POINT(58.083333 6.983333)")),
 | |
|   ("Aadorf", "pp", GeomFromText("POINT(47.483333 8.900000)")),
 | |
|   ("Aadorp", "pp", GeomFromText("POINT(52.366667 6.633333)")),
 | |
|   ("Aadouane", "pp", GeomFromText("POINT(32.816667 35.983333)")),
 | |
|   ("Aadoui", "pp", GeomFromText("POINT(34.450000 35.983333)")),
 | |
|   ("Aadouiye", "pp", GeomFromText("POINT(34.583333 36.183333)")),
 | |
|   ("Aadouss", "pp", GeomFromText("POINT(33.512500 35.601389)")),
 | |
|   ("Aadra", "pp", GeomFromText("POINT(33.616667 36.500000)")),
 | |
|   ("Aadzi", "pp", GeomFromText("POINT(38.100000 64.850000)"));
 | |
| 
 | |
| ALTER TABLE t1 ENABLE KEYS;
 | |
| INSERT INTO t1 (name, kind, line) VALUES ("austria", "pp", GeomFromText('LINESTRING(14.9906 48.9887,14.9946 48.9904,14.9947 48.9916)'));
 | |
| drop table t1;
 | |
| 
 | |
| CREATE TABLE t1 (st varchar(100));
 | |
| INSERT INTO t1 VALUES ("Fake string");
 | |
| CREATE TABLE t2 (geom GEOMETRY NOT NULL, SPATIAL KEY gk(geom));
 | |
| --error 1416
 | |
| INSERT INTO t2 SELECT GeomFromText(st) FROM t1;
 | |
| drop table t1, t2;
 | |
| 
 | |
| CREATE TABLE t1 (`geometry` geometry NOT NULL default '',SPATIAL KEY `gndx` (`geometry`(32))) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 | |
| 
 | |
| INSERT INTO t1 (geometry) VALUES
 | |
| (PolygonFromText('POLYGON((-18.6086111000 -66.9327777000, -18.6055555000
 | |
| -66.8158332999, -18.7186111000 -66.8102777000, -18.7211111000 -66.9269443999,
 | |
| -18.6086111000 -66.9327777000))'));
 | |
| 
 | |
| INSERT INTO t1 (geometry) VALUES
 | |
| (PolygonFromText('POLYGON((-65.7402776999 -96.6686111000, -65.7372222000
 | |
| -96.5516666000, -65.8502777000 -96.5461111000, -65.8527777000 -96.6627777000,
 | |
| -65.7402776999 -96.6686111000))'));
 | |
| check table t1 extended;
 | |
| 
 | |
| drop table t1;
 | |
| 
 | |
| #
 | |
| # Bug#17877 - Corrupted spatial index
 | |
| #
 | |
| CREATE TABLE t1 (
 | |
|   c1 geometry NOT NULL default '',
 | |
|   SPATIAL KEY i1 (c1(32))
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 | |
| INSERT INTO t1 (c1) VALUES (
 | |
|   PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
 | |
|                             -18.6055555000 -66.8158332999,
 | |
|                             -18.7186111000 -66.8102777000,
 | |
|                             -18.7211111000 -66.9269443999,
 | |
|                             -18.6086111000 -66.9327777000))'));
 | |
| # This showed a missing key.
 | |
| CHECK TABLE t1 EXTENDED;
 | |
| DROP TABLE t1;
 | |
| #
 | |
| CREATE TABLE t1 (
 | |
|   c1 geometry NOT NULL default '',
 | |
|   SPATIAL KEY i1 (c1(32))
 | |
| ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 | |
| INSERT INTO t1 (c1) VALUES (
 | |
|   PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
 | |
|                             -18.6055555000 -66.8158332999,
 | |
|                             -18.7186111000 -66.8102777000,
 | |
|                             -18.7211111000 -66.9269443999,
 | |
|                             -18.6086111000 -66.9327777000))'));
 | |
| INSERT INTO t1 (c1) VALUES (
 | |
|   PolygonFromText('POLYGON((-65.7402776999 -96.6686111000,
 | |
|                             -65.7372222000 -96.5516666000,
 | |
|                             -65.8502777000 -96.5461111000,
 | |
|                             -65.8527777000 -96.6627777000,
 | |
|                             -65.7402776999 -96.6686111000))'));
 | |
| # This is the same as the first insert to get a non-unique key.
 | |
| INSERT INTO t1 (c1) VALUES (
 | |
|   PolygonFromText('POLYGON((-18.6086111000 -66.9327777000,
 | |
|                             -18.6055555000 -66.8158332999,
 | |
|                             -18.7186111000 -66.8102777000,
 | |
|                             -18.7211111000 -66.9269443999,
 | |
|                             -18.6086111000 -66.9327777000))'));
 | |
| # This showed (and still shows) OK.
 | |
| CHECK TABLE t1 EXTENDED;
 | |
| DROP TABLE t1;
 | |
| 
 | |
| # End of 4.1 tests
 | 
