mirror of
https://github.com/MariaDB/server.git
synced 2025-01-27 01:04:19 +01:00
c2ebb0ac88
Item_hex_string::Item_hex_string The status of memory allocation in the Lex_input_stream (called from the Parser_state constructor) was not checked which led to a parser crash in case of the out-of-memory error. The solution is to introduce new init() member function in Parser_state and Lex_input_stream so that status of memory allocation can be returned to the caller. mysql-test/r/error_simulation.result: Added a test case for bug #42064. mysql-test/t/error_simulation.test: Added a test case for bug #42064. mysys/my_alloc.c: Added error injection code for the regression test. mysys/my_malloc.c: Added error injection code for the regression test. mysys/safemalloc.c: Added error injection code for the regression test. sql/event_data_objects.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/mysqld.cc: Added error injection code for the regression test. sql/sp.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_lex.cc: Moved memory allocation from constructor to the separate init() member function. Added error injection code for the regression test. sql/sql_lex.h: Moved memory allocation from constructor to the separate init() member function. sql/sql_parse.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_partition.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_prepare.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_trigger.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures. sql/sql_view.cc: Use the new init() member function of Parser_state and check its return value to handle memory allocation failures.. sql/thr_malloc.cc: Added error injection code for the regression test.
65 lines
1.7 KiB
Text
65 lines
1.7 KiB
Text
-- source include/have_debug.inc
|
|
|
|
#
|
|
# Bug #28499: crash for grouping query when tmp_table_size is too small
|
|
#
|
|
|
|
DROP TABLE IF EXISTS t1;
|
|
|
|
CREATE TABLE t1 (
|
|
a varchar(32) character set utf8 collate utf8_bin NOT NULL,
|
|
b varchar(32) character set utf8 collate utf8_bin NOT NULL )
|
|
ENGINE=MyISAM DEFAULT CHARSET=utf8;
|
|
|
|
INSERT INTO t1 VALUES
|
|
('AAAAAAAAAA','AAAAAAAAAA'), ('AAAAAAAAAB','AAAAAAAAAB '),
|
|
('AAAAAAAAAB','AAAAAAAAAB'), ('AAAAAAAAAC','AAAAAAAAAC'),
|
|
('AAAAAAAAAD','AAAAAAAAAD'), ('AAAAAAAAAE','AAAAAAAAAE'),
|
|
('AAAAAAAAAF','AAAAAAAAAF'), ('AAAAAAAAAG','AAAAAAAAAG'),
|
|
('AAAAAAAAAH','AAAAAAAAAH'), ('AAAAAAAAAI','AAAAAAAAAI'),
|
|
('AAAAAAAAAJ','AAAAAAAAAJ'), ('AAAAAAAAAK','AAAAAAAAAK');
|
|
|
|
set tmp_table_size=1024;
|
|
|
|
# Set debug flag so an error is returned when
|
|
# tmp table in query is converted from heap to myisam
|
|
set session debug="d,raise_error";
|
|
|
|
--replace_regex /in table '[^']+'/in table 'tmp_table'/
|
|
--error ER_DUP_KEY
|
|
SELECT MAX(a) FROM t1 GROUP BY a,b;
|
|
|
|
set tmp_table_size=default;
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug #50946: fast index creation still seems to copy the table
|
|
--echo #
|
|
CREATE TABLE t1 (a INT(100) NOT NULL);
|
|
INSERT INTO t1 VALUES (1), (0), (2);
|
|
SET SESSION debug='+d,alter_table_only_index_change';
|
|
ALTER TABLE t1 ADD INDEX a(a);
|
|
SET SESSION debug=DEFAULT;
|
|
SHOW CREATE TABLE t1;
|
|
SELECT * FROM t1;
|
|
DROP TABLE t1;
|
|
|
|
|
|
--echo #
|
|
--echo # Bug#42064: low memory crash when importing hex strings, in Item_hex_string::Item_hex_string
|
|
--echo #
|
|
|
|
CREATE TABLE t1(a BLOB);
|
|
|
|
SET SESSION debug="+d,bug42064_simulate_oom";
|
|
# May fail with either ER_OUT_OF_RESOURCES or EE_OUTOFMEMORY
|
|
--error ER_OUT_OF_RESOURCES, 5
|
|
INSERT INTO t1 VALUES("");
|
|
SET SESSION debug=DEFAULT;
|
|
|
|
DROP TABLE t1;
|
|
|
|
--echo #
|
|
--echo # End of 5.1 tests
|
|
--echo #
|