# Bugs fixed:
* InnoDB Storage Engine: If the server crashed while an XA transaction was prepared but not yet committed, the transaction could remain in the system after restart, and cause a subsequent shutdown to hang.
* Partitioning: When executing a row-ordered retrieval index merge, the partitioning handler used memory from that allocated for the table, rather than that allocated to the query, causing table object memory not to be freed until the table was closed.
* Replication: When mysqlbinlog was invoked using --base64-output=decode-row and --start-position=pos, (where pos is a point in the binary log past the format description log event), a spurious error of the type shown here was generated:
- malformed binlog: it does not contain any Format_description_log_event...
- However, since there is nothing unsafe about not printing the format description log event, the error has been removed for this case.
* Replication: Typographical errors appeared in the text of several replication error messages. (The word “position” was misspelled as “postion”.)
* After the fix for Bug#11889186, MAKEDATE() arguments with a year part greater than 9999 raised an assertion.
* An assertion could be raised due to a missing NULL value check in Item_func_round::fix_length_and_dec().
* In debug builds on Solaris, an assertion was raised if a reverse IP lookup with gethostbyaddr_r() failed.
* MySQL did not build if configured with both --with-debug and --with-libedit.
* A problem introduced in 5.1.57 caused very old (MySQL 4.0) clients to be unable to connect to the server.
* Using CREATE EVENT IF NOT EXISTS for an event that already existed and was enabled caused multiple instances of the event to run.
* The incorrect max_length value for YEAR values could be used in temporary result tables for UNION, leading to incorrect results.
* In Item_func_in::fix_length_and_dec(), a Valgrind warning for uninitialized values was corrected.
* In ROUND() calculations, a Valgrind warning for uninitialized memory was corrected.
* Valgrind warnings caused by comparing index values to an uninitialized field were corrected.
* LOAD DATA INFILE errors could leak I/O cache memory.
* For LOAD DATA INFILE, multibyte character sequences could be pushed onto a stack too small to accommodate them.
* An embedded client would abort rather than issue an error message if it issued a TEE command (\T file_name) and the directory containing the file did not exist. This occurred because the wrong error handler was called.
* On Linux, the mysql client built using the bundled libedit did not read ~/.editrc.
* The optimizer sometimes incorrectly processed HAVING clauses for queries that did not also have an ORDER BY clause.
* PROCEDURE ANALYZE() could leak memory for NULL results, and could return incorrect results if used with a LIMIT clause.
* On some platforms, the Incorrect value: xxx for column yyy at row zzz error produced by LOAD DATA INFILE could have an incorrect value of zzz.
* In MySQL 5.1 and up, if a table had triggers that used syntax supported in 5.0 but not 5.1, the table became unavailable. Now the table is marked as having broken triggers.
* An attempt to install nonexistent files during installation was corrected.
* On FreeBSD 64-built builds of the embedded server, exceptions were not prevented from propagating into the embedded application.