multi-threaded environment".
To avoid deadlocks between several simultaneously run account management
commands (particularly between FLUSH PRIVILEGES/SET PASSWORD and GRANT
commands) we should always take table and internal locks during their
execution in the same order. In other words we should first open and lock
privilege tables and only then obtain acl_cache::lock/LOCK_grant locks.
Item_func_group_concat::fix_fields() set maybe_null flag to 0, and set it to
1 only if some of it's arguments may be null. When used in subquery in tmp
table created field which can't be null. When no data retireved result field
have to be set to null and error mentioned in bug report occurs. Also this
bug can occur if selecting from not null field in empty table.
Function group_concat now marked maybe_null from the very beginning not only
if some of it's argument may be null.
Fix bug #12410 : InnoDB was too permissive with LOCK TABLE ... READ LOCAL, and alowed new inserts to the table; we now make READ LOCAL equivalent to READ for InnoDB; note that this will cause slightly more locking in mysqldump, but makes the InnoDB table dumps consistent with MyISAM table dumps; note that the real code change patch was accidentally pushed with my another patch 5 minutes ago
Fix bug #12852 : do not increment the open handle count to a table if the table does not have an .ibd file and InnoDB decides to return an error from the ::open() function; then the table can be dropped even if the user has tried to open it
item_cmpfunc.cc:
Pass unicode value as "escape" argument to my_wildcmp
if a multibyte character set is used.
For single byte character set nothing has changed:
native (non-unicode) character code is still passed.
ctype_utf8.result, ctype_utf8.test:
adding test case
sql_parse.cc:
mysqld.cc:
Added --skip-client-character-set-handshake.
When this option is activated, client side character set
(which is sent in handshake) is ignored, and server side
default-character-set value is used for character_set_client
and character_set_results, thus reprodicing 4.0 behaviour.
Item::tmp_table_field_from_field_type() and create_tmp_field_from_item()
was converting string field to blob depending on byte-wise length instead of
character length, which results in converting valid varchar string with
length == 86 to longtext.
Made that functions above take into account max width of character when
converting string fields to blobs.
character_set_results is nullable, but value_ptr returns string "NULL"
set_var.cc:
Create Item_null instead of Item_string for NULL values
variables.result, variables.test:
adding test case
Cannot convert the charset of a GROUP_CONCAT result:
item_sum.cc:
"result" character set was not set into proper value.
func_gconcat.result, func_gconcat.test:
Fixing tests accordingly.
Added missing DBUG enter, compiled and tested on production with debug-max
build (my regular build missed the previous errors friday)
Changeset:
Added missing DBUG_ENTER, compiled and tested on production with debug-max
build!