mirror of
https://github.com/MariaDB/server.git
synced 2025-11-30 05:23:50 +03:00
Also fixes MDEV-24467 Memory not freed after failed INSERT DELAYED Description: In case of an error (e.g. data truncation) during mysql_insert() handling an INSERT DELAYED, the data type specific data in fields (e.g. Field_blob::value) is not taken over by the delayed writer thread. All fields in table_list->table are freed by free_root() immediately after mysql_insert(). To avoid a memory leak, we need to free the specific data before exiting mysql_insert() on error.
22 lines
519 B
Plaintext
22 lines
519 B
Plaintext
--echo #
|
|
--echo # MDEV-25925 Warning: Memory not freed: 32 on INSERT DELAYED
|
|
--echo #
|
|
|
|
SET sql_mode='TRADITIONAL';
|
|
CREATE TABLE t1 (c BLOB) ENGINE=MyISAM;
|
|
--error ER_TRUNCATED_WRONG_VALUE
|
|
INSERT DELAYED INTO t1 VALUES (''||'');
|
|
DROP TABLE t1;
|
|
SET sql_mode=DEFAULT;
|
|
|
|
|
|
--echo #
|
|
--echo # MDEV-24467 Memory not freed after failed INSERT DELAYED
|
|
--echo #
|
|
|
|
CREATE TABLE t1 (a VARCHAR(1)) ENGINE=MyISAM;
|
|
ALTER TABLE t1 ADD b BLOB DEFAULT 'x';
|
|
--error ER_DATA_TOO_LONG
|
|
INSERT DELAYED INTO t1 (a) VALUES ('foo');
|
|
DROP TABLE t1;
|