バグなのか環境依存なのか調べきれていないが、危ないので取り急ぎメモ。
手元のMySQLを5.5.27にアップデートしたところ、距離を測るMBRContains()をWHERE条件に使っている箇所で奇妙な動きをするようになった。

具体的には、

WHERE MBRContains(GeomFromText('LineString(138.000000 34.000000,140.000000 36.000000)'), latlon) = 1 AND date > '2014-03-04 08:00:12'

としているような箇所で、必ずWHERE条件が通るようになる。
latlonが指定した座標範囲に含まれていなくても通るし、dateが指定した日付より前であっても通る。もうメチャクチャだ。

下記のように、MBRContains() = 1 の = 1 を取り払うことで意図した動きをするようになった。

WHERE MBRContains(GeomFromText('LineString(138.000000 34.000000,140.000000 36.000000)'), latlon) AND date > '2014-03-04 08:00:12'

そもそもMBRContains()の使い方がマズかったのか?
でもMBRContains()自体は0を返してるんだけどなぁ。わからん。。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Name *
Email *
Website

*