Commit 2667b7a1 authored by dlenev@mysql.com's avatar dlenev@mysql.com

Merge bk-internal.mysql.com:/home/bk/mysql-5.0

into mysql.com:/home/dlenev/src/mysql-5.0-amf
parents 5b10e3e5 154c1a0a
...@@ -213,14 +213,21 @@ void Item_bool_func2::fix_length_and_dec() ...@@ -213,14 +213,21 @@ void Item_bool_func2::fix_length_and_dec()
{ {
THD *thd= current_thd; THD *thd= current_thd;
/* /*
In case we're in statement prepare, create conversion item In case we're in prepared statement, create conversion
in its memory: it will be reused on each execute. item in its memory: it will be reused on each execute.
(and don't juggle with mem_root's if it is ordinary statement).
We come here only during first fix_fields() because after creating
conversion item we will have arguments with compatible collations.
*/ */
Item_arena *arena= thd->current_arena, backup; Item_arena *arena= thd->current_arena, backup;
thd->set_n_backup_item_arena(arena, &backup); if (arena->is_conventional())
arena= 0;
else
thd->set_n_backup_item_arena(arena, &backup);
conv= new Item_func_conv_charset(args[weak], conv= new Item_func_conv_charset(args[weak],
args[strong]->collation.collation); args[strong]->collation.collation);
thd->restore_backup_item_arena(arena, &backup); if (arena)
thd->restore_backup_item_arena(arena, &backup);
conv->collation.set(args[weak]->collation.derivation); conv->collation.set(args[weak]->collation.derivation);
conv->fix_fields(thd, 0, &conv); conv->fix_fields(thd, 0, &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