Commit 52a5e29f authored by unknown's avatar unknown

Merge moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0

into  moonlight.intranet:/home/tomash/src/mysql_ab/mysql-5.0-bug21013
parents ae52219a 35b165f8
...@@ -5057,4 +5057,16 @@ concat('data was: /', var1, '/') ...@@ -5057,4 +5057,16 @@ concat('data was: /', var1, '/')
data was: /1/ data was: /1/
drop table t3| drop table t3|
drop procedure bug15217| drop procedure bug15217|
DROP PROCEDURE IF EXISTS bug21013 |
CREATE PROCEDURE bug21013(IN lim INT)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE (i < lim) DO
SET @b = LOCATE(_latin1'b', @a, 1);
SET i = i + 1;
END WHILE;
END |
SET @a = _latin2"aaaaaaaaaa" |
CALL bug21013(10) |
DROP PROCEDURE bug21013 |
drop table t1,t2; drop table t1,t2;
...@@ -5962,6 +5962,33 @@ call bug15217()| ...@@ -5962,6 +5962,33 @@ call bug15217()|
drop table t3| drop table t3|
drop procedure bug15217| drop procedure bug15217|
#
# BUG#21013: Performance Degrades when importing data that uses
# Trigger and Stored Procedure
#
# This is a performance and memory leak test. Run with large number
# passed to bug21013() procedure.
#
--disable_warnings
DROP PROCEDURE IF EXISTS bug21013 |
--enable_warnings
CREATE PROCEDURE bug21013(IN lim INT)
BEGIN
DECLARE i INT DEFAULT 0;
WHILE (i < lim) DO
SET @b = LOCATE(_latin1'b', @a, 1);
SET i = i + 1;
END WHILE;
END |
SET @a = _latin2"aaaaaaaaaa" |
CALL bug21013(10) |
DROP PROCEDURE bug21013 |
# #
# BUG#NNNN: New bug synopsis # BUG#NNNN: New bug synopsis
# #
......
...@@ -1418,7 +1418,8 @@ bool agg_item_charsets(DTCollation &coll, const char *fname, ...@@ -1418,7 +1418,8 @@ bool agg_item_charsets(DTCollation &coll, const char *fname,
In case we're in statement prepare, create conversion item In case we're in statement prepare, create conversion item
in its memory: it will be reused on each execute. in its memory: it will be reused on each execute.
*/ */
arena= thd->activate_stmt_arena_if_needed(&backup); arena= thd->is_stmt_prepare() ? thd->activate_stmt_arena_if_needed(&backup)
: NULL;
for (i= 0, arg= args; i < nargs; i++, arg+= item_sep) for (i= 0, arg= args; i < nargs; i++, arg+= item_sep)
{ {
...@@ -1453,7 +1454,7 @@ bool agg_item_charsets(DTCollation &coll, const char *fname, ...@@ -1453,7 +1454,7 @@ bool agg_item_charsets(DTCollation &coll, const char *fname,
been created in prepare. In this case register the change for been created in prepare. In this case register the change for
rollback. rollback.
*/ */
if (arena && arena->is_conventional()) if (arena)
*arg= conv; *arg= conv;
else else
thd->change_item_tree(arg, conv); thd->change_item_tree(arg, conv);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment