Compatibilité Mysql 8
A partir de mysql 8.0, les fonctions spatiales sont préfixées par ST_
et les anciennes sont retirées.
https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-0.html#mysqld-8-0-0-spatial-support
Des erreurs sont générées par AsText
ici :
https://git.spip.net/spip-contrib-extensions/gis_geometries/src/branch/master/gisgeom_pipelines.php#L64
https://git.spip.net/spip-contrib-extensions/gis_geometries/src/branch/master/gisgeom_pipelines.php#L242
alors qu'ici c'est bien ST_AsText
qui est utilisée :
https://git.spip.net/spip-contrib-extensions/gis_geometries/src/branch/master/gisgeom_fonctions.php#L154
Il semblerait que ST_AsText
soit introduite à la version 5.7 :
https://dev.mysql.com/doc/refman/5.6/en/fetching-spatial-data.html
https://dev.mysql.com/doc/refman/5.7/en/fetching-spatial-data.html
Certes, les prérequis de SPIP jusqu'à 4.2 indiquent MySQL : 5.0 - 5.7
, mais sur Ubuntu 20 server (et autres distribs déjà plus super récentes) c'est déjà nativement du Mysql 8.
Est ce qu'il faudrait faire un test sur la version de Mysql pour utiliser l'une ou l'autre fonction ?
Dans ce cas, il ne faut pas se baser sur la version de mysqlnd renvoyée par phpinfo()
ou à mysqli_get_client_info()
, équivalent, qui n'est pas corrélée à la version de Mysql (ça me renvoit 7.4.3 sur un Mysql 8.0), mais plutôt utiliser SHOW VARIABLES LIKE 'version'
par exemple.
En attendant, je fais déjà une branche pour compat mysql8 en modifiant les deux appels dans gisgeom_pipelines.php