mariadb/mysql-test/suite/innodb_gis/r/rtree_concurrent_srch.result
2020-03-19 06:58:49 +02:00

358 lines
11 KiB
Text

create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb;
insert into t1 values(1, Point(1,1));
insert into t1 values(2, Point(2,2));
insert into t1 values(3, Point(3,3));
insert into t1 values(4, Point(4,4));
insert into t1 values(5, Point(5,5));
insert into t1 values(6, Point(6,6));
insert into t1 values(7, Point(7,7));
insert into t1 values(8, Point(8,8));
insert into t1 values(9, Point(9,9));
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
connect a,localhost,root,,;
SET debug_dbug='+d,rtr_pcur_move_to_next_return';
set session transaction isolation level serializable;
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
SET DEBUG_SYNC = 'RESET';
SET DEBUG_SYNC = 'row_search_for_mysql_before_return SIGNAL started WAIT_FOR go_ahead';
select count(*) from t1 where MBRWithin(t1.c2, @g1);;
connect con1,localhost,root,,;
set session transaction isolation level serializable;
SET DEBUG_SYNC = 'now WAIT_FOR started';
insert into t1 select * from t1;
SET DEBUG_SYNC = 'now SIGNAL go_ahead';
connection a;
count(*)
576
select count(*) from t1 where MBRWithin(t1.c2, @g1);
count(*)
1152
connection default;
insert into t1 select * from t1;
insert into t1 select * from t1;
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(*)
4608
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
set session transaction isolation level serializable;
truncate t1;
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)'));
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
connection a;
set session transaction isolation level serializable;
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
start transaction;
set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
0
connect b,localhost,root,,;
set session transaction isolation level serializable;
set session innodb_lock_wait_timeout = 1;
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
connection a;
commit;
connection default;
select count(*) from t1;
count(*)
896
insert into t1 values (105, Point(105, 105));
connection a;
start transaction;
set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
1
connection b;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
1
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
insert into t1 select * from t1;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
select count(*) from t1;
count(*)
897
connection a;
select sleep(2);
sleep(2)
0
commit;
connection default;
truncate t1;
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(4 4, 170 170)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)'));
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
connection a;
set session transaction isolation level serializable;
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
start transaction;
set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
0
connection b;
set session transaction isolation level serializable;
set session innodb_lock_wait_timeout = 1;
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
connection a;
commit;
connection default;
select count(*) from t1;
count(*)
1792
insert into t1 values (105, Point(105, 105));
connection a;
start transaction;
set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
1
select count(*) from t1 where MBRIntersects(t1.c2, @g1);
count(*)
1793
connection b;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
1
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 105, 200 105)'));
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
select count(*) from t1;
count(*)
1793
connection a;
select sleep(2);
sleep(2)
0
commit;
connection default;
truncate t1;
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)'));
set @g1 = ST_GeomFromText('Polygon((3 3, 3 5, 5 5, 5 3, 3 3))');
start transaction;
delete from t1 where MBRWithin(t1.c2, @g1);
connection a;
set session innodb_lock_wait_timeout = 1;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
1
insert into t1 values(4, Point(4,4));
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
connection default;
rollback;
connection default;
truncate t1;
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(3 3, 160 160)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)'));
set @g1 = ST_GeomFromText('Polygon((3 3, 3 5, 5 5, 5 3, 3 3))');
start transaction;
select count(*) from t1 where MBRWithin(t1.c2, @g1) for update;
count(*)
0
connection a;
set session innodb_lock_wait_timeout = 1;
select @@innodb_lock_wait_timeout;
@@innodb_lock_wait_timeout
1
insert into t1 values(4, Point(4,4));
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
connection default;
rollback;
connection default;
truncate t1;
create procedure insert_t1(IN start int, IN total int)
begin
declare i int default 1;
set i = start;
while (i <= total) DO
insert into t1 values (i, Point(i, i));
set i = i + 1;
end while;
end|
CALL insert_t1(0, 1000);
connection a;
set session transaction isolation level serializable;
select @@tx_isolation;
@@tx_isolation
SERIALIZABLE
start transaction;
set @g1 = ST_GeomFromText('Polygon((800 800, 800 1000, 1000 1000, 1000 800, 800 800))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
199
connection b;
CALL insert_t1(1001, 2000);
set session transaction isolation level serializable;
set session innodb_lock_wait_timeout = 1;
insert into t1 values (1200, Point(950, 950));
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
connection a;
select sleep(2);
sleep(2)
0
commit;
disconnect a;
disconnect b;
connection default;
drop table t1;
drop procedure insert_t1;
create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb;
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(2 2, 150 150)'));
INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(3 3, 160 160)'));
INSERT INTO t1 VALUES (2, ST_GeomFromText('LineString(4 4, 170 170)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(5 5, 180 180)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(6 6, 190 190)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(7 7, 200 200)'));
INSERT INTO t1 VALUES (1, ST_GeomFromText('LineString(8 8, 210 210)'));
connect a,localhost,root,,;
SET SESSION debug_dbug='+d,rtr_pcur_move_to_next_return';
set transaction isolation level serializable;
start transaction;
set @g1 = ST_GeomFromText('Polygon((100 100, 100 110, 110 110, 110 100, 100 100))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
0
connect b,localhost,root,,;
delete from t1 where c1 = 1;
connection a;
commit;
set transaction isolation level serializable;
start transaction;
set @g1 = ST_GeomFromText('Polygon((0 0, 0 300, 300 300, 300 0, 0 0))');
select count(*) from t1 where MBRwithin(t1.c2, @g1);
count(*)
2
connection b;
set session innodb_lock_wait_timeout = 1;
delete from t1 where c1 = 2;
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
connection a;
commit;
connection default;
drop table t1;
SET DEBUG_SYNC= 'RESET';
create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb;
start transaction;
insert into t1 values(1, Point(1,1));
insert into t1 values(2, Point(2,2));
insert into t1 values(3, Point(3,3));
insert into t1 values(4, Point(4,4));
insert into t1 values(5, Point(5,5));
insert into t1 values(6, Point(6,6));
insert into t1 values(7, Point(7,7));
insert into t1 values(8, Point(8,8));
insert into t1 values(9, Point(9,9));
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
insert into t1 select * from t1;
select count(*) from t1;
count(*)
4608
connection b;
set @g1 = ST_GeomFromText('Polygon((0 0,0 100,100 100,100 0,0 0))');
set transaction isolation level read uncommitted;
SET DEBUG_SYNC= 'row_search_for_mysql_before_return SIGNAL siga WAIT_FOR sigb';
select count(*) from t1 where MBRWithin(t1.c2, @g1);
connection default;
SET DEBUG_SYNC= 'now WAIT_FOR siga';
rollback;
SET DEBUG_SYNC= 'now SIGNAL sigb';
connection b;
count(*)
1
select count(*) from t1 where MBRWithin(t1.c2, @g1);
count(*)
0
connection default;
DROP TABLE t1;
SET DEBUG_SYNC = 'RESET';
create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb;
create procedure insert_t1(IN total int)
begin
declare i int default 1;
while (i <= total) DO
insert into t1 values (i, Point(i, i));
set i = i + 1;
end while;
end|
start transaction;
CALL insert_t1(100);
connection a;
set @g1 = ST_GeomFromText('Polygon((0 0,0 1000,1000 1000,1000 0,0 0))');
SET DEBUG_SYNC= 'rtr_pcur_move_to_next_return SIGNAL siga WAIT_FOR sigb';
select count(*) from t1 where MBRWithin(t1.c2, @g1);;
connection default;
SET DEBUG_SYNC= 'now WAIT_FOR siga';
rollback;
SET DEBUG_SYNC= 'now SIGNAL sigb';
connection a;
count(*)
0
connection default;
drop procedure insert_t1;
DROP TABLE t1;
disconnect a;
disconnect b;
connection default;
SET DEBUG_SYNC = 'RESET';