> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/release-notes/community-server/old-releases/5.5/5.5.21.md).

# MariaDB 5.5.21 Release Notes

The most recent release in the [MariaDB 5.5](/docs/release-notes/community-server/old-releases/5.5/changes-improvements-in-mariadb-5-5.md) series is:[**MariaDB 5.5.68**](/docs/release-notes/community-server/old-releases/5.5/5.5.68.md) [Download Now](https://downloads.mariadb.org/mariadb/5.5.68/)

[Download](https://archive.mariadb.org/mariadb-5.5.21/) | **Release Notes** | [Changelog](/docs/release-notes/community-server/changelogs/changelogs-mariadb-55-series/mariadb-5521-changelog.md) | [Overview of 5.5](/docs/release-notes/community-server/old-releases/5.5/changes-improvements-in-mariadb-5-5.md)

**Release date:** 16 Mar 2012

[MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md) is a [***Beta***](/docs/release-notes/community-server/about/release-criteria.md) release. In general this means that there are no known serious bugs, except for those marked as feature requests. This is the second release of the [MariaDB 5.5](/docs/release-notes/community-server/old-releases/5.5/changes-improvements-in-mariadb-5-5.md) series and includes features left out of the 5.5.20-alpha release, and various bug fixes.

**For a description of** [**MariaDB 5.5**](/docs/release-notes/community-server/old-releases/5.5/changes-improvements-in-mariadb-5-5.md) **see the**[**What is MariaDB 5.5**](/docs/release-notes/community-server/old-releases/5.5/changes-improvements-in-mariadb-5-5.md) **page.**

For a list of changes made in [MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md)-beta, with links to detailed information on each push, see the [MariaDB 5.5.21 Changelog](/docs/release-notes/community-server/changelogs/changelogs-mariadb-55-series/mariadb-5521-changelog.md).

In most respects [MariaDB](https://mariadb.com/docs/server/) will work exactly as MySQL: all commands, interfaces, libraries and APIs that exist in MySQL also exist in MariaDB.

**Note:** *There are no RPM packages of* [*MariaDB 5.5.21*](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md) *available at this time.*

## Includes MySQL 5.5.21

This version of MariaDB includes MySQL 5.5.21. See [Changes in MySQL 5.5.21](https://dev.mysql.com/doc/refman/5.5/en/news-5-5-21.html) for what changed between this and previous MySQL versions.

## Security fix

* A fix is included for a COM\_BINLOG\_DUMP crash on invalid data. See [MDEV-3910](https://jira.mariadb.org/browse/MDEV-3910) for details.

## Threadpool

[MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md) is the first release to feature the new [threadpool](/docs/server/ha-and-performance/optimization-and-tuning/buffers-caches-and-threads/thread-pool/thread-pool-in-mariadb.md). This is comparable in functionality to the closed-source feature in MySQL Enterprise.

Preliminary benchmarks of the new threadpool code are available [here](/docs/server/reference/product-development/server-development/quality/benchmarks-and-long-running-tests/benchmark-results/threadpool-benchmarks.md).

For our Windows users, pool-of-threads is now the default scheduler on Windows Vista (and higher). It is not the default on Linux/Unix yet as we don't feel we have had enough time to thoroughly test various corner cases.

## Updated SphinxSE

[SphinxSE](/docs/server/server-usage/storage-engines/sphinx-storage-engine.md) has been updated to version 2.0.4 (the latest upstream version) in [MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md).

## LIMIT ROWS EXAMINED

In 5.5.21 there is a new `LIMIT ROWS EXAMINED` optimization which provides the means to terminate the execution of [SELECT](/docs/server/reference/sql-statements/data-manipulation/selecting-data/select.md) statements which examine too many rows, and thus use too many resources. This is achieved through an extension of the [LIMIT](/docs/server/reference/sql-statements/data-manipulation/selecting-data/select.md#limit) clause —`LIMIT ROWS EXAMINED <number_of_rows>`. Whenever possible the semantics of `LIMIT ROWS EXAMINED` is the same as that of normal `LIMIT` (for instance for aggregate functions).

More information is available on the [LIMIT ROWS EXAMINED](/docs/server/ha-and-performance/optimization-and-tuning/query-optimizations/limit-rows-examined.md) page.

## INSTALL SONAME

[MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md) includes a new `INSTALL SONAME` statement. This statement is a variant of [INSTALL PLUGIN](/docs/server/reference/sql-statements/administrative-sql-statements/plugin-sql-statements/install-plugin.md). It installs **all** plugins from a given `plugin_library`.

See the [INSTALL SONAME](/docs/server/reference/sql-statements/administrative-sql-statements/plugin-sql-statements/install-soname.md) page for details.

## Extended Keys support for XtraDB and InnoDB

In 5.5.21 there is a new "extended keys" optimization which, when enabled, makes use of existing components of InnoDB/XtraDB keys to generate more efficient execution plans. Using these components in many cases allows the server to generate execution plans which employ index-only look-ups.

See the [Extended Keys](/docs/server/ha-and-performance/optimization-and-tuning/query-optimizer/extended-keys.md) page for more information.

## Non-blocking Client Library

MariaDB, starting with version 5.5.21 supports [non-blocking operations in the client-library](/docs/server/reference/product-development/mariadb-internals/using-mariadb-with-your-programs-api/non-blocking-client-library.md). This allows an application to start a query or other operation against the database, and then continue to do other work (in the same thread) while the request is sent over the network, the query is processed in the server, and the result travels back. As parts of the result become ready, the application can — at its leisure — call back into the library to continue processing, repeating this until the operation is completed.

Non-blocking operation is implemented entirely within the client library. This means no special server support is necessary and non-blocking operation works with any version of the MariaDB or MySQL server, the same as the normal blocking API. It also means that it is not possible to have two queries running at the same time on the same connection (this is a protocol limitation). But a single thread can have any number of non-blocking queries running at the same time, each using its own MYSQL connection object.

See [Non-Blocking Client Library](/docs/server/reference/product-development/mariadb-internals/using-mariadb-with-your-programs-api/non-blocking-client-library.md) for details.

## mysql\_real\_connect() Changes

In MySQL, and in MariaDB versions before 5.5.21, `mysql_real_connect()` removes from the `MYSQL` object any options set with `mysql_option()` when it fails. Beginning with [MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md), options are preserved by a failing`mysql_real_connect()`; use `mysql_close()`, as normal, to clear them.

This only has effect if the `MYSQL` object is reused after a`mysql_real_connect()` failure (which is unusual). No real-life incompatibilities are expected from this change (it is unlikely that an application would rely on options being automatically removed between connection attempts).

## Selectively skipping replication of binlog events

Normally, all changes that are logged as events in the binlog are also replicated to all slaves (though still subject to filtering by`--replicate-do-xxx`, `--replicate-ignore-xxx`, and similar options). However, sometimes it may be desirable to have certain events be logged into the binlog, but not be replicated to all or a subset of slaves, where the distinction between events that should be replicated or not is under the control of the application making the changes.

This could be useful if an application does some replication external to the server outside of the built-in replication, or if it has some data that should not be replicated for whatever reason.

This is possible with two new system variables introduced in [MariaDB 5.5.21](/docs/release-notes/community-server/old-releases/5.5/5.5.21.md): `@@skip_replication` and `--replicate-events-marked-for-skip`.

See [Selectively skipping replication of binlog events](/docs/server/server-management/server-monitoring-logs/binary-log/selectively-skipping-replication-of-binlog-events.md) for details.

{% hint style="info" %}
Be notified of new MariaDB Server releases automatically by [subscribing](https://lists.mariadb.org/postorius/lists/announce.lists.mariadb.org/) 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](/docs/general-resources/distributions-including-mariadb.md) page.
{% endhint %}

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formid="4316" formId="4316" %}
