お知らせ - 11系#
11.13リリース - 2022-01-29#
Improvements#
11.11リリース - 2021-12-29#
Improvements#
[CentOS] CentOS 8のサポートをやめました。
CentOS 8は、2021年12月31日でEOLとなるためです。
Fixes#
Thanks#
shibanao4870さん
Marc Laporteさん
santalexさん
11.10リリース - 2021-11-29#
Improvements#
[AlmaLinux] AlmaLinux 8 をサポートしました。
Fixes#
[CentOS] MariaDB 10.6向けMroongaを提供していなかった問題を修正しました。
[最適化] Mroongaが行カウントの最適化を誤って適用する問題を修正しました。[MDEV-16922][Josep Sanzさんの報告]
通常、Mroongaは、
SELECT
がCOUNT(*)
だけを取得し、WHERE
の条件がインデックスだけで処理できる時に、行カウントの最適化を適用します。しかし、以下のケースのように
WHERE
の条件がインデックスだけで処理できない場合でも、Mroongaは、行カウントの最適化を適用していました。結果として、
SELECT COUNT(*) WHERE ...
の結果が間違っていました。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;
Mroongaが 'STRING_FIELD =' のコンディションプッシュダウンで適切なエンコーディングを設定しない問題を修正しました。[groonga-dev,04913][Tomohiro 'Tomo-p' KATOさんの報告]
以下ケースでは、 Mroongaが 'STRING_FIELD =' の条件をコンディションプッシュダウンしますが、この時、Mroongaは適切なエンコーディングを検索キーワードに設定しません。結果として、Mroongaは検索キーワードのノーマライズに失敗します。
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さん
かとうさん
11.09リリース - 2021-11-04#
Improvements#
11.08リリース - 2021-10-06#
Fixes#
MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題を修正しました。
11.07リリース - 2021-09-29#
警告
Mroongaには、MySQL 5.7で作成されたDBをMySQL 8.0にアップグレードすると、Mroongaがクラッシュする問題がありました。
この問題は、Mroonga 11.08で修正されています。MySQL 8.0 より前のバージョンでMroongaを使用しているユーザーは、Mroonga 11.08以降を使うことを強くおすすめします。
Improvements#
[Ubuntu] Ubuntu 20.04 (Focal Fossa) の MySQL 8.0 をサポートしました。
[mroonga_snippet_html()] ノーマライザーのカスタマイズに対応しました。
この機能によって、以下のように
mroonga_snippet_html()
でカスタマイズしたノーマライザーを使えます。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>
ベクターカラムの値をバイナリーではなくテキストとして出力できるようにしました。
この機能によって、ベクターカラムの値をダンプするのに、
mysqldump
を使えます。
存在しないテーブルを削除した際に、 .mrn ファイルを作らないようにしました。 [groonga-dev: 04893][kenichi arimotoさんの報告]
ベクターの要素に対して W プラグマを使えるようにしました。
この機能によって、ベクターの要素に重みをセットできますが、この場合、Mroongaは指定したセクションのみ検索します。通常のマルチカラムインデックスでは、Mroongaは指定していないセクションもデフォルトの重みで検索します。
Fixes#
WHERE句に "WHERE primary_key IN ("")" と指定した際にMroongaが誤ったレコードを返すことがある問題を修正しました。 [groonga-dev,04855][Katsuhito Watanabeさんが報告]
例えば、以下ようなケースでMroongaが誤ったレコードを返すことがあります。
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さん
11.06リリース - 2021-08-29#
Improvements#
[CentOS] MariaDB 10.2.40、10.3.31、10.4.21、10.5.12をサポートしました。
[CentOS] MariaDB 10.6.4をサポートしました。 [GitHub#434][Tomohiro KATOさんがパッチ提供]
[CentOS] Percona Server 5.7.35をサポートしました。
[Debian GNU/Linux] Debian 11 (bullseye)をサポートしました。
Thanks#
かとうさん
11.05リリース - 2021-07-30#
Improvements#
Fixes#
MySQL/MariaDBのアップグレード後にクラッシュすることがある問題を修正しました。[GitHub#423][Vincent Pelletierさんの報告]
MySQL/MariaDB をアップグレード後に、
SELECT ... MATCH AGAINST
を実行するとMroongaがクラッシュすることがあります。
Thanks#
Vincent Pelletierさん
11.04リリース - 2021-06-29#
Improvements#
[サーバ変数の一覧]
mroonga_enable_operations_recording
をデフォルトで無効にしました。mroonga_enable_operations_recording
自動リカバリーのために操作の記録を有効にするかどうかを決めるものです。この操作記録はMroongaがクラッシュしたときに自動的にリカバリーするためのものです。通常、Mroonga内にロックが残留している場合、INSERT/DELETE/UPDATEは実行できませんが、
mroonga_enable_operations_recording
が有効な場合、INSERT/DELETE/UPDATEに加えてSELECTも実行出来ないことがあります。自動リカバリーがロックの残留によって、ブロックされるためです。したがって、このバージョンから、デフォルト値を
OFF
にしました。ISERT/DELETE/UPDATE は、ロックの残留によって変わらずブロックされますが、操作記録を無効にすることで、SELECTは動作する可能性があります。残留したロックに対する正しい対処は以下の通りです。
[Debian GNU/Linux] Debian GNU/Linux 向けの Oracle の MySQLパッケージ を使用した Mroonga のインストール手順を追加しました。
Mroonga 11.03にて、Debian GNU/Linux 向けの Oracle の MySQLパッケージ を使用した Mroongaをサポートしました。これらのパッケージのインストール手順をドキュメントに記載しました。これらのパッケージをインストールする際には、このドキュメントを参考にしてください。
[CentOS] MariaDB 10.2.39、10.3.30、10.4.20、10.5.11をサポートしました。
Fixes#
検索を実行した際にクラッシュする問題を修正しました。
この問題は通常は発生しません。
発生条件は以下の通りです。
mroonga_command
を使ってGroongaに直接テーブルやカラムを作成している。検索の実行と同時に上記のテーブルやカラムを削除する。
上記の条件が成立した時にMroongaがクラッシュします。
11.03リリース - 2021-05-31#
警告
このリリースにはアップグレードとアンインストールに関する重大な問題があります。もし、このバージョンをインストールした場合、Mroongaのアップグレードとアンインストールに失敗します。
したがって、このバージョンのMroongaは使用しないでください。
すでにこのバージョンのMroongaをインストール済みの場合、以下の回避策を使うことでMroongaをアップグレードしたりアンインストールしたりできます。
% echo "#!/bin/sh" > /usr/share/mroonga/deb/postrm.sh
% chmod u+x /usr/share/mroonga/deb/postrm.sh
Mroongaのアップグレード、または、アンインストール
警告
このリリースから、パッケージ名が変更されます。この変更の影響でこのバージョンにアップグレード後、Mroongaが無効になることがあります。このバージョンにアップグレードする場合、以下の点を必ず確認してください。
アップグレード後にMroongaが無効だった場合は、Mroongaを手動でインストールし直す必要があります。Mroongaの手動インストール及び、Mroongaが有効かどうかの確認については、以下のURLを参照してください。
また、今後も、Mroonga 11.03をまたいでMroongaをアップグレードする場合は、この現象が発生するので、注意してください。
このバージョンにアップグレード後に、Mroongaは有効だがバージョンが古いという場合は、MySQL、MariaDB、PerconaServerを再起動する必要があります。Mroongaのバージョンは以下のコマンドで確認できます。
SHOW VARIABLES LIKE 'mroonga_version';
警告
このバージョンには非互換の変更があります。
GEOMETRY
型を使用しているユーザーは、Mroonga 11.03にアップグレードする前に現在のデータを保存し、アップグレード後に保存したデータをリストアする必要があります。 データのダンプ/リストアには、以下の方法が使えます。上記の処置を実施せずに、アップグレードするとデータが破損するので注意してください。
データのダンプ/リストアには、以下の方法が使えます。
mysqldump
アップグレード前に
ALTER TABLE ENGINE=InnoDB
を実行し、アップグレード後にALTER TABLE ENGINE=Mroonga
を実行する。この修正を適用しない場合、
INSERT/UPDATE/SELECT/SELECT
はうまく動作しますが、データはGroongaが誤った(緯度と経度はGroonga内で逆にされます)保存をします。そのため、 空間データに対する、mroonga_command('select ...')
は動作しません。
Improvements#
以下のようにパッケージ名を変更しました。
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] Oracle の MySQL 5.7 と Oracle の MySQL 8.0 をサポートしました。
空間インデックスのSRIDをサポートしました。
今回のリリースから MBRContains 関数を使った検索で、Mroongaのインデックスが使用されます。
コンディションプッシュダウンを適用する条件式を増やしました。
注釈
コンディションプッシュダウンは、MySQLではなく、Mroonga内で条件式を評価します。したがって、多くのクエリーは、高速になりますが、Mroongaが条件式を評価することで、今までと異なる検索結果を返すことがあります。もし、Mroongaが意図しない検索結果を返した場合、以下のURLから報告してください。そして、コンディションプッシュダウンを無効にしてください。
コンディションプッシュダウンは以下のように無効にできます。
SET GLOBAL mroonga_condition_push_down_type = "NONE"
[CentOS] Percona Server 8.0.23 をサポートしました。
Fixes#
緯度と経度を逆に保存していた問題を修正しました。
警告
この修正によって、後方互換性が壊れます。
GEOMETRY
型を使用しているユーザーは、Mroonga 11.03にアップグレードする前に現在のデータを保存し、アップグレード後に保存したデータをリストアする必要があります。 データのダンプ/リストアには、以下の方法が使えます。mysqldump
アップグレード前に
ALTER TABLE ENGINE=InnoDB
を実行し、アップグレード後にALTER TABLE ENGINE=Mroonga
を実行する。
この修正を適用しない場合、
INSERT/UPDATE/SELECT/SELECT
はうまく動作しますが、データはGroongaが誤った(緯度と経度はGroonga内で逆にされます)保存をします。そのため、 空間データに対する、mroonga_command('select ...')
は動作しません。
11.02リリース - 2021-05-10#
Improvements#
11.01リリース - 2021-04-02#
Improvements#
[CentOS] MariaDB 10.2.37、10.3.28、10.4.18、10.5.9をサポートしました。
[CentOS] Percona Server 5.7.33をサポートしました。
以下のように、JSON形式のテキストを使って、参照ベクターカラムに値を追加できるようになりました。
この機能によって、参照元のテーブルから参照先のカラムへ値を直接入力できるため、参照カラムにJSONデータを追加しやすくなります。
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#
外部キー制約が登録されない問題を修正しました。 [GitHub#393] [Kosuke Yamashitaさんが報告]
この問題は MySQL8.0 でのみ発生します。
例えば、以下のように外部キー制約を定義しても、外部キー制約の情報が出力されていませんでした。
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)
以下のように、対象のデータベースに外部キー制約があると、
DROP DATABASE
に失敗する問題を修正しました。[GitHub#390][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>
以下のように、対象のテーブルが別のテーブルから参照されていると、
DROP COLUMN
に失敗する問題を修正しました。[GitHub#389][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>
MariaDB 10.3.28、 10.4.18、 10.5.9 との組み合わせでMroongaをビルドすると、ビルドエラーになる問題を修正しました。[GitHub#392][Tomohiro KATOさんがパッチ提供]
MariaDBのMroongaでアップデートに失敗する問題を修正しました。 [Reported by ひじー]
Thanks#
Kosuke Yamashitaさん
かとうさん
ひじーさん
11.00リリース - 2021-02-09#
メジャーバージョンアップです! メジャーバージョンアップですが、互換性は壊れていないので、データベースを再構築することなく11.00へアップグレードできます。
今回のリリースでは、MySQL、MariaDB、PerconaServerが自動的に再起動します。Mroonga 11.00が必要としているGroonga 11.0.0が、MySQL、MariaDB、PerconaServerが再起動されるまで有効にならないためです。