News - 11 series#
Release 11.13 - 2022-01-29#
Improvements#
[CentOS] Added support for MySQL 5.7.37.
[CentOS][AlmaLinux] Added support for MySQL 8.0.28.
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
[CentOS][AlmaLinux] Added support for Percona Server 8.0.26-17.
[Ubuntu] Dropped Ubuntu 21.04 (Hirsute Hippo) support.
Because Ubuntu 21.04 reached EOL at January 20, 2022.
Release 11.11 - 2021-12-29#
Improvements#
[CentOS] Dropped support for CentOS 8.
Because CentOS 8 will reach EOL at 2021-12-31.
Fixes#
[AlmaLinux] Fixed a bug that we have not provided the package of Mroonga for MariaDB 10.3, 10.4, 10.5, and 10.6. [Gitter][Reported by shibanao4870]
[Documentation][Install] Fixed a typo. [GitHub #469,#470][Patched by Marc Laporte]
[Documentation][CentOS] Fixed the wrong URL of
percona-release-latest.noarch.rpm
. [GitHub #471][Patched by santalex]
Thanks#
shibanao4870
Marc Laporte
santalex
Release 11.10 - 2021-11-29#
Improvements#
[AlmaLinux] Added support for Mroonga on AlamLinux 8.
[AlmaLinux] Added support for MySQL 8.0.27.
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
[CentOS] Added support for MariaDB 10.2.41, 10.3.32, 10.4.22, 10.5.13, and 10.6.5.
[Ubuntu] Added support for MySQL 8.0 on Ubuntu 21.04 (Hirsute Hippo) and 21.10 (Impish Indri).
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
Fixes#
[CentOS] Fixed a bug that we have not provided the package of Mroonga for MariaDB 10.6.
[Optimizations] Fixed a bug that Mroonga apply the optimization of row count wrongly. [MDEV-16922][Reported by Josep Sanz]
Normally, Mroonga apply the optimization of row count when the
SELECT
fetches onlyCOUNT(*)
and condition inWHERE
can be processed only by index.However, Mroonga applied the optimization of row count even if Mroonga couldn’t process condition in
WHERE
only by index as below case by this bug.Consequently, the result of
SELECT COUNT(*) WHERE ...
is wrong.CREATE TABLE roles ( id INT ); INSERT INTO roles VALUES (1), (2), (3), (4), (5); CREATE TABLE users ( id INT, role_id INT, INDEX (role_id) ); INSERT INTO users VALUES (10, 1); INSERT INTO users VALUES (11, 2); INSERT INTO users VALUES (13, 3); INSERT INTO users VALUES (14, 4); INSERT INTO users VALUES (15, 5); INSERT INTO users VALUES (20, 1); INSERT INTO users VALUES (21, 2); INSERT INTO users VALUES (23, 3); INSERT INTO users VALUES (24, 4); INSERT INTO users VALUES (25, 5); SELECT COUNT(*) FROM ( SELECT roles.id FROM roles LEFT JOIN users ON users.id <= 100 AND users.role_id = roles.id ) roles_users;
Fixed a bug that Mroonga doesn’t set proper encoding on condition push down for ‘STRING_FIELD =’. [groonga-dev,04913][Reported by Tomohiro ‘Tomo-p’ KATO]
Mroonga executes condition push down for ‘STRING_FIELD =’ in the following case. However, Mroonga doesn’t set proper encoding in search keywords at this time. Consequently, Mroonga fails to normalize search keywords.
CREATE TABLE memos ( id INT PRIMARY KEY, title TEXT, INDEX (title) ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4; INSERT INTO memos VALUES (1, 'Groonga'); INSERT INTO memos VALUES (2, 'Mroonga'); SELECT * FROM memos WHERE title = 'mroonga' ORDER BY id;
Thanks#
Josep Sanz
Tomohiro KATO
Release 11.09 - 2021-11-04#
Improvements#
Release 11.08 - 2021-10-06#
Fixes#
Fixed a bug that Mroonga crashed when we upgrade DB created by MySQL 5.7 to MySQL 8.0.
Release 11.07 - 2021-09-29#
Warning
Mroonga has had a bug that if we upgrade DB created by MySQL 5.7 to MySQL 8.0, Mroonga crashes.
We fixed this bug on Mroonga 11.08. Therefore, if you were using Mroonga on MySQL 5.7 or previous version, we highly recommended that we use Mroonga 11.08 or later.
Improvements#
[Ubuntu] Added support for MySQL 8.0 on Ubuntu 20.04 (Focal Fossa).
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
[mroonga_snippet_html()] Added support for specifying lexicon name.
We can use custom normalizer in
mroonga_snippet_html()
by this feature as below.CREATE TABLE terms ( term VARCHAR(64) NOT NULL PRIMARY KEY ) COMMENT='normalizer "NormalizerNFKC130(''unify_kana'', true)"' DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; SELECT mroonga_snippet_html('これはMroonga(ムルンガ)です。', 'terms' as lexicon_name, 'むるんが') as snippet; snippet <div class="snippet">これはMroonga(<span class="keyword">ムルンガ</span>)です。</div>
Added support for outputting vector column values as text not raw binary.
We can use
mysqldump
for dumping vector column values by this feature.
Don’t create .mrn files if nonexistent table is dropped. [groonga-dev: 04893][Reported by kenichi arimoto]
Added support for W pragma against elements of vector column.
We can set the weight to elements of vector column by this feature. However, Mroonga only search the specified section in this case. In a normal multiple column index, Mroonga also searches not specified sections with the default weight.
Fixes#
Fixed a bug that if we use “WHERE primary_key IN (“”)” in a where clause, Mroonga may return wrong record. [groonga-dev,04855][Reported by Katsuhito Watanabe]
For example, Mroonga may return wrong record as below.
CREATE TABLE ids ( id varchar(7) PRIMARY KEY, parent_id varchar(7) )ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; INSERT INTO ids VALUES("abcdefg", ""); INSERT INTO ids VALUES("hijklmn", ""); INSERT INTO ids VALUES("opqrstu", "hijklmn"); SELECT * FROM ids WHERE id IN (SELECT parent_id FROM ids); +---------+-----------+ | id | parent_id | +---------+-----------+ | abcdefg | | | hijklmn | | +---------+-----------+ 2 rows in set (0.00 sec)
Thanks#
Katsuhito Watanabe
kenichi arimoto
Release 11.06 - 2021-08-29#
Improvements#
[CentOS] Added support for MariaDB 10.2.40, 10.3.31, 10.4.21, and 10.5.12
[CentOS] Added support for MariaDB 10.6.4 [GitHub#434][Patched by Tomohiro KATO]
[CentOS] Added support for Percona Server 5.7.35.
[Debian GNU/Linux] Added support for Debian 11 (bullseye).
Thanks#
Tomohiro KATO
Release 11.05 - 2021-07-30#
Improvements#
[CentOS] Added support for Percona Server 8.0.25
[CentOS] Added support for MySQL 5.7.35, 8.0.26.
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
[Ubuntu] Dropped Ubuntu 20.10 (Groovy Gorilla) support.
Because Ubuntu 20.10 reached EOL July 22, 2021.
Fixes#
Fix a crash bug that may be caused after MySQL/MariaDB upgrade. [GitHub#423][Reported by Vincent Pelletier]
Mronnga may crash if we execute
SELECT ... MATCH AGAINST
after MySQL/MariaDB upgrade.
Thanks#
Vincent Pelletier
Release 11.04 - 2021-06-29#
Improvements#
[Server variables] We disabled
mroonga_enable_operations_recording
by default.mroonga_enable_operations_recording
to determine whether recording operations for auto recovering are enabled or not.This recording of operations is for auto recovering Mroonga when it crashed. Normally, if lock remain in Mroonga, we can’t execute INSERT/DELETE/UPDATE, but if
mroonga_enable_operations_recording
is enable, we may not execute SELECT at times in addition to INSERT/DELETE/UPDATE. Because auto recovery is sometimes blocked by residual lock when they crashed.Therefore, we set
OFF
to the default value in this version. By we disable operation recording, INSERT/DELETE/UPDATE is blocked as usual because of the residual lock, but “SELECT” may bework.An appropriate way to handle to residual lock is as follows.
[Debian GNU/Linux] Added a install procedure for Mroonga for Debian GNU/Linux with Oracle MySQL package.
We supoort Mroonga for Debian GNU/Linux with Oracle MySQL package in Mroonga 11.03. We wrote install procedure for these package to this documentation. When we will install these packages, please refer to this documentation.
[CentOS] Added support for MariaDB 10.2.39, 10.3.30, 10.4.20, and 10.5.11.
Fixes#
Fix a crash bag when we execute search
This issue doesn’t occur under normal use.
The occurrence condition is as below.
We directly make tables and columns on Groonga by using
mroonga_command
.We execute search at the same time as delete the above tables and columns.
When the above conditions are established, Mroonga might crash.
Release 11.03 - 2021-05-31#
Warning
This release has had a critical bug about uninstall and upgrade. If we install this version, we fail upgrade Mroonga and also uninstall it.
Therefore, please don’t use Mroonga of this version.
If we have already installed Mroonga of this version, we can upgrade Mroonga or uninstall it by using the following workaround.
% echo “#!/bin/sh” > /usr/share/mroonga/deb/postrm.sh
% chmod u+x /usr/share/mroonga/deb/postrm.sh
Upgrade Mroonga or uninstall Mroonga.
Warning
The package names are changed from this release. Mroonga may be invalid after upgrade to this version by the influence of this modification. If we upgrade to this version, please always be sure to confirm the below points.
If Mroonga is invalid after the upgrade, we need to install manually Mroonga again. Please refer to the following URL about the manual installation of Mroonga and how to confirming whether Mroonga is valid or not.
Besides, please be careful the above phenomenon will continue from now if we will upgrade mroonga to stride over a Mroonga 11.03.
If Mroonga is valid after upgrade to this version but, Mroonga’s version is old, we need to restart MySQL, MariaDB, or PerconaServer. We can confirm Mroonga’s version as the below command.
SHOW VARIABLES LIKE 'mroonga_version';
Warning
There are broken backward compatibility on this version.
Users that are using GEOMETRY type need to store the current data before upgrading to Mroonga 11.03 and restore the stored data after upgrading to Mroonga 11.03.
Please be careful if we upgrade to this version without executing the above procedure, data is broken.
Users can use the following methods for dumping/restoring data.
mysqldump
Execute ALTER TABLE ENGINE=InnoDB before upgrading and execute ALTER TABLE ENGINE=Mroonga after upgrading.
If without this fix, INSERT/UPDATE/SELECT/SELECT works well but data stored in Groonga are wrong (Latitude and longitude are swapped in Groonga). Therefore, mroonga_command(‘select …’) doesn「t work for spatial data.
Improvements#
Renamed package names as below.
mariadb-server-10.x-mroonga
->mariadb-10.x-mroonga
mysql-server-5.x-mroonga
->mysql-community-5.x-mroonga
mysql-server-8.x-mroonga
->mysql-community-8.x-mroonga
percona-server-5x-mroonga
->percona-server-5.x-mroonga
percona-server-8x-mroonga
->percona-server-8.x-mroonga
[Debian GNU/Linux] Added support for the Oracle MySQL 5.7 package and the Oracle MySQL 8.0 package.
In this release, we newly provided the package of Mroonga for Debian GNU/Linux with the Oracle MySQL 5.7 and the Oracle MySQL 8.0.
By this, we make the Docker image of Mroonga with MySQL for Docker official images.
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
Added support for the SRID of Spatial Indexes.
the index of Mroonga is used in search with
MBRContains
function on MySQL 8.x since this release.
We added condition expressions that are applied condition push down.
Note
Condition push down doesn’t evaluate condition expressions in MySQL, but it evaluate condition expressions in Mroonga. Therefore, more queries will become high-performance, but the result of search may different than usual by Mroonga evaluate them. If Mroonga returns unexpected search results, we request that you report from the below URL. And we would like you to invalid for condition push down.
We can invalid condition push down as below.
SET GLOBAL mroonga_condition_push_down_type = "NONE"
[CentOS] Added support for Percona Server 8.0.23
Fixes#
Fixed a bug that latitude and longitude are stored conversely.
Warning
backward compatibility is broken by this fix.
Users that are using
GEOMETRY
type need to store the current data before upgrading to Mroonga 11.03 and restore the stored data after upgrading to Mroonga 11.03. Users can use the following methods for dumping/restoring data.mysqldump
Execute
ALTER TABLE ENGINE=InnoDB
before upgrading and executeALTER TABLE ENGINE=Mroonga
after upgrading.
If without this fix,
INSERT/UPDATE/SELECT/SELECT
works well but data stored in Groonga are wrong (Latitude and longitude are swapped in Groonga). Therefore,mroonga_command('select ...')
doesn’t work for spatial data.
Release 11.02 - 2021-05-10#
Improvements#
[CentOS] Added support for MySQL 5.7.34, 8.0.25.
There are below restrictions in the MySQL 8.0 package.
[Wrapper mode] Wrapper mode is not supported yet.
[Storage mode] Storage mode does not support the following feature.
The feature of relevant to the optimization.
The SRID of Spatial Indexes.
For example, the index of Mroonga is not used in search with
MBRContains
function. (It search by sequential search.)
[CentOS] Added support for MariaDB 10.2.38, 10.3.29, 10.4.19, and 10.5.10.
[Ubuntu] Dropped Ubuntu 16.04 (Xenial Xerus) support.
Because it reached End of Standard Support at April, 2021.
Release 11.01 - 2021-04-02#
Improvements#
[CentOS] Added support for MariaDB 10.2.37, 10.3.28, 10.4.18, and 10.5.9.
[CentOS] Added support for Percona Server 5.7.33.
Added support for adding value with text in JSON format to reference vector columns as below.
It makes easier to add JSON data into reference columns by this feature. Because we can directly add values to columns for reference destination from the source table.
CREATE TABLE attributes ( _id int, name varchar(255), value varchar(255) ) DEFAULT CHARSET=utf8mb4; CREATE TABLE items ( id int PRIMARY KEY AUTO_INCREMENT, attributes text DEFAULT NULL flags='COLUMN_VECTOR' groonga_type='attributes' ); INSERT INTO items (attributes) VALUES ('[{"name": "color", "value": "white"}, {"name": "size", "value": "big"}]'); INSERT INTO items (attributes) VALUES ('[{"name": "color", "value": "black"}]'); INSERT INTO items (attributes) VALUES (''); SELECT * FROM attributes; _id name value 1 color white 2 size big 3 color black SELECT * FROM items; id attributes 1 [1,2] 2 [3] 3 []
Fixes#
Fixed a bug that FOREIGN KEY constraint was not registered. [GitHub#393][Reported by Kosuke Yamashita]
This bug had only occurred on MySQL 8.0.
For example, the FOREIGN KEY constraint information had not been outputted even if we define it as below.
CREATE TABLE referred ( id int PRIMARY KEY AUTO_INCREMENT ); CREATE TABLE refer ( id int PRIMARY KEY AUTO_INCREMENT, id_referred int NOT NULL, CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id) ); SELECT CONSTRAINT_NAME, TABLE_NAME, REFERENCED_TABLE_NAME FROM information_schema.REFERENTIAL_CONSTRAINTS; Empty set (0.000 sec)
Fixed a bug that
DROP DATABASE
had failed if a target database had FOREIGN KEY constraint as below. [GitHub#390][Reported by Kosuke Yamashita]CREATE DATABASE another; USE another; CREATE TABLE referred ( id int PRIMARY KEY AUTO_INCREMENT ) ENGINE=mroonga DEFAULT CHARSET utf8mb4; CREATE TABLE refer ( id int PRIMARY KEY AUTO_INCREMENT, id_referred int NOT NULL, CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id) ) ENGINE=mroonga DEFAULT CHARSET utf8mb4; DROP DATABASE another; ERROR 1016 (HY000): [table][remove] a column that references the table exists: <refer.id_referred> -> <referred>
Fixed a bug that
DROP COLUMN
had failed if a target table was referred a other table as below. [GitHub#389][Reported by Kosuke Yamashita]CREATE TABLE referred ( id int PRIMARY KEY AUTO_INCREMENT, name varchar(255), text text ) ENGINE=mroonga DEFAULT CHARSET utf8mb4; CREATE TABLE refer ( id int PRIMARY KEY AUTO_INCREMENT, id_referred int NOT NULL, CONSTRAINT id_referred FOREIGN KEY (id_referred) REFERENCES referred (id) ) ENGINE=mroonga DEFAULT CHARSET utf8mb4; ALTER TABLE referred DROP COLUMN name; ERROR 1016 (HY000): [table][remove] a column that references the table exists: <refer.id_referred> -> <#sql2-3bc-25>
Fixed a build error when we built Mroonga with MariaDB 10.3.28, 10.4.18, or 10.5.9. [GitHub#392][Patched by Tomohiro KATO]
Fixed a bug that a update of Mroonga fails on MariaDB. [Reported by ひじー]
Thanks#
Kosuke Yamashita
Tomohiro KATO
ひじー
Release 11.00 - 2021-02-09#
This is a major version up! But It keeps backward compatibility. You can upgrade to 11.00 without rebuilding database.
In this version, MySQL, MariaDB, or PerconaServer will be automatically restarted. Because Mroonga 11.00 requires Groonga 11.0.0 or later but it will not reloaded until MySQL, MariaDB, or PrerconaServer is restarted.
Improvements#
[CentOS] Dropped support for MySQL 5.6
Because it reached EOL at Feb 1, 2021.
[CentOS] Dropped support for Percona Server 5.6
Dropped support for MariaDB 10.1 on Ubuntu 18.04 LTS.
Because MariaDB 10.1 already has reached EOL in upstream.
Updated version of Groonga to 11.0.0 or later that Mroonga requires.
Because a high impact bug of index corruption is fixed in Groonga 11.0.0.