mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +03:00
Bug #27322 failure to allocate transaction_prealloc_size causes crash
Fix for when memory pre-allocation fails. mysys/my_alloc.c: Added code to null-out the pre-alloc pointer if allocation fails. This is necessary for the next time this procedure is called. mysql-test/r/variables-big.result: Added "big" test for bug fix Bug #27322. mysql-test/t/variables-big.test: Added "big" test for bug fix Bug #27322.
This commit is contained in:
35
mysql-test/r/bdb_notembedded.result
Normal file
35
mysql-test/r/bdb_notembedded.result
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
set autocommit=1;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
drop table bug16206;
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
show binlog events;
|
||||||
|
Log_name Pos Event_type Server_id End_log_pos Info
|
||||||
|
f n Format_desc 1 n Server ver: VERSION, Binlog ver: 4
|
||||||
|
f n Query 1 n use `test`; create table bug16206 (a int) engine= bdb
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(0)
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(1)
|
||||||
|
f n Query 1 n use `test`; BEGIN
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(2)
|
||||||
|
f n Query 1 n use `test`; COMMIT
|
||||||
|
f n Query 1 n use `test`; insert into bug16206 values(3)
|
||||||
|
drop table bug16206;
|
||||||
|
set autocommit=0;
|
||||||
|
End of 5.0 tests
|
20
mysql-test/r/variables-big.result
Normal file
20
mysql-test/r/variables-big.result
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
set session transaction_prealloc_size=1024*1024*1024*1;
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost test Query 0 NULL show processlist
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*2;
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost test Query 2 NULL show processlist
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*3;
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost test Query 0 NULL show processlist
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*4;
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost test Query 0 NULL show processlist
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*5;
|
||||||
|
show processlist;
|
||||||
|
Id User Host db Command Time State Info
|
||||||
|
1 root localhost test Query 0 NULL show processlist
|
38
mysql-test/t/bdb_notembedded.test
Normal file
38
mysql-test/t/bdb_notembedded.test
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
-- source include/not_embedded.inc
|
||||||
|
-- source include/have_bdb.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #16206: Superfluous COMMIT event in binlog when updating BDB in autocommit mode
|
||||||
|
#
|
||||||
|
set autocommit=1;
|
||||||
|
|
||||||
|
let $VERSION=`select version()`;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
reset master;
|
||||||
|
create table bug16206 (a int) engine= bdb;
|
||||||
|
insert into bug16206 values(0);
|
||||||
|
insert into bug16206 values(1);
|
||||||
|
start transaction;
|
||||||
|
insert into bug16206 values(2);
|
||||||
|
commit;
|
||||||
|
insert into bug16206 values(3);
|
||||||
|
--replace_result $VERSION VERSION
|
||||||
|
--replace_column 1 f 2 n 5 n
|
||||||
|
show binlog events;
|
||||||
|
drop table bug16206;
|
||||||
|
|
||||||
|
set autocommit=0;
|
||||||
|
|
||||||
|
|
||||||
|
--echo End of 5.0 tests
|
20
mysql-test/t/variables-big.test
Normal file
20
mysql-test/t/variables-big.test
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
#
|
||||||
|
# test variables big
|
||||||
|
#
|
||||||
|
|
||||||
|
--source include/big_test.inc
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #27322 failure to allocate transaction_prealloc_size causes crash
|
||||||
|
#
|
||||||
|
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*1;
|
||||||
|
show processlist;
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*2;
|
||||||
|
show processlist;
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*3;
|
||||||
|
show processlist;
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*4;
|
||||||
|
show processlist;
|
||||||
|
set session transaction_prealloc_size=1024*1024*1024*5;
|
||||||
|
show processlist;
|
@@ -133,6 +133,10 @@ void reset_root_defaults(MEM_ROOT *mem_root, uint block_size,
|
|||||||
mem->next= *prev;
|
mem->next= *prev;
|
||||||
*prev= mem_root->pre_alloc= mem;
|
*prev= mem_root->pre_alloc= mem;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
mem_root->pre_alloc= 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user