41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

8.0.29では空間インデックスが壊れます

はじめに

このエントリは、RDBMS-GIS(MySQL,PostgreSQLなど) Advent Calendar 2022 の4日目です。

MySQLGIS関連のお話です。

簡単なネタですが書かせてもらいました。

MySQL Server 8.0.29は色々と問題のあるバージョンで、今はダウンロードすることは出来ず、もし現在使用している人は早急に8.0.30にアップグレードすることを強くお勧めします。

その問題はなんとGIS界にも及んでしまいました。

何が起きた?

8.0.29では空間インデックス(Spatial Indexes)を使うはずのクエリが、フルテーブルスキャンになってしまいます。

具体例はバグレポート(107320)を見てください。

対応方法

8.0.28以下の場合

このバグには当たらないので大丈夫です

8.0.29の場合

8.0.30以上にアップグレードしましょう。

but...

そんなすぐにはアップグレードできないよーって人はFORCE INDEXを指定して対象のインデックスを強制的に使わせましょう。

8.0.30以上の場合

8.0.30で修正されたので大丈夫です

Upgrading to MySQL 8.0.29 led to issues with existing spatial indexes (see Creating Spatial Indexes). The root cause of the problem was a change in how geographic area computations were performed by the included Boost library, which was upgraded to version 1.77.0 in MySQL 8.0.29. We fix this by ensuring that we accommodate the new method whenever such computations are performed. (Bug #107320, Bug #34184111)

最後に

いつも仕事がらアップグレードをお願いしてるんですが、8.0.29のせいでうかつに最新にしろ!って言いにくくなりました。

でも、いつまでも古いバージョンを使っているとさすがにバグが直ってないままですので、皆さんは少し様子を見つつもなるべく新しいのを使うようにしてくださいね。

明日は @yyamasaki1 さんです。