MySQL пространственная геометрия проверки WKT

В MySQL < 5.7 пространственные функции возвращали NULL при задании неверного WKT, например:

mysql> select astext(geomfromtext('polygon()'));

+-----------------------------------+
| astext(geomfromtext('polygon()')) |
+-----------------------------------+
| NULL                              |
+-----------------------------------+
1 row in set (0.00 sec)

Но с более новым MySQL тот же самый ввод дает:

ERROR 3037 (22023): Invalid GIS data provided to function st_geometryfromtext.

Есть ли способ проверить, действителен ли WKT перед отправкой его в функции геометрии? В качестве альтернативы, есть ли параметр, заставляющий геометрические функции выдавать NULL, а не ошибку для неверного ввода?

1 ответ

MySQL предоставляет две функции для проверки правильности геометрии, но обе принимают уже сформированную геометрию в качестве входных данных.

ST_IsValid(ST_GeomFromText(?)); возвращает логическое значение

ST_Validate(ST_GeomFromText(?)); возвращает GEOM или ноль, если недействителен.

я ничего не знаю о том, что анализирует WKT в MySQL, и нет настройки, которая переключит его обратно на поведение <5.7.

Другие вопросы по тегам