mirror of
https://github.com/MariaDB/server.git
synced 2025-01-19 05:22:25 +01:00
d0265a632f
mysql-test/suite/maria/maria-autozerofill.result: Updated result mysql-test/suite/maria/maria-autozerofill.test: Added test that zerofilled table should not give any warnings when table is used mysql-test/suite/maria/maria-recovery2.result: More tests to make it easier to find bugs mysql-test/suite/maria/maria-recovery2.test: More tests to make it easier to find bugs storage/maria/ha_maria.cc: Set create_trid after repair (needed if table was moved from another system) Set uuid after repair (needed if table was moved from another system) storage/maria/maria_chk.c: Reset share->state.create_trid if we reset share->state.create_rename_lsn. Make the table moveable
122 lines
3.5 KiB
Text
122 lines
3.5 KiB
Text
# Test to verify that auto-zerofilling happens when a table is
|
|
# imported from a different Aria instance
|
|
|
|
# can't restart in embedded
|
|
--source include/not_embedded.inc
|
|
--source include/have_maria.inc
|
|
|
|
call mtr.add_suppression("Table 't1' is marked as crashed and should be repaired");
|
|
|
|
let $MARIA_LOG=.;
|
|
|
|
--disable_warnings
|
|
drop database if exists mysqltest;
|
|
--enable_warnings
|
|
create database mysqltest;
|
|
let $mms_tname=t;
|
|
|
|
connect (admin, localhost, root,,mysqltest,,);
|
|
--enable_reconnect
|
|
|
|
connection default;
|
|
use mysqltest;
|
|
--enable_reconnect
|
|
|
|
# Create some tables for future tests
|
|
create table t1(a int) engine=aria;
|
|
insert into t1 values(1);
|
|
create table t2 (a int) engine=aria;
|
|
INSERT INTO t2 VALUES (1),(2);
|
|
create table t3 (a int) engine=aria;
|
|
INSERT INTO t3 VALUES (1),(2);
|
|
create table t4 (a int) engine=aria;
|
|
INSERT INTO t4 VALUES (1),(2);
|
|
create table t5 (a int) engine=aria;
|
|
INSERT INTO t5 VALUES (1),(2);
|
|
create table t6 (a int) engine=aria;
|
|
INSERT INTO t6 VALUES (1),(2);
|
|
flush tables;
|
|
|
|
# Check that table is not zerofilled, not movable
|
|
let $MYSQLD_DATADIR= `select @@datadir`;
|
|
--exec $MARIA_CHK -dv --ignore-control-file $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
|
|
perl;
|
|
use strict;
|
|
use warnings;
|
|
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
|
|
open(FILE, "<", $fname) or die;
|
|
my @content= <FILE>;
|
|
print grep(/Status:.*(zerofilled|movable)/, @content);
|
|
print "create_rename_lsn has non-magic value\n" if grep(/create_rename \([0-9]+/, @content);
|
|
close FILE;
|
|
EOF
|
|
|
|
# this will remove control file, so change the uuid of the Aria
|
|
# instance, thus t1 will appear as imported from elsewhere.
|
|
|
|
-- source include/maria_empty_logs.inc
|
|
|
|
disable_ps_protocol; # see aria-recover.test
|
|
replace_regex /Table.*t1/t1/ ;
|
|
replace_result \\ /;
|
|
select * from t1;
|
|
enable_ps_protocol;
|
|
flush table t1;
|
|
|
|
# Check that table is auto-zerofilled, movable
|
|
--exec $MARIA_CHK -dv --ignore-control-file $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
|
|
perl;
|
|
use strict;
|
|
use warnings;
|
|
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
|
|
open(FILE, "<", $fname) or die;
|
|
my @content= <FILE>;
|
|
print grep(/Status:.*zerofilled/, @content);
|
|
print "create_rename_lsn has magic value\n" if grep(/create_rename \(0,0x2\)/, @content);
|
|
close FILE;
|
|
EOF
|
|
|
|
# this will attach t1 to the current Aria instance
|
|
insert into t1 values(2);
|
|
flush table t1;
|
|
|
|
# Check that table is not zerofilled, not movable
|
|
--exec $MARIA_CHK -dv --ignore-control-file $MYSQLD_DATADIR/mysqltest/t1 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
|
|
perl;
|
|
use strict;
|
|
use warnings;
|
|
my $fname= "$ENV{'MYSQLTEST_VARDIR'}/tmp/ariachk.txt";
|
|
open(FILE, "<", $fname) or die;
|
|
my @content= <FILE>;
|
|
print grep(/Status:.*(zerofilled|movable)/, @content);
|
|
print "create_rename_lsn has non-magic value\n" if grep(/create_rename \([0-9]+/, @content);
|
|
close FILE;
|
|
EOF
|
|
|
|
--echo #
|
|
--echo # BUG#44422 "mysql_upgrade destroys Maria tables?"
|
|
--echo # Check repair and optimize of moved table
|
|
--echo #
|
|
|
|
# Table t2 is regarded as it would be from another server as we removed
|
|
# the aria control file earlier
|
|
check table t2;
|
|
check table t2;
|
|
repair table t2;
|
|
check table t2;
|
|
replace_result \\ /;
|
|
optimize table t3;
|
|
replace_result \\ /;
|
|
analyze table t4;
|
|
repair table t5;
|
|
check table t5;
|
|
repair table t5;
|
|
check table t5;
|
|
|
|
# Check that if we zerofill with aria_chk, we should not get any warnings when
|
|
# accessing the table
|
|
--exec $MARIA_CHK --zerofill $MYSQLD_DATADIR/mysqltest/t6 >$MYSQLTEST_VARDIR/tmp/ariachk.txt
|
|
select * from t6;
|
|
check table t6;
|
|
|
|
drop database mysqltest;
|