diff options
Diffstat (limited to 'mysql-test/suite/innodb_gis/t/rtree_recovery.test')
-rw-r--r-- | mysql-test/suite/innodb_gis/t/rtree_recovery.test | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/mysql-test/suite/innodb_gis/t/rtree_recovery.test b/mysql-test/suite/innodb_gis/t/rtree_recovery.test new file mode 100644 index 00000000..d995048c --- /dev/null +++ b/mysql-test/suite/innodb_gis/t/rtree_recovery.test @@ -0,0 +1,78 @@ +# 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; |