mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
merge with mysql-5.5.30 minus few incorrect or not applicable changesets
This commit is contained in:
@ -10,4 +10,3 @@
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
innodb_bug12400341: variable innodb_trx_rseg_n_slots_debug is removed in MariaDB
|
||||
|
@ -956,7 +956,7 @@ Table Op Msg_type Msg_text
|
||||
test.t1 check status OK
|
||||
explain select * from t1 where b like 'adfd%';
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL b NULL NULL NULL 15 Using where
|
||||
1 SIMPLE t1 range b b 769 NULL 11 Using where
|
||||
drop table t1;
|
||||
set global innodb_file_per_table=on;
|
||||
set global innodb_file_format='Barracuda';
|
||||
|
17
mysql-test/suite/innodb/r/innodb_bug14147491.result
Normal file
17
mysql-test/suite/innodb/r/innodb_bug14147491.result
Normal file
@ -0,0 +1,17 @@
|
||||
CALL mtr.add_suppression("InnoDB: Error: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts");
|
||||
CALL mtr.add_suppression("InnoDB: Warning: database page corruption or a failed");
|
||||
# Create and populate the table to be corrupted
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
# Restart server to flush buffers
|
||||
# Corrupt the table
|
||||
Munged a string.
|
||||
Munged a string.
|
||||
# Write file to make mysql-test-run.pl expect crash and restart
|
||||
SELECT * FROM t1;
|
||||
ERROR HY000: Lost connection to MySQL server during query
|
||||
# Turn on reconnect
|
||||
# Wait for server to fully start
|
||||
# Cleanup
|
||||
DROP TABLE t1;
|
53
mysql-test/suite/innodb/r/innodb_bug14676111.result
Normal file
53
mysql-test/suite/innodb/r/innodb_bug14676111.result
Normal file
@ -0,0 +1,53 @@
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t1 (a int not null primary key) engine=InnoDB;
|
||||
set global innodb_limit_optimistic_insert_debug = 2;
|
||||
insert into t1 values (1);
|
||||
insert into t1 values (5);
|
||||
insert into t1 values (4);
|
||||
insert into t1 values (3);
|
||||
insert into t1 values (2);
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
DATA_LENGTH / 16384
|
||||
10.0000
|
||||
delete from t1 where a=4;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
DATA_LENGTH / 16384
|
||||
8.0000
|
||||
delete from t1 where a=5;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
DATA_LENGTH / 16384
|
||||
5.0000
|
||||
set global innodb_limit_optimistic_insert_debug = 10000;
|
||||
delete from t1 where a=2;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
DATA_LENGTH / 16384
|
||||
3.0000
|
||||
insert into t1 values (2);
|
||||
delete from t1 where a=2;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
DATA_LENGTH / 16384
|
||||
2.0000
|
||||
insert into t1 values (2);
|
||||
delete from t1 where a=2;
|
||||
analyze table t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 analyze status OK
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
DATA_LENGTH / 16384
|
||||
1.0000
|
||||
drop table t1;
|
@ -3,11 +3,11 @@ insert into bug47777 values (geomfromtext('linestring(1 2,3 4,5 6,7 8,9 10)'));
|
||||
select count(*) from bug47777 where c2 =geomfromtext('linestring(1 2,3 4,5 6,7 8,9 10)');
|
||||
count(*)
|
||||
1
|
||||
update bug47777 set c2=GeomFromText('POINT(1 1)');
|
||||
update bug47777 set c2=GeomFromText('linestring(1 1)');
|
||||
select count(*) from bug47777 where c2 =geomfromtext('linestring(1 2,3 4,5 6,7 8,9 10)');
|
||||
count(*)
|
||||
0
|
||||
select count(*) from bug47777 where c2 = GeomFromText('POINT(1 1)');
|
||||
select count(*) from bug47777 where c2 = GeomFromText('linestring(1 1)');
|
||||
count(*)
|
||||
1
|
||||
drop table bug47777;
|
||||
|
@ -343,7 +343,7 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 index NULL PRIMARY 5 NULL 4 Using index; Using temporary
|
||||
explain select distinct f1, f2 from t1;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 range NULL PRIMARY 5 NULL 3 Using index for group-by; Using temporary
|
||||
1 SIMPLE t1 index NULL PRIMARY 5 NULL 4 Using index
|
||||
drop table t1;
|
||||
CREATE TABLE t1 (id int(11) NOT NULL PRIMARY KEY, name varchar(20),
|
||||
INDEX (name));
|
||||
|
@ -1,4 +1,8 @@
|
||||
-- source include/have_innodb.inc
|
||||
if (`select plugin_auth_version <= "1.1.8-29.3" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB 1.1.8-29.3 or earlier
|
||||
}
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
|
||||
|
1
mysql-test/suite/innodb/t/innodb_bug14147491-master.opt
Normal file
1
mysql-test/suite/innodb/t/innodb_bug14147491-master.opt
Normal file
@ -0,0 +1 @@
|
||||
--innodb_file_per_table=1 --skip-stack-trace --skip-core-file
|
75
mysql-test/suite/innodb/t/innodb_bug14147491.test
Normal file
75
mysql-test/suite/innodb/t/innodb_bug14147491.test
Normal file
@ -0,0 +1,75 @@
|
||||
#
|
||||
# Test opening a corrupted table.
|
||||
#
|
||||
|
||||
# Don't test under valgrind, memory leaks will occur
|
||||
source include/not_valgrind.inc;
|
||||
# Avoid CrashReporter popup on Mac
|
||||
source include/not_crashrep.inc;
|
||||
# Don't test under embedded
|
||||
source include/not_embedded.inc;
|
||||
# Require InnoDB
|
||||
source include/have_innodb.inc;
|
||||
|
||||
CALL mtr.add_suppression("InnoDB: Error: Unable to read tablespace .* page no .* into the buffer pool after 100 attempts");
|
||||
CALL mtr.add_suppression("InnoDB: Warning: database page corruption or a failed");
|
||||
|
||||
--echo # Create and populate the table to be corrupted
|
||||
CREATE TABLE t1 (a INT AUTO_INCREMENT PRIMARY KEY, b TEXT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
--disable_query_log
|
||||
--let $i = 10
|
||||
while ($i)
|
||||
{
|
||||
INSERT INTO t1 (b) VALUES (REPEAT('abcdefghijklmnopqrstuvwxyz', 100));
|
||||
dec $i;
|
||||
}
|
||||
--enable_query_log
|
||||
INSERT INTO t1 (b) VALUES ('corrupt me');
|
||||
|
||||
--echo # Restart server to flush buffers
|
||||
source include/restart_mysqld.inc;
|
||||
|
||||
--echo # Corrupt the table
|
||||
let $MYSQLD_DATADIR=`select @@datadir`;
|
||||
let t1_IBD = $MYSQLD_DATADIR/test/t1.ibd;
|
||||
|
||||
perl;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Fcntl qw(:DEFAULT :seek);
|
||||
|
||||
my $ibd_file = $ENV{'t1_IBD'};
|
||||
|
||||
my $chunk;
|
||||
my $len;
|
||||
|
||||
sysopen IBD_FILE, $ibd_file, O_RDWR || die "Unable to open $ibd_file";
|
||||
|
||||
while ($len = sysread IBD_FILE, $chunk, 1024)
|
||||
{
|
||||
if ($chunk =~ s/corrupt me/korrupt me/)
|
||||
{
|
||||
print "Munged a string.\n";
|
||||
sysseek IBD_FILE, -$len, SEEK_CUR;
|
||||
syswrite IBD_FILE, $chunk, $len;
|
||||
}
|
||||
}
|
||||
|
||||
close IBD_FILE;
|
||||
EOF
|
||||
|
||||
--echo # Write file to make mysql-test-run.pl expect crash and restart
|
||||
--exec echo "restart" > $MYSQLTEST_VARDIR/tmp/mysqld.1.expect
|
||||
|
||||
--error 2013
|
||||
SELECT * FROM t1;
|
||||
|
||||
--echo # Turn on reconnect
|
||||
--enable_reconnect
|
||||
|
||||
--echo # Wait for server to fully start
|
||||
--source include/wait_until_connected_again.inc
|
||||
|
||||
--echo # Cleanup
|
||||
DROP TABLE t1;
|
128
mysql-test/suite/innodb/t/innodb_bug14676111.test
Normal file
128
mysql-test/suite/innodb/t/innodb_bug14676111.test
Normal file
@ -0,0 +1,128 @@
|
||||
# Test for bug #14676111: WRONG PAGE_LEVEL WRITTEN FOR UPPER THAN FATHER PAGE AT BTR_LIFT_PAGE_UP()
|
||||
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_debug.inc
|
||||
|
||||
if (`select count(*)=0 from information_schema.global_variables where variable_name = 'INNODB_LIMIT_OPTIMISTIC_INSERT_DEBUG'`)
|
||||
{
|
||||
--skip Test requires InnoDB built with UNIV_DEBUG definition.
|
||||
}
|
||||
|
||||
--disable_query_log
|
||||
set @old_innodb_limit_optimistic_insert_debug = @@innodb_limit_optimistic_insert_debug;
|
||||
--enable_query_log
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a int not null primary key) engine=InnoDB;
|
||||
|
||||
let $wait_condition=
|
||||
SELECT VARIABLE_VALUE < 1 FROM INFORMATION_SCHEMA.GLOBAL_STATUS
|
||||
WHERE VARIABLE_NAME = 'INNODB_PURGE_TRX_ID_AGE';
|
||||
|
||||
#
|
||||
# make 4 leveled straight tree
|
||||
#
|
||||
set global innodb_limit_optimistic_insert_debug = 2;
|
||||
insert into t1 values (1);
|
||||
insert into t1 values (5);
|
||||
#current tree form
|
||||
# (1, 5)
|
||||
|
||||
insert into t1 values (4);
|
||||
#records in a page is limited to 2 artificially. root rise occurs
|
||||
#current tree form
|
||||
# (1, 5)
|
||||
#(1, 4) (5)
|
||||
|
||||
insert into t1 values (3);
|
||||
#current tree form
|
||||
# (1, 5)
|
||||
# (1, 4) (5)
|
||||
#(1, 3) (4) (5)
|
||||
|
||||
insert into t1 values (2);
|
||||
#current tree form
|
||||
# (1, 5)
|
||||
# (1, 4) (5)
|
||||
# (1, 3) (4) (5)
|
||||
#(1, 2) (3) (4) (5)
|
||||
|
||||
analyze table t1;
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
|
||||
delete from t1 where a=4;
|
||||
--source include/wait_condition.inc
|
||||
#deleting 1 record of 2 records don't cause merge artificially.
|
||||
#current tree form
|
||||
# (1, 5)
|
||||
# (1) (5)
|
||||
# (1, 3) (5)
|
||||
#(1, 2) (3) (5)
|
||||
|
||||
analyze table t1;
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
|
||||
delete from t1 where a=5;
|
||||
--source include/wait_condition.inc
|
||||
#deleting 1 record of 2 records don't cause merge artificially.
|
||||
#current tree form
|
||||
# (1)
|
||||
# (1)
|
||||
# (1, 3) <- lift up this level next, when deleting node ptr
|
||||
#(1, 2) (3) <- merged next
|
||||
|
||||
analyze table t1;
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
|
||||
#
|
||||
# cause merge at level 0
|
||||
#
|
||||
|
||||
#disable the artificial limitation of records in a page
|
||||
set global innodb_limit_optimistic_insert_debug = 10000;
|
||||
delete from t1 where a=2;
|
||||
--source include/wait_condition.inc
|
||||
#merge page occurs. and lift up occurs.
|
||||
#current tree form
|
||||
# (1)
|
||||
# (1)
|
||||
# (1, 3)
|
||||
|
||||
analyze table t1;
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
|
||||
insert into t1 values (2);
|
||||
#current tree form
|
||||
# (1)
|
||||
# (1) <- lift up this level next, because it is not root
|
||||
# (1, 2, 3)
|
||||
|
||||
delete from t1 where a=2;
|
||||
--source include/wait_condition.inc
|
||||
#current tree form
|
||||
# (1)
|
||||
# (1, 3)
|
||||
|
||||
analyze table t1;
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
|
||||
insert into t1 values (2);
|
||||
#current tree form
|
||||
# (1)
|
||||
# (1, 2, 3) <- lift up this level next, because the father is root
|
||||
|
||||
delete from t1 where a=2;
|
||||
--source include/wait_condition.inc
|
||||
#current tree form
|
||||
# (1, 3)
|
||||
|
||||
analyze table t1;
|
||||
select DATA_LENGTH / 16384 from information_schema.TABLES where TABLE_SCHEMA = 'test' and TABLE_NAME = 't1';
|
||||
|
||||
drop table t1;
|
||||
|
||||
--disable_query_log
|
||||
set global innodb_limit_optimistic_insert_debug = @old_innodb_limit_optimistic_insert_debug;
|
||||
--enable_query_log
|
@ -14,11 +14,11 @@ insert into bug47777 values (geomfromtext('linestring(1 2,3 4,5 6,7 8,9 10)'));
|
||||
select count(*) from bug47777 where c2 =geomfromtext('linestring(1 2,3 4,5 6,7 8,9 10)');
|
||||
|
||||
# Update table bug47777 should be successful.
|
||||
update bug47777 set c2=GeomFromText('POINT(1 1)');
|
||||
update bug47777 set c2=GeomFromText('linestring(1 1)');
|
||||
|
||||
# Verify the row get updated successfully. The original
|
||||
# c2 value should be changed to GeomFromText('POINT(1 1)').
|
||||
# c2 value should be changed to GeomFromText('linestring(1 1)').
|
||||
select count(*) from bug47777 where c2 =geomfromtext('linestring(1 2,3 4,5 6,7 8,9 10)');
|
||||
select count(*) from bug47777 where c2 = GeomFromText('POINT(1 1)');
|
||||
select count(*) from bug47777 where c2 = GeomFromText('linestring(1 1)');
|
||||
|
||||
drop table bug47777;
|
||||
|
@ -9,6 +9,10 @@
|
||||
-- source include/not_staging.inc
|
||||
-- source include/have_innodb.inc
|
||||
-- source include/have_query_cache.inc
|
||||
if (`select plugin_auth_version <= "1.1.8-29.3" from information_schema.plugins where plugin_name='innodb'`)
|
||||
{
|
||||
--skip Not fixed in XtraDB 1.1.8-29.3 or earlier
|
||||
}
|
||||
|
||||
let $engine_type= InnoDB;
|
||||
let $other_engine_type= MEMORY;
|
||||
|
Reference in New Issue
Block a user