mirror of
https://github.com/MariaDB/server.git
synced 2025-12-01 17:39:21 +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.
18 lines
516 B
Plaintext
18 lines
516 B
Plaintext
#
|
|
# MDEV-25925 Warning: Memory not freed: 32 on INSERT DELAYED
|
|
#
|
|
SET sql_mode='TRADITIONAL';
|
|
CREATE TABLE t1 (c BLOB) ENGINE=MyISAM;
|
|
INSERT DELAYED INTO t1 VALUES (''||'');
|
|
ERROR 22007: Truncated incorrect DOUBLE value: ''
|
|
DROP TABLE t1;
|
|
SET sql_mode=DEFAULT;
|
|
#
|
|
# MDEV-24467 Memory not freed after failed INSERT DELAYED
|
|
#
|
|
CREATE TABLE t1 (a VARCHAR(1)) ENGINE=MyISAM;
|
|
ALTER TABLE t1 ADD b BLOB DEFAULT 'x';
|
|
INSERT DELAYED INTO t1 (a) VALUES ('foo');
|
|
ERROR 22001: Data too long for column 'a' at row 1
|
|
DROP TABLE t1;
|