mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 20:12:31 +01:00
662c51bad1
Optimizator fails using index with ST_Within(g, constant_poly). per-file comments: mysql-test/r/gis-rt-precise.result test result fixed. mysql-test/r/gis-rtree.result test result fixed. mysql-test/suite/maria/r/maria-gis-rtree-dynamic.result test result fixed. mysql-test/suite/maria/r/maria-gis-rtree-trans.result test result fixed. mysql-test/suite/maria/r/maria-gis-rtree.result test result fixed. storage/maria/ma_rt_index.c Use MBR_INTERSECT mode when optimizing the select WITH ST_Within. storage/myisam/rt_index.c Use MBR_INTERSECT mode when optimizing the select WITH ST_Within.
62 lines
1.9 KiB
Text
62 lines
1.9 KiB
Text
DROP TABLE IF EXISTS t1;
|
|
CREATE TABLE t1 (
|
|
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
g GEOMETRY NOT NULL,
|
|
SPATIAL KEY(g)
|
|
) ENGINE=MyISAM;
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`fid` int(11) NOT NULL AUTO_INCREMENT,
|
|
`g` geometry NOT NULL,
|
|
PRIMARY KEY (`fid`),
|
|
SPATIAL KEY `g` (`g`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
|
SELECT count(*) FROM t1;
|
|
count(*)
|
|
150
|
|
EXPLAIN SELECT fid, AsText(g) FROM t1 WHERE ST_Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 140))'));
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 range g g 34 NULL 8 Using where
|
|
SELECT fid, AsText(g) FROM t1 WHERE ST_Within(g, GeomFromText('Polygon((140 140,160 140,160 160,140 160,140 140))'));
|
|
fid AsText(g)
|
|
1 LINESTRING(150 150,150 150)
|
|
3 LINESTRING(148 148,152 152)
|
|
4 LINESTRING(147 147,153 153)
|
|
5 LINESTRING(146 146,154 154)
|
|
6 LINESTRING(145 145,155 155)
|
|
7 LINESTRING(144 144,156 156)
|
|
8 LINESTRING(143 143,157 157)
|
|
9 LINESTRING(142 142,158 158)
|
|
10 LINESTRING(141 141,159 159)
|
|
11 LINESTRING(140 140,160 160)
|
|
2 LINESTRING(149 149,151 151)
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (
|
|
fid INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
|
g GEOMETRY NOT NULL
|
|
) ENGINE=MyISAM;
|
|
ALTER TABLE t1 ADD SPATIAL KEY(g);
|
|
SHOW CREATE TABLE t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`fid` int(11) NOT NULL AUTO_INCREMENT,
|
|
`g` geometry NOT NULL,
|
|
PRIMARY KEY (`fid`),
|
|
SPATIAL KEY `g` (`g`)
|
|
) ENGINE=MyISAM AUTO_INCREMENT=101 DEFAULT CHARSET=latin1
|
|
SELECT count(*) FROM t1;
|
|
count(*)
|
|
100
|
|
EXPLAIN SELECT fid, AsText(g) FROM t1 WHERE ST_Within(g,
|
|
GeomFromText('Polygon((40 40,60 40,60 60,40 40))'));
|
|
id select_type table type possible_keys key key_len ref rows Extra
|
|
1 SIMPLE t1 range g g 34 NULL 1 Using where
|
|
SELECT fid, AsText(g) FROM t1 WHERE ST_Within(g,
|
|
GeomFromText('Polygon((40 40,60 40,60 60,40 40))'));
|
|
fid AsText(g)
|
|
46 LINESTRING(51 41,60 50)
|
|
56 LINESTRING(41 41,50 50)
|
|
45 LINESTRING(51 51,60 60)
|
|
DROP TABLE t1;
|
|
End of 5.5 tests.
|