MDEV-34649: Memory leaks on running DELETE statement in PS mode with positional parameters
Re-design of a way for handling the DELETE statement introduced by the task MDEV-28883, added regression caused by missing reset of the data member current_select->first_cond_optimization on handling the DELETE statement that results in a memory leaks on second execution of the same DELETE statement in PS mode. To fix memory leaks, added set of the data member current_select->first_cond_optimization to the value false on finishing execution of DELETE statement.
This commit is contained in:
parent
7ead48a72b
commit
73b58ac487
@ -148,3 +148,17 @@ CALL p1(2);
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
# End of 10.11 tests
|
# End of 10.11 tests
|
||||||
|
#
|
||||||
|
# MDEV-34649: Memory leaks on running DELETE statement in PS mode with positional parameters
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INT, b VARCHAR(30)) CHARSET=utf8mb4;
|
||||||
|
INSERT INTO t1 VALUES (1, 'one'), (0, NULL), (3, 'three'), (4, 'four');
|
||||||
|
PREPARE stmt FROM 'DELETE FROM t1 WHERE b=?' ;
|
||||||
|
SET @arg00=NULL;
|
||||||
|
EXECUTE stmt USING @arg00;
|
||||||
|
SET @arg00='one';
|
||||||
|
EXECUTE stmt USING @arg00;
|
||||||
|
# Clean up
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
|
# End of 11.1
|
||||||
|
@ -167,3 +167,21 @@ DROP TABLE t1;
|
|||||||
DROP PROCEDURE p1;
|
DROP PROCEDURE p1;
|
||||||
|
|
||||||
--echo # End of 10.11 tests
|
--echo # End of 10.11 tests
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-34649: Memory leaks on running DELETE statement in PS mode with positional parameters
|
||||||
|
--echo #
|
||||||
|
CREATE TABLE t1 (a INT, b VARCHAR(30)) CHARSET=utf8mb4;
|
||||||
|
INSERT INTO t1 VALUES (1, 'one'), (0, NULL), (3, 'three'), (4, 'four');
|
||||||
|
PREPARE stmt FROM 'DELETE FROM t1 WHERE b=?' ;
|
||||||
|
SET @arg00=NULL;
|
||||||
|
EXECUTE stmt USING @arg00;
|
||||||
|
SET @arg00='one';
|
||||||
|
# Without the patch, attempt to run the same prepared statement the second time
|
||||||
|
# would result in memory leaks
|
||||||
|
EXECUTE stmt USING @arg00;
|
||||||
|
--echo # Clean up
|
||||||
|
DEALLOCATE PREPARE stmt;
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
--echo # End of 11.1
|
||||||
|
@ -912,6 +912,7 @@ cleanup:
|
|||||||
{
|
{
|
||||||
thd->lex->current_select->save_leaf_tables(thd);
|
thd->lex->current_select->save_leaf_tables(thd);
|
||||||
thd->lex->current_select->leaf_tables_saved= true;
|
thd->lex->current_select->leaf_tables_saved= true;
|
||||||
|
thd->lex->current_select->first_cond_optimization= false;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete deltempfile;
|
delete deltempfile;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user