MySQLのGIS機能2025

 このエントリは、RDBMS-GIS(地理情報・位置情報) Advent Calendar 2025 の1日目です。「RDBMS-GIS Advent Calendar」では今年も参加者を熱烈募集中です。RDBMSを中心としたなんらかのデータベース管理システムで地理情報データを扱ってみた体験やノウハウなどでお気楽に参加ください。今年は、アドベントカレンダーの期間中に書いたものだけでなく、2025年中に書いたブログなどでの参加もOKとしています。

 さて、2025年もMySQLのSpatial機能(GIS機能)は少しずつですが進化しています。現在のMySQLはLTSとInnovation Releaseという2本立てでリリースされていますが、基本的にLTSの方には新機能は加わらないので、このエントリーではInnovation Releaseのみ対象とします。(不具合の修正は、Innovation Releaseと同様の修正が MySQL 8.4 LTS にも加えられています)

2025年のMySQL Innovation Release (ver. 9.x)一覧

 MySQLのリリースは3ヶ月に1回。2025年もこのスケジュールに従って、4回のリリースが行われました。リリースされた Innovation Release のリリース番号は以下の通りです。

各バージョンで為されたSpatial(GIS)関連の修正

 2025年のMySQL Spatial機能の変更は、MBRに関するインデックスが壊れてしまう事象が直されたものが中心と言ってよさそう。それ以外では、9.4で加わったJSON関連機能でSpatial関連情報が正しく渡らないことが9.5で修正されたのがあるくらい。


MySQL 9.2.0
  • CREATE_SPATIAL_REFERENCE_SYSTEM が追加された
    • 今までは super 権限により実施可能だった以下のSQL命令が、この権限によりコントロールされます(superも継続だが非推奨に)
      • CREATE SPATIAL REFERENCE SYSTEM
      • CREATE OR REPLACE SPATIAL REFERENCE SYSTEM
      • DROP SPATIAL REFERENCE SYSTEM
  • MBRに影響ある更新と削除が絡んだ処理により、空間インデックスが壊れる事象があったのを修正。壊れたインデックスは新バージョンへのアップデートで自動で直らないので、いったん空間インデックスを削除して作り直すことを推奨。
  • auto_incrementと空間インデックスの両方を含むテーブルで INPLACEアルゴリズムでのALTER TABLE を実施すると、壊れることがあったのを修正。新しいレコードを用意している間に「空間インデックス内の」auto-increment情報が上書きされるために起きていた現象とのことですが、そもそも空間 インデックスの中にauto-incrementの情報なんて持っていたんだというところから(私は)理解が必要になりそうです。
MySQL 9.3.0
  • CHECK TABLE がクラスタドインデックスのジオメトリについて MBRの検証をしていなかった問題を修正
    • CHECK TABLE EXTENDED でクラスタドインデックスのレコードのMBRが正しいMBRと一致することを保証してくれるようになった
    • CHECK TABLE が空間インデックスの破損を誤って報告することがあったのを修正
MySQL 9.4.0
  • 空間データ型カラムのインデックス作成に関連する問題を修正、とだけアナウンス。詳細不明
MySQL 9.5.0
  • 暗黙的なGeoJSON表現に CRS URN を含めるようになった。常に含めるようになったということで、ST_AsGeoJSONの出力などでも(今まででも出力されていたと思いますが)、SRID=0 の場合でも確実に出力されるようになったとのこと。

この修正、よく分からないのでもう少し調べてみると「暗黙的なGeoJSON表現」というのが、MySQL 9.4.0で導入された「JSON dulality view」というもので発生し、その際にSRSが確実に渡されるように今回修正されたということまでは分かった。
MySQL :: MySQL 9.4 Reference Manual :: 15.1.17 CREATE JSON DUALITY VIEW Statement



さいごに

 LTSとInnovationにリリース体系が分かれたことを周知することに努めてきたこの2年近い期間ですが、そうこうしているうちに、あっという間に来年の4月には 次のLTSである MySQL 9.7 LTS シリーズがリリースされ、MySQL 10.x Innovation がはじまる見込みです。初めて2つのLTSが平行する記念すべき期間が始まります。そして 次の Innovation Releaseではどんな地理情報機能が加わるのか、半分期待、半分諦めで気長に楽しみにしたいと思います。
 Spatial機能に関して要望はいろいろあるけど、差し当たってわかりやすいところでは、MySQLへの入出力可能なデータフォーマットの拡充を期待したいところです。(ST_AsXXXX()系など)