MariaDB 5.5.30 Changelog

The most recent release in the MariaDB 5.5 series is:MariaDB 5.5.68 Download Nowarrow-up-right

Downloadarrow-up-right | Release Notes | Changelog |[Overview of 5.5arrow-up-right

Release date: 12 Mar 2013

For the highlights of this release, see the release notes.

The revision number links will take you to the revision's page on Launchpad. On Launchpad you can view more details of the revision and view diffs of the code modified in that revision.

  • Revision #3690arrow-up-right Mon 2013-03-11 13:50:17 +0400

    • The i386 specific code improving character set conversion on the ASCII range was not enabled on x86_64 machines. Enabling it. Gives up to 18 times conversion performance improvement.

    • modified: sql/sql_string.cc

  • Revision #3689arrow-up-right [merge] Sun 2013-03-10 12:46:56 +0100

  • Revision #3688arrow-up-right Fri 2013-03-08 19:09:45 +0100

    • MDEV-4186arrow-up-right Test case main.myisampack fails on ppc32 (only)

    • fix the declaration to use the correct type for st_handler_check_param::sort_buffer_length. remove redundant casts.

  • Revision #3687arrow-up-right Fri 2013-03-08 19:09:15 +0100

  • Revision #3686arrow-up-right [merge] Fri 2013-03-08 19:08:45 +0100

  • Revision #3685arrow-up-right Wed 2013-03-06 09:38:08 +0100

    • hack in dependencies to imitate mysql-*.rpm even better

  • Revision #3684arrow-up-right Wed 2013-03-06 09:32:13 +0100

    • MDEV-4068arrow-up-right rpm scriptlet chown command dangerous

    • add --mysqld option to my_print_defaults change server-postin script to use that

  • Revision #3683arrow-up-right Tue 2013-03-05 17:49:37 +0100

    • MDEV-4066arrow-up-right semisync_master + temporary tables causes memory leaks

    • close (and auto-drop) temporary tables before rolling back the last transaction in the connection.

  • Revision #3682arrow-up-right Wed 2013-03-06 01:45:25 +0400

    • TODO-424 geometry query crashes server. The bug was found by Alyssa Milburn. If the number of points of a geometry feature read from binary representation is greater than 0x10000000, then the (uint32) (num_points * 16) will cut the higher byte, which leads to various errors. Fixed by additional check if (num_points > max_n_points).

  • Revision #3681arrow-up-right Tue 2013-03-05 20:15:36 +0200

    • Fix for assert found by mysql-test-run

  • Revision #3680arrow-up-right Tue 2013-03-05 00:53:18 +0200

    • Fixed issue with LOCK TABLE + ALTER TABLE ENABLE KEYS + SHOW commands.

  • Revision #3679arrow-up-right Mon 2013-03-04 12:49:35 +0100

    • Fix wrong install location for DEB supportfiles.

  • Revision #3678arrow-up-right [merge] Sat 2013-03-02 14:04:11 -0800

    • Merge

    • Revision #3672.1.1arrow-up-right Sat 2013-03-02 12:36:32 -0800

      • Fixed bug MDEV-4220arrow-up-right. This bug is a regression bug. The regression was introduced by the patch for MDEV-3851arrow-up-right, that tried to weaken the condition when a ref access with an extended key can be converted to an eq_ref access. The patch incorrectly formed this condition. As a result, while improving performance for some queries, the patch caused worse performance for another queries.

  • Revision #3677arrow-up-right Fri 2013-03-01 20:58:19 +0100

    • MDEV-4216arrow-up-right : export additional functions mysql_get_timeout_value(),mysql_get_timeout_value_ms(), mysql_get_socket() from shared client library. They are documented as part of async API.

    • Also, remove functions mysql_close_slow_part_start() and mysql_close_slow_part_cont() from exports - they are not documented anywhere.

  • Revision #3676arrow-up-right Fri 2013-03-01 11:36:15 -0500

    • Removed the obsolete instructions from the MySQL 5.1 manual. Instead provide a link to

  • Revision #3675arrow-up-right [merge] Fri 2013-03-01 18:09:06 +0200

    • Automatic merge

    • Revision #3667.1.3arrow-up-right Fri 2013-03-01 18:01:44 +0200

      • Fixed bug MPDEV-628 / Bug #989055arrow-up-right - Querying myisam table metadata may corrupt the table.

      • The issue was that there was that SHOW commands could open the table in the store engine, even in cases where it should not be allowed to do that (ie, the storage engines meta data for that table was under big changes).

      • The cases where this should not be allowed are: - ALTER TABLE DISABLE KEYS - ALTER TABLE ENABLE KEYS - REPAIR TABLE - OPTIMIZE TABLE - DROP TABLE

      • This patch adds a new mode, protected_against_usage(). If this is used then the SHOW command will wait until the table is accessable. This is implemented by re-using the already exising 'version' flag for TABLE_SHARE. It also added functions to be used to change TABLE_SHARE->version instead of changing it directly.

    • Revision #3667.1.2arrow-up-right Thu 2013-02-28 16:47:03 +0200

      • Added test case for bug in replace with replication that existed in MySQL 5.1: Replace with an auto_increment primary key and another unique key didn't replicate correctly with REPLACE

    • Revision #3667.1.1arrow-up-right Thu 2013-02-28 08:42:05 +0200

      • Added support for --crash-script in mysqld_safe. Trivial cleanup

  • Revision #3674arrow-up-right Fri 2013-03-01 14:58:19 +0100

    • Fix compile error when building with DBUG, but without DEBUG_SYNC.

  • Revision #3673arrow-up-right [merge] Fri 2013-03-01 11:44:10 +0400

  • Revision #3672arrow-up-right [merge] Thu 2013-02-28 23:56:17 +0100

  • Revision #3671arrow-up-right [merge] Thu 2013-02-28 22:47:29 +0100

    • 5.3->5.5 merge

    • Revision #2502.567.74arrow-up-right [merge] Thu 2013-02-28 21:48:47 +0100

    • Revision #2502.567.73arrow-up-right Thu 2013-02-28 09:55:35 -0800

      • Fixed a compile error for some platform.

    • Revision #2502.567.72arrow-up-right Sun 2013-02-24 19:16:11 -0800

      • Fixed bug MDEV-4177arrow-up-right The function remove_eq_cond removes the parts of a disjunction for which it has been proved that they are always true. In the result of this removal the disjunction may be converted into a formula without OR that must be merged into the AND formula that contains the disjunction. The merging of two AND conditions must take into account the multiple equalities that may be part of each of them. These multiple equality must be merged and become part of the and object built as the result of the merge of the AND conditions. Erroneously the function remove_eq_cond lacked the code that would merge multiple equalities of the merged AND conditions. This could lead to confusing situations when at the same AND level there were two multiple equalities with common members and the list of equal items contained only some of these multiple equalities. This, in its turn, could lead to an incorrect work of the function substitute_for_best_equal_field when it tried to optimize ref accesses. This resulted in forming invalid TABLE_REF objects that were used to build look-up keys when materialized subqueries were exploited.

    • Revision #2502.567.71arrow-up-right Thu 2013-02-21 17:13:12 -0800

      • Fixed bug MDEV-4172arrow-up-right. This bug in the legacy code could manifest itself in queries with semi-join materialized subqueries. When a subquery is materialized all conditions that are imposed only on the columns belonging to the tables from the subquery are taken into account.The code responsible for subquery optimizations that employes subquery materialization makes sure to remove these conditions from the WHERE conditions of the query obtained after it has transformed the original query into a query with a semi-join. If the condition to be removed is an equality condition it could be added to ON expressions and/or conditions from disjunctive branches (parts of OR conditions) in an attempt to generate better access keys to the tables of the query. Such equalities are supposed to be removed later from all the formulas where they have been added to. However, erroneously, this was not done in some cases when an ON expression and/or a disjunctive part of the OR condition could be converted into one multiple equality. As a result some equality predicates over columns belonging to the tables of the materialized subquery remained in the ON condition and/or the a disjunctive part of the OR condition, and the excuter later, when trying to evaluate them, returned wrong answers as the values of the fields from these equalities were not valid. This happened because any standalone multiple equality (a multiple equality that are not ANDed with any other predicates) lacked the information about equality predicates inherited from upper levels (in particular, inherited from the WHERE condition). The fix adds a reference to such information to any standalone multiple equality.

    • Revision #2502.567.70arrow-up-right [merge] Wed 2013-02-20 19:22:02 -0800

      • Merge.

      • Revision #2502.573.1arrow-up-right Wed 2013-02-20 18:01:36 -0800

        • Fixed bug MDEV-3913arrow-up-right. The wrong result set returned by the left join query from the bug test case happened due to several inconsistencies and bugs of the legacy mysql code.

        • The bug test case uses an execution plan that employs a scan of a materialized IN subquery from the WHERE condition. When materializing such an IN- subquery the optimizer injects additional equalities into the WHERE clause. These equalities express the constraints imposed by the subquery predicate. The injected equality of the query in the test case happens to belong to the same equality class, and a new equality imposing a condition on the rows of the materialized subquery is inferred from this class. Simultaneously the multiple equality is added to the ON expression of the LEFT JOIN used in the main query.

        • The inferred equality of the form f1=f2 is taken into account when optimizing the scan of the rows the temporary table that is the result of the subquery materialization: only the values of the field f1 are read from the table into the record buffer. Meanwhile the inferred equality is removed from the WHERE conditions altogether as a constraint on the fields of the temporary table that has been used when filling this table. This equality is supposed to be removed from the ON expression when the multiple equalities of the ON expression are converted into an optimal set of equality predicates. It supposed to be removed from the ON expression as an equality inferred from only equalities of the WHERE condition. Yet, it did not happened due to the following bug in the code.

        • Erroneously the code tried to build multiple equality for ON expression twice: the first time, when it called optimize_cond() for the WHERE condition, the second time, when it called this function for the HAVING condition. When executing optimize_con() for the WHERE condition a reference to the multiple equality of the WHERE condition is set in the multiple equality of the ON expression. This reference would allow later to convert multiple equalities of the ON expression into equality predicates. However the second call of build_equal_items() for the ON expression that happened when optimize_cond() was called for the HAVING condition reset this reference to NULL.

        • This bug fix blocks calling build_equal_items() for ON expressions for the second time. In general, it will be beneficial for many queries as it removes from ON expressions any equalities that are to be checked for the WHERE condition. The patch also fixes two bugs in the list manipulation operations and a bug in the function substitute_for_best_equal_field() that resulted in passing wrong reference to the multiple equalities of where conditions when processing multiple equalities of ON expressions.

        • The code of substitute_for_best_equal_field() and the code the helper function eliminate_item_equal() were also streamlined and cleaned up. Now the conversion of the multiple equalities into an optimal set of equality predicates first produces the sequence of the all equalities processing multiple equalities one by one, and, only after this, it inserts the equalities at the beginning of the other conditions.

        • The multiple changes in the output of EXPLAIN EXTENDED are mainly the result of this streamlining, but in some cases is the result of the removal of unneeded equalities from ON expressions. In some test cases this removal were reflected in the output of EXPLAIN resulted in disappearance of “Using where” in some rows of the execution plans.

    • Revision #2502.567.69arrow-up-right Wed 2013-02-13 11:58:16 +0200

      • Analysis: Range analysis detects that the subquery is expensive and doesn't build a range access method. Later, the applicability test for loose scan doesn't take that into account, and builds a loose scan method without a range scan on the min/max column. As a result loose scan fetches the first key in each group, rather than the first key that satisfies the condition on the min/max column.

      • Solution: Since there is no SEL_ARG tree to be used for the min/max column, it is not possible to use loose scan if the min/max column is compared with an expensive scalar subquery. Make the test for loose scan applicability to be in sync with the range analysis code by testing if the min/max argument is compared with an expensive predicate.

    • Revision #2502.567.68arrow-up-right [merge] Tue 2013-02-12 11:49:46 -0800

      • Merge.

      • Revision #2502.572.1arrow-up-right Thu 2013-02-07 21:46:02 -0800

        • Fixed bug MDEV-3995arrow-up-right. This bug happened because the executor tried to use a wrong TABLE REF object when building access keys. It constructed keys from fields of a materialized table from a ref object created to construct keys from the fields of the underlying base table. This could happen only when materialized table was created for a non-correlated IN subquery and only when the materialized table used for lookups. In this case we are guaranteed to be able to construct the keys from the fields of tables that would be outer tables for the tables of the IN subquery. The patch makes sure that no ref objects constructed from fields of materialized lookup tables are to be used.

    • Revision #2502.567.67arrow-up-right Mon 2013-02-11 10:55:58 +0200

    • Revision #2502.567.66arrow-up-right Mon 2013-02-04 17:35:48 +0200

      • Analys: The cause for the wrong result was that the optimizer incorrectly chose min/max loose scan when it is not applicable. The applicability test missed the case when a condition on the MIN/MAX argument was OR-ed with a condition on some other field. In this case, the MIN/MAX condition cannot be used for loose scan.

      • Solution: Extend the test check_group_min_max_predicates() to check that the WHERE clause is of the form: "cond1 AND cond2" where cond1 - does not use min_max_column at all. cond2 - is an AND/OR tree with leaves in form "min_max_column $CMP$ const" or $CMP$ is one of the functions between, is [not] null

  • Revision #3670arrow-up-right Thu 2013-02-28 20:19:53 +0100

    • revert

    • revid:georgi.kodinov@oracle.com-20120309130449-82e3bs5v3et1x0ef committer: Georgi Kodinov Georgi.Kodinov@Oracle.comenvelope timestamp: Fri 2012-03-09 15:04:49 +0200 message: Bug #12408412: GROUP_CONCAT + ORDER BY + INPUT/OUTPUT SAME USER VARIABLE = CRASH Moved the preparation of the variables that receive the output from SELECT INTO from execution time (JOIN:execute) to compile time (JOIN::prepare). This ensures that if the same variable is used in the SELECT part of SELECT INTO it will be properly marked as non-const for this query. Test case added. Used proper fast iterator.

    • a better fix (much smaller and without regressions) is coming from 5.1

  • Revision #3669arrow-up-right [merge] Thu 2013-02-28 18:42:49 +0100

  • Revision #3668arrow-up-right Wed 2013-02-27 10:43:07 +0400

  • Revision #3667arrow-up-right Sun 2013-02-24 20:05:26 +0100

    • Compilation : fix oqgraph's system check, in case where boost header aren't in standard include directory.

  • Revision #3666arrow-up-right Thu 2013-02-21 22:59:54 +0100

  • Revision #3665arrow-up-right Thu 2013-02-21 21:46:24 +0100

    • MDEV-4021arrow-up-right : Enable Ctrl-C handler when reading password, on Windows.

    • Prior to this patch, _getch() was used to read password input from console. getch() has a property that it reads Ctrl-C as character with ASCII code 0x03, and disregards Ctrl-C handler for current process. The fix is to use ReadConsole() API instead of getch() , after setting console mode to ENABLE_PROCESSED_INPUT - this mode allows current process to handle Ctrl-C events.

  • Revision #3664arrow-up-right Wed 2013-02-20 14:52:43 +0100

    • MDEV-4181arrow-up-right : ensure mysql client's beep works on all Windows systems. Use MessageBeep, which employs sound card, rather than system speaker. The secondary benefit is that one can use volume control for this sound (see MySQL's Bug #17088)

  • Revision #3663arrow-up-right Thu 2013-02-21 01:03:45 +0400

    • MDEV-3819arrow-up-right missing constraints for spatial column types. Checks added to return and error when inappropriate geometry type is stored in a field.

  • Revision #3662arrow-up-right Tue 2013-02-19 23:46:52 +0100

    • MDEV-4174arrow-up-right - Use kqueue for threadpool implementation on more BSD variants than just FreeBSD or OSX - i.e NetBSD, OpenBSD, DragonFly, etc.

  • Revision #3661arrow-up-right Mon 2013-02-18 20:51:36 +0100

    • fix typo

  • Revision #3660arrow-up-right Mon 2013-02-18 20:35:11 +0100

    • MDEV-4183arrow-up-right: Export additional symbols from RPMs , compatibly to distribution RPMs. -Ensure that symbols listed in CLIENT_API_EXTRA are not thrown away by the linker. -Add THR_KEY_mysys to this list, because Fedora18 exports it.

  • Revision #3659arrow-up-right Fri 2013-02-08 22:24:06 +0100

  • Revision #3658arrow-up-right Fri 2013-02-08 12:59:54 +0100

    • make rpm packages to respect CMAKE_INSTALL_PREFIX

  • Revision #3657arrow-up-right Mon 2013-02-04 15:43:26 +0100

    • MDEV-4127arrow-up-right : Export additional symbols when building RPM, to enable both recompiling mysqli or odbc from sources in addition to drop-in replacement functionality.

    • The case in question is compiling mysqli from sources, that needs client_errors via ER() macro.

    • Previously, we exported it as mysql_client_errors (compatibly to Fedora's style symbol renaming, see MDEV-3842arrow-up-right). However, if MariaDB header files are used when compiling mysqli, client_errors needs to be exported with its original name.

  • Revision #3656arrow-up-right Sun 2013-02-03 02:53:57 +0400

  • Revision #3655arrow-up-right Wed 2013-01-30 17:25:02 +0100

    • MDEV-4113arrow-up-right: Assertion (group->connection_count > 0) fails with Percona server in replication test.

    • Assertion happens in replication thread during THD destruction, when thread calls my_sync(), which in turn calls thd_wait_begin() callback. Connection count can be 0, because the counter was decremented before THD destructor. This assertion currently reproducible only in Percona server and not in MariaDB, due to differences in replication code.

    • Fixed by moving code to decrement connection counter after the THD destructor.

circle-info

Be notified of new MariaDB Server releases automatically by subscribingarrow-up-right to the MariaDB Foundation community announce 'at' lists.mariadb.org announcement list (this is a low traffic, announce-only list). MariaDB plc customers will be notified for all new releases, security issues and critical bug fixes for all MariaDB plc products thanks to the Notification Services.

MariaDB may already be included in your favorite OS distribution. More information can be found on the Distributions which Include MariaDB page.

This page is licensed: CC BY-SA / Gnu FDL

spinner

Last updated

Was this helpful?