Problem: Unicode->UJIS followed incorrect conversion
rules for U+00A5 YEN SIGN and U+203E OVERLINE,
so these characters were converted to ujis 0x8E5C
and 0x8E7E accordingly.
This behaviour would be correct for a JIS-X-0201 based character set,
but this is wrong for UJIS, which is documented as x-eucjp-unicode-0.9,
and which is based on ASCII for the range U+0000..U+007F.
Fix:
removing JIS-X-0201 conversion rules, making UJIS ASCII compatible.
YEN SIGN and OVERLINE do not have corresponding UJIS characters anymore
and converted to 0x3F QUESTION MARK, throwing a warning in appropriative cases.
This patch also includes a test covering full UJIS->Unicode->UJIS mapping.
Problem: Memory overrun happened in attempts to generate
error messages (e.g. in case of incorrect XPath syntax).
Reason: set_if_bigger() was used instead of set_if_smaller().
Change: replacing wrong set_if_bigger() to set_if_smaller(),
and making minor additional code clean-ups.
This patch corrects a problem encountered when reading the binlog from a remote
host. The application was crashing because the buffer variable (temp_buf) in
log_event was not pointing to the incoming data. For a normal file read, this
buffer is allocated by a previous call of read_log_event. However, when reading
from a remote host, the first call to read_log_event is not executed therefore
no buffer is allocated. Furthermore, there is no need to allocate a new buffer
because the incoming stream is what needs to be read.
This patch adds the call to initialize the temp_buf variable if reading from a
remote host. It also adds a check at destroy time to ensure the temp_buf is not
freed if reading from a remote host.
This patch corrects a bug involving a LOAD DATA INFILE operation on a
transactional table. It corrects a problem in the error handler by moving
the transactional table check and autocommit_or_rollback operation to the
end of the error handler.
The problem was an assert was thrown after the operation completed. The
assert found a non-sunk event in the transaction cache. The events in the
transaction cache were added after commit_or_rollack and thereafter nothing
removed them.
An additional test case was added to detect this
condition.
Problem: when replacing the root element, UpdateXML
erroneously tried to mix old XML content with the
replacement string, which led to crash.
Fix: don't use the old XML content in these cases,
just return the replacement string.
- both for data schema operations
- also make sure schema events vet the right server id when injected into the binlog
- use same mechanism to signal server_id in bug#17095, and reserve some "id's" for flagging special conditions on the event, in this case do not log it
- enable printing of server ids in the testcases to show that we cot it right
Change to use remove_file instead of 'system rm' in a lot of tests. (Should fix some windows test problems)
Removed memory leak in mysql_test if sync_with_master fails.
Do not terminate ndb_cluster_binary_log before the util thread has finnished. This should fix a shutdown bug where a thread is accessing injector_mutex after it's freed.
Patch may fix Bug#27622 "mysqld shutdown, util thread continues, while binlog thread exits"
The Item_outer_ref class based on the Item_direct_ref class was always used
to represent an outer field. But if the outer select is a grouping one and the
outer field isn't under an aggregate function which is aggregated in that
outer select an Item_ref object should be used to represent such a field.
If the outer select in which the outer field is resolved isn't grouping then
the Item_field class should be used to represent such a field.
This logic also should be used for an outer field resolved through its alias
name.
Now the Item_field::fix_outer_field() uses Item_outer_field objects to
represent aliased and non-aliased outer fields for grouping outer selects
only.
Now the fix_inner_refs() function chooses which class to use to access outer
field - the Item_ref or the Item_direct_ref. An object of the chosen class
substitutes the original field in the Item_outer_ref object.
The direct_ref and the found_in_select_list fields were added to the
Item_outer_ref class.
Problem: single byte do_varstring1() function was called, which didn't
check limit on "number of character", and checked only "number of bytes".
Fix: adding a multi-byte aware function do_varstring1_mb(),
to limit on "number of characters"
Support of views wasn't implemented for the TRUNCATE statement.
Now TRUNCATE on views has the same semantics as DELETE FROM view:
mysql_truncate() checks whether the table is a view and falls back
to delete if so.
In order to initialize properly the LEX::updatable for a view
st_lex::can_use_merged() now allows usage of merged views for the
TRUNCATE statement.