Mroonga blog


Mroonga 3.01 has been released!

Mroonga 3.01 has been released!

Mroonga is a MySQL storage engine that supports fast fulltext search and geolocation search. It is CJK ready. It uses groonga as a storage and fulltext search engine.

How to install: Install

There are two topics for this release:

  • Supported utf8_unicode_ci, utf8m4_unicode_ci
  • Supported a limited FOREIGN KEY

Supported utf8_unicode_ci, utf8m4_unicode_ci

This release began to support MySQL compatible COLLATION such as 'utf8_unicode_ci' and 'utf8mb4_unicode_ci'.

Install groonga-normalizer-mysql package if you want to use 'utf8_unicode_ci' or 'utf8mb4_unicode_ci'. (groonga-normalizer-mysql is installed with mroonga 3.01)

mroonga does not cover all COLLATION like MySQL does. It does normalize only. It delegate to sort the results by MySQL.

Thus, there are the case that grooga's normalized results does not match to MyISAM or InnoDB does.

This is incompatible changes.

Compatibility problem:

  • MySQL compatible normalizer is applied to newly added table or column
  • groonga's normalizer(NormalizerAuto) is used for existent table columns

Note that using mroonga 3.01 with existent database, there may be used different normalizer for newly added column.

How to use same normalizer:

  • Use non 'utf8_general_ci','utf8mb4_general_ci','utf8_unicode_ci' or 'utf8mb4_unicode_ci' COLLATION (unify groonga's normalizer) such as 'utf8_roman_ci':
  > ALTER TABLE (table name) MODIFY (column definition) COLLATE 'utf8_roman_ci';

How to confirm COLLATION specific column's:

  > SHOW FULL COLUMNS FROM (table name);  


  • Note that described above four COLLATION use groonga's normalizer
  • Don't use 'utf8_bin' if you want to normalize

If you want to install mroonga from source with MySQL compatible normalizer, please install groonga-normalizer-mysql package.

If you want to install groonga-normalizer-mysql from scratch, here are the groonga-normalizer-mysql source archives.

Supported a limited FOREIGN KEY

This release began to support a limited FOREIGN KEY.

It means that there is a difference between mroonga and MySQL about the expression of table relationships.

groonga which is used by mroonga internally uses reference column for expressing about table relationships.

See reference types how to express table relationships in groonga.

On the otherhand, MySQL use FOREIGN KEY for such a case.

In this release, if use create a table by using FOREIGN KEYS in mroonga, such a information (relationships between two tables) will be reflected transparently.

But there are some important limitations.

First, this feature is available for MySQL 5.6 only.

Currently, mroonga packages built with MySQL 5.6 is not provided to wide variety of distributions.

So, CentOS 5 is the only distribution because MySQL 5.6.10 is shipped with.

Here are the limitations:

  • Referenced table must use PK which is not multiple column.
  • Constraint name is always fixed to original referenced column name even though you have changed it.
  • ON DELETE or ON UPDATE does not affects to. RESTRICT is always used.

If you want to use mroonga package with MySQL 5.6.x on other platform, you may be able to use wing repository provided by wing.


See Release 3.01 - 2013/02/28 about detailed changes since 3.00.

Let's search by mroonga!