36 lines
1.0 KiB
Plaintext
36 lines
1.0 KiB
Plaintext
CREATE TABLE g (
|
|
id INT PRIMARY KEY,
|
|
p GEOMETRY NOT NULL SRID 0,
|
|
SPATIAL KEY p_idx(p)
|
|
) ENGINE=InnoDB;
|
|
create procedure populate_g(IN `rows` INT)
|
|
begin
|
|
declare i int default 1;
|
|
while (i <= `rows`) DO
|
|
insert into test.g (id, p) values (i, POINT(i, i));
|
|
set i = i + 1;
|
|
end while;
|
|
end|
|
|
call populate_g(650);
|
|
start transaction;
|
|
select id from g WHERE MBRContains(ST_GeomFromText('Polygon((100 0,100 5,105
|
|
5,105 0,100 0))'),p) for update;
|
|
id
|
|
set innodb_lock_wait_timeout = 1;
|
|
set transaction isolation level serializable;
|
|
insert into g values(1103, POINT(100, 1));
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
start transaction;
|
|
select id from g WHERE MBRContains(ST_GeomFromText('Polygon((100 0,100 5,105
|
|
5,105 0,100 0))'),p) for update;
|
|
id
|
|
commit;
|
|
set innodb_lock_wait_timeout = 1;
|
|
set transaction isolation level serializable;
|
|
insert into g values(1103, POINT(100, 1));
|
|
ERROR HY000: Lock wait timeout exceeded; try restarting transaction
|
|
commit;
|
|
DROP TABLE g;
|
|
DROP PROCEDURE populate_g;
|
|
set innodb_lock_wait_timeout = default;
|