# WL#6745 InnoDB R-tree support # This test case test R-tree crash/recovery. # Restart is not supported in embedded --source include/not_embedded.inc --source include/have_innodb.inc --source include/no_valgrind_without_big.inc # Do a clean shutdown and restart so that the redo log is cleaned up from previous tests. --source include/restart_mysqld.inc # Create table with R-tree index. create table t1 (c1 int, c2 geometry not null, spatial index (c2))engine=innodb; # Insert enough values to let R-tree split. delimiter |; 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| delimiter ;| # Update values delimiter |; create procedure update_t1(IN total int) begin declare i int default 1; while (i <= total) DO update t1 set c2 = Point(i + 10000, i + 10000) where c2 = Point(i, i); set i = i + 1; end while; end| delimiter ;| # Test crash recovery. # # Test level 1 rtree. CALL insert_t1(367); COMMIT; --let $shutdown_timeout=0 --source include/restart_mysqld.inc # Check table. check table t1; # Clean up. drop table t1; # Test crash recovery on point spatial index. create table t1 (c1 int, c2 point not null, spatial index (c2))engine=innodb; # Some DML on point spatial index. CALL insert_t1(367); CALL update_t1(367); SET @poly1 = ST_GeomFromText('POLYGON((10000 10000, 10000 10350, 10350 10350, 10350 10000, 10000 10000))'); delete from t1 where ST_Contains(@poly1, c2); COMMIT; --source include/restart_mysqld.inc # Check table. check table t1; select count(*) from t1; select c1, ST_astext(c2) from t1; # Clean up. drop procedure insert_t1; drop procedure update_t1; drop table t1;