mirror of
https://github.com/MariaDB/server.git
synced 2025-08-29 00:08:14 +03:00
- InnoDB change buffer doesn't support spatial index. Spatial index should avoid change the buffer bitmap page when the page split happens.
71 lines
2.1 KiB
Plaintext
71 lines
2.1 KiB
Plaintext
create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb;
|
|
begin;
|
|
insert into t1 select @s:=1+(seq mod 9), point(@s, @s)
|
|
from seq_1_to_576;
|
|
SET @saved_dbug = @@SESSION.debug_dbug;
|
|
SET debug_dbug = '+d,rtr_page_need_second_split';
|
|
insert into t1 select @s:=1+(seq mod 9), point(@s, @s)
|
|
from seq_1_to_576;
|
|
SET debug_dbug = @saved_dbug;
|
|
rollback;
|
|
insert into t1 select @s:=1+(seq mod 9), point(@s, @s)
|
|
from seq_1_to_2304;
|
|
begin;
|
|
insert into t1 select @s:=1+(seq mod 9), point(@s, @s)
|
|
from seq_1_to_2304;
|
|
rollback;
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
insert into t1 select @s:=1+(seq mod 9), point(@s, @s)
|
|
from seq_1_to_71424;
|
|
check table t1;
|
|
Table Op Msg_type Msg_text
|
|
test.t1 check status OK
|
|
select count(*) from t1;
|
|
count(*)
|
|
73728
|
|
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
|
|
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|
count(*)
|
|
73728
|
|
set @g1 = ST_GeomFromText('Polygon((10 10,10 800,800 800,800 10,10 10))');
|
|
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|
count(*)
|
|
0
|
|
drop index c2 on t1;
|
|
create spatial index idx2 on t1(c2);
|
|
affected rows: 0
|
|
info: Records: 0 Duplicates: 0 Warnings: 0
|
|
show create table t1;
|
|
Table Create Table
|
|
t1 CREATE TABLE `t1` (
|
|
`c1` int(11) DEFAULT NULL,
|
|
`c2` geometry NOT NULL,
|
|
SPATIAL KEY `idx2` (`c2`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=latin1
|
|
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
|
|
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|
count(*)
|
|
73728
|
|
set @g1 = ST_GeomFromText('Polygon((2 2,2 800,800 800,800 2,2 2))');
|
|
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|
count(*)
|
|
57344
|
|
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
|
|
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|
count(*)
|
|
73728
|
|
set @g1 = ST_GeomFromText('Polygon((2 2,2 800,800 800,800 2,2 2))');
|
|
select count(*) from t1 where MBRWithin(t1.c2, @g1);
|
|
count(*)
|
|
57344
|
|
drop table t1;
|
|
#
|
|
# MDEV-27417 Spatial index tries to update
|
|
# change buffer bookkeeping page
|
|
#
|
|
CREATE TEMPORARY TABLE t1 (c POINT NOT NULL, SPATIAL(c)) ENGINE=InnoDB;
|
|
INSERT INTO t1 SELECT PointFromText('POINT(0 0)') FROM seq_1_to_366;
|
|
DROP TABLE t1;
|