Refs #35803 -- Added support for __coveredby GIS lookup on MySQL and MariaDB 11.7+.

This commit is contained in:
Mariusz Felisiak 2024-09-27 21:08:20 +02:00 committed by Sarah Boyce
parent 6dcab75d5d
commit 0b7edb9fcd
4 changed files with 49 additions and 36 deletions

View File

@ -45,6 +45,7 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
"bboverlaps": SpatialOperator(func="MBROverlaps"), # ... "bboverlaps": SpatialOperator(func="MBROverlaps"), # ...
"contained": SpatialOperator(func="MBRWithin"), # ... "contained": SpatialOperator(func="MBRWithin"), # ...
"contains": SpatialOperator(func="ST_Contains"), "contains": SpatialOperator(func="ST_Contains"),
"coveredby": SpatialOperator(func="MBRCoveredBy"),
"crosses": SpatialOperator(func="ST_Crosses"), "crosses": SpatialOperator(func="ST_Crosses"),
"disjoint": SpatialOperator(func="ST_Disjoint"), "disjoint": SpatialOperator(func="ST_Disjoint"),
"equals": SpatialOperator(func="ST_Equals"), "equals": SpatialOperator(func="ST_Equals"),
@ -57,6 +58,8 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
} }
if self.connection.mysql_is_mariadb: if self.connection.mysql_is_mariadb:
operators["relate"] = SpatialOperator(func="ST_Relate") operators["relate"] = SpatialOperator(func="ST_Relate")
if self.connection.mysql_version < (11, 7):
del operators["coveredby"]
return operators return operators
@cached_property @cached_property

View File

@ -339,15 +339,15 @@ divided into the three categories described in the :ref:`raster lookup details
<spatial-lookup-raster>`: native support ``N``, bilateral native support ``B``, <spatial-lookup-raster>`: native support ``N``, bilateral native support ``B``,
and geometry conversion support ``C``. and geometry conversion support ``C``.
================================= ========= ======== ========= ============ ========== ======== ================================= ========= ======== ========== ============ ========== ========
Lookup Type PostGIS Oracle MariaDB MySQL [#]_ SpatiaLite PGRaster Lookup Type PostGIS Oracle MariaDB MySQL [#]_ SpatiaLite PGRaster
================================= ========= ======== ========= ============ ========== ======== ================================= ========= ======== ========== ============ ========== ========
:lookup:`bbcontains` X X X X N :lookup:`bbcontains` X X X X N
:lookup:`bboverlaps` X X X X N :lookup:`bboverlaps` X X X X N
:lookup:`contained` X X X X N :lookup:`contained` X X X X N
:lookup:`contains <gis-contains>` X X X X X B :lookup:`contains <gis-contains>` X X X X X B
:lookup:`contains_properly` X B :lookup:`contains_properly` X B
:lookup:`coveredby` X X X B :lookup:`coveredby` X X X (≥ 11.7) X X B
:lookup:`covers` X X X B :lookup:`covers` X X X B
:lookup:`crosses` X X X X C :lookup:`crosses` X X X X C
:lookup:`disjoint` X X X X X B :lookup:`disjoint` X X X X X B
@ -374,7 +374,7 @@ Lookup Type PostGIS Oracle MariaDB MySQL [#]_ Sp
:lookup:`overlaps_below` X C :lookup:`overlaps_below` X C
:lookup:`strictly_above` X C :lookup:`strictly_above` X C
:lookup:`strictly_below` X C :lookup:`strictly_below` X C
================================= ========= ======== ========= ============ ========== ======== ================================= ========= ======== ========== ============ ========== ========
.. _database-functions-compatibility: .. _database-functions-compatibility:

View File

@ -183,7 +183,7 @@ PostGIS ``ST_ContainsProperly(poly, geom)``
------------- -------------
*Availability*: `PostGIS <https://postgis.net/docs/ST_CoveredBy.html>`__, *Availability*: `PostGIS <https://postgis.net/docs/ST_CoveredBy.html>`__,
Oracle, PGRaster (Bilateral), SpatiaLite Oracle, MariaDB 11.7+, MySQL, PGRaster (Bilateral), SpatiaLite
Tests if no point in the geometry field is outside the lookup geometry. Tests if no point in the geometry field is outside the lookup geometry.
[#fncovers]_ [#fncovers]_
@ -197,9 +197,15 @@ Backend SQL Equivalent
========== ============================= ========== =============================
PostGIS ``ST_CoveredBy(poly, geom)`` PostGIS ``ST_CoveredBy(poly, geom)``
Oracle ``SDO_COVEREDBY(poly, geom)`` Oracle ``SDO_COVEREDBY(poly, geom)``
MariaDB ``MBRCoveredBy(poly, geom)``
MySQL ``MBRCoveredBy(poly, geom)``
SpatiaLite ``CoveredBy(poly, geom)`` SpatiaLite ``CoveredBy(poly, geom)``
========== ============================= ========== =============================
.. versionchanged:: 5.2
MySQL and MariaDB 11.7+ support was added.
.. fieldlookup:: covers .. fieldlookup:: covers
``covers`` ``covers``

View File

@ -100,6 +100,10 @@ Minor features
:meth:`.OGRGeometry.get_linear_geometry` and :meth:`.OGRGeometry.get_linear_geometry` and
:meth:`.OGRGeometry.get_curve_geometry` methods. :meth:`.OGRGeometry.get_curve_geometry` methods.
* :lookup:`coveredby` lookup is now supported on MySQL.
* :lookup:`coveredby` lookup is now supported on MariaDB 11.7+.
:mod:`django.contrib.messages` :mod:`django.contrib.messages`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~