お知らせ - 14系 — Mroonga vmrn_version documentation

本文へスキップ
`Ctrl`+`K`

# お知らせ - 14系

## 14.14リリース - 2025-01-31

### 修正

#### Mroongaパッケージが前のバージョンのGroongaを使っている問題を修正しました。

GH-869

この問題はMroonga 14.13でのみ発生します。

Mroonga 14.13では、Groonga 14.1.3を使わなければなりませんが、14.1.3ではなく14.1.2を使っていました。

そのため、Mroonga 14.13の代わりに14.14を使ってください。

## 14.13リリース - 2025-01-29

### 改良

#### `mysql:8.4` Dockerイメージに対応

`mysql:*` Dockerイメージは`mysql-community-server`パッケージではなく`mysql-community-server-minimal`パッケージを使っています。そのため、`mysql:*` DockerイメージでMroongaを使うためには、`mysql-community-server`向けのMroongaパッケージだけでなく、`mysql-community-server-minimal`向けのMroongaパッケージも作る必要がありました。

これまではMySQL 8.0の`mysql-community-server-minimal`向けMroongaパッケージしか提供していませんでした。今回のリリースからはMySQL 8.4の`mysql-community-server-minimal`向けMroongaパッケージも提供します。これで`mysql:8.4` DockerイメージでもMroongaを使うことができます。

## 14.12リリース - 2024-12-25

### 修正

#### シャットダウン時にクラッシュするかもしれない問題を修正

この現象を再現する具体的な条件はわかっていません。しかし、安全のためにいくつか`nullptr`チェックを追加しました。これでこの問題が直るはずです。

## 14.10リリース - 2024-11-12

### 改良

#### `index_column_diff`サポートを改良

GH-789

MroongaもMroongaが使っているGroongaも`NULL`をサポートしていません。そもそも`NULL`を挿入するときの挙動は未定義です。これは今後も変わりません（Mroongaでは`NULL`を使うべきはありません！）が、このリリースではいくつか挙動を変えました。

Groongaは`index_column_diff`コマンドを提供しています。これを使うと壊れたインデックスを検出できます。

現在の`NULL`関連の挙動では、壊れていないインデックスを壊れたインデックスとして検出してしまうことがあります。そのため、このリリースではこの誤検出を避けるようにいくつか`NULL`関連の挙動を変更しました。

この変更でいくつか`NULL`関連の挙動も変わっていますが、この挙動に依存するべきではありません！（この挙動に依存して欲しくないので、ここではどのように変わったかの詳細は説明しません。）

次の型の挙動が変わりました。

- `bit`

- `datetime`

- `double`

- `enum`

- `float`

- `int`

- `set`

- `smallint`

- `time`

- `timestamp`

- `tinyint`

- `year`

将来的に他の型の挙動も変わる予定です。

#### `bit`をサポート

GH-798

現在の`bit`実装はぜんぜん動いていませんでした。おそらくだれも使っていなかったのでしょう。。。

このリリースでは`bit`実装を書き直しました。`bit`がちゃんと動くようになりました。

### 修正

#### `year(2)`の`70`-`99`の扱いを修正

GH-804

`70`-`99`は`1970`-`1999`として扱われないといけませんが、`2070`-`2099`として扱われていました。このリリースではこの問題を修正しました。

`year(2)`を使うべきはないことに注意してください。MariaDBでは非推奨になっていますし、MySQLではサポートが打ち切られています。

## 14.08リリース - 2024-09-25

### 改良

- ビルドにGNU Autotoolsの代わりにCMakeを使うようにしました

  `configure`は非推奨となります。ソースからのビルドには、`cmake`を使うことをおすすめします。

  `cmake`でのビルド方法については、[その他]を参照してください。

### 修正

- 複数の主キーがあり、かつ主キーに`VARBINARY`型または `BLOB`型のカラムがある場合に、`SELECT`が誤った結果を返す問題を修正しました。

  この問題が発生した場合、以下のクエリーは何も取得しません。

      CREATE TABLE logs (
        id INT,
        content VARBINARY(256),
        PRIMARY KEY (id, content)
      ) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4;

      INSERT INTO logs(id, content) VALUES (1, 'aaa');
      INSERT INTO logs(id, content) VALUES (2, 'bbb');

      SELECT * FROM logs WHERE content = 'aaa';

  この問題はMroonga 14.07でのみ発生します。

  この問題はインデックスを破壊しません。そのため、この修正後に`REINDEX`を実行する必要はありません。

### 感謝

- Jérome Perrinさん

## 14.07リリース - 2024-09-06

### 改良

- [AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL Community Server 8.4.2 をサポートしました。

- [AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL Community Server 8.0.39 をサポートしました。

- [AlmaLinux] Percona Server 8.0.37-29 をサポートしました。

- [Ubuntu] MySQL 8.0.39 をサポートしました。

- [AlmaLinux] MariaDB 10.5.26、10.6.19、10.11.9、11.4.3 をサポートしました。

- [Ubuntu] MariaDB 10.6.18 と 10.11.8 をサポートしました。

- 降順インデックスのサポートを無効にしました。 [GitHub #764][Josep Sanzさんの報告]

  MariaDB >= 10.8 で降順インデックスをサポートしない場合、Mroongaは誤った結果を返します。そのため、降順インデックスのサポートを無効にしましたが、後日サポートするかもしれません。

  MySQL >= 8.0で降順インデックスを使った場合は、MySQLがエラーを返します。

### 修正

- `FLUSH TABLES` と `INSERT`の同時実行でクラッシュする問題を修正しました。 [GitHub #743][Watsonさんの報告]

### 感謝

- Josep Sanzさん

- Watsonさん

## 14.04リリース - 2024-06-12

### 改良

- [AlmaLinux] MariaDB 10.5.25、10.6.18、10.11.8 をサポートしました。

- [Ubuntu] MariaDB 10.11.7 をサポートしました。

- [Ubuntu] MariaDB 10.6.18 をサポートしました。

- [Debian GNU/Linux] MariaDB 10.11.8 をサポートしました。

- [Ubuntu] MySQL 8.0.36 をサポートしました。

- [AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL Community Server 8.0.37 をサポートしました。

- [AlmaLinux][Debian GNU/Linux][Ubuntu] MySQL Community Server 8.4 をサポートしました。

- [AlmaLinux] Percona Server 8.0.36-28 をサポートしました。

- [Ubuntu] Ubuntu 24.04 (Noble Numbat) をサポートしました。

- MySQL Community Server 5.7のサポートをやめました。

  MySQL Community Server 5.7 はEOLになったためです。

- Percona Server 5.7のサポートをやめました。

  Percona Server for MySQL 5.7はEOLになったためです。

- MariaDB 10.4 のサポートをやめました。

  MariaDB 10.4 は、2024-06-18でEOLになるためです。

- MariaDB 10.7、10.8、10.9 のサポートをやめました。

  MariaDB 10.7、10.8、10.9 はEOLになったためです。

- MariaDB 10.10 のサポートをやめました。

  MariaDB 10.10 はサポート期間が短いためです。

- Amazon Linux 2 のサポートをやめました。

  Groongaで既にAmazon Linux 2 のサポートをやめているためです。

- CentOS 7 のサポートをやめました。

  CentOS 7 はEOLになったためです。

- [Debian GNU/Linux] Debian GNU/Linux bullseye のサポートをやめました。

  Debian GNU/Linux bullseye は、2024-07でEOLになるためです。

- Mroongaを初期化していない状態で、MroongaのUDFを使用したときにエラーを出力するようにしました。[MDEV-21166][Ian Gilfillanさんの報告]

  この修正が入る前は、Mroongaを初期化していない状態（`INSTALL PLUGIN mroonga`を実行していない状態）でMroongaのUDFを使用するとクラッシュしてしまいました。この修正によって、クラッシュではなく、エラーをログに出力するようになります。

### 修正

- [ラッパーモード] オンラインDDLに対応していないストレージエンジンをラップしている場合にメモリーリークする問題を修正しました。

  通常、`ALTER TABLE`のようなDDL操作は、排他制御を行うため、実行中は対象のテーブルへの操作がブロックされますが、ストレージエンジンによっては、実行中であっても、対象のテーブルを操作することもできます。（もちろん排他的に実行することもできます。）`ALTER TABLE`のようなDDL操作中であっても対象のテーブルへの操作を可能にする機能をオンラインDDLと呼びます。

  今回の問題は、このオンラインDDLに対応していないストレージエンジンをMroongaのラッパーモードでラップしている場合に発生します。ストレージモードやラッパーモード＋InnoDBの組み合わせでは発生しません。

- [ストレージモード] 圧縮された`VARCHAR`型のカラム、または、`TEXT`型のカラムが存在するテーブルに`INSERT`するとクラッシュする問題を修正しました。[MDEV-31966][Elena Stepanovaさんの報告]

  ストレージモードでのみ発生します。ラッパーモードでは発生しません。

### 感謝

- Ian Gilfillanさん

- Elena Stepanovaさん