mirror of https://github.com/django/django.git
Fixed #35803 -- Added support for Collect, GeoHash, and IsValid on MariaDB 11.7+.
This commit is contained in:
parent
0b7edb9fcd
commit
c77573716a
|
@ -71,7 +71,10 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
|
|||
models.Union,
|
||||
]
|
||||
is_mariadb = self.connection.mysql_is_mariadb
|
||||
if is_mariadb or self.connection.mysql_version < (8, 0, 24):
|
||||
if is_mariadb:
|
||||
if self.connection.mysql_version < (11, 7):
|
||||
disallowed_aggregates.insert(0, models.Collect)
|
||||
elif self.connection.mysql_version < (8, 0, 24):
|
||||
disallowed_aggregates.insert(0, models.Collect)
|
||||
return tuple(disallowed_aggregates)
|
||||
|
||||
|
@ -105,7 +108,8 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
|
|||
}
|
||||
if self.connection.mysql_is_mariadb:
|
||||
unsupported.remove("PointOnSurface")
|
||||
unsupported.update({"GeoHash", "IsValid"})
|
||||
if self.connection.mysql_version < (11, 7):
|
||||
unsupported.update({"GeoHash", "IsValid"})
|
||||
return unsupported
|
||||
|
||||
def geo_db_type(self, f):
|
||||
|
|
|
@ -360,7 +360,7 @@ Lookup Type PostGIS Oracle MariaDB MySQL [#]_ S
|
|||
:lookup:`exact <same_as>` X X X X X B
|
||||
:lookup:`intersects` X X X X X B
|
||||
:lookup:`isempty` X
|
||||
:lookup:`isvalid` X X X X
|
||||
:lookup:`isvalid` X X X (≥ 11.7) X X
|
||||
:lookup:`overlaps` X X X X X B
|
||||
:lookup:`relate` X X X X C
|
||||
:lookup:`same_as` X X X X X B
|
||||
|
@ -406,10 +406,10 @@ Function PostGIS Oracle MariaDB MySQL
|
|||
:class:`ForcePolygonCW` X X
|
||||
:class:`FromWKB` X X X X X
|
||||
:class:`FromWKT` X X X X X
|
||||
:class:`GeoHash` X X X (LWGEOM/RTTOPO)
|
||||
:class:`GeoHash` X X (≥ 11.7) X X (LWGEOM/RTTOPO)
|
||||
:class:`Intersection` X X X X X
|
||||
:class:`IsEmpty` X
|
||||
:class:`IsValid` X X X X
|
||||
:class:`IsValid` X X X (≥ 11.7) X X
|
||||
:class:`Length` X X X X X
|
||||
:class:`LineLocatePoint` X X
|
||||
:class:`MakeValid` X X (LWGEOM/RTTOPO)
|
||||
|
@ -431,20 +431,19 @@ Aggregate Functions
|
|||
-------------------
|
||||
|
||||
The following table provides a summary of what GIS-specific aggregate functions
|
||||
are available on each spatial backend. Please note that MariaDB does not
|
||||
support any of these aggregates, and is thus excluded from the table.
|
||||
are available on each spatial backend.
|
||||
|
||||
.. currentmodule:: django.contrib.gis.db.models
|
||||
|
||||
======================= ======= ====== ============ ==========
|
||||
Aggregate PostGIS Oracle MySQL SpatiaLite
|
||||
======================= ======= ====== ============ ==========
|
||||
:class:`Collect` X X (≥ 8.0.24) X
|
||||
:class:`Extent` X X X
|
||||
======================= ======= ====== ========== ============ ==========
|
||||
Aggregate PostGIS Oracle MariaDB MySQL SpatiaLite
|
||||
======================= ======= ====== ========== ============ ==========
|
||||
:class:`Collect` X X (≥ 11.7) X (≥ 8.0.24) X
|
||||
:class:`Extent` X X X
|
||||
:class:`Extent3D` X
|
||||
:class:`MakeLine` X X
|
||||
:class:`Union` X X X
|
||||
======================= ======= ====== ============ ==========
|
||||
:class:`MakeLine` X X
|
||||
:class:`Union` X X X
|
||||
======================= ======= ====== ========== ============ ==========
|
||||
|
||||
.. rubric:: Footnotes
|
||||
.. [#fnwkt] *See* Open Geospatial Consortium, Inc., `OpenGIS Simple Feature Specification For SQL <https://portal.ogc.org/files/?artifact_id=829>`_, Document 99-049 (May 5, 1999), at Ch. 3.2.5, p. 3-11 (SQL Textual Representation of Geometry).
|
||||
|
|
|
@ -393,7 +393,7 @@ Creates geometry from `Well-known text (WKT)`_ representation. The optional
|
|||
|
||||
.. class:: GeoHash(expression, precision=None, **extra)
|
||||
|
||||
*Availability*: `MySQL
|
||||
*Availability*: MariaDB, `MySQL
|
||||
<https://dev.mysql.com/doc/refman/en/spatial-geohash-functions.html#function_st-geohash>`__,
|
||||
`PostGIS <https://postgis.net/docs/ST_GeoHash.html>`__, SpatiaLite
|
||||
(LWGEOM/RTTOPO)
|
||||
|
@ -406,6 +406,10 @@ result.
|
|||
|
||||
__ https://en.wikipedia.org/wiki/Geohash
|
||||
|
||||
.. versionchanged:: 5.2
|
||||
|
||||
MariaDB 11.7+ support was added.
|
||||
|
||||
``GeometryDistance``
|
||||
====================
|
||||
|
||||
|
@ -444,13 +448,17 @@ geometry. Returns ``True`` if its value is empty and ``False`` otherwise.
|
|||
|
||||
.. class:: IsValid(expr)
|
||||
|
||||
*Availability*: `MySQL
|
||||
*Availability*: MariaDB, `MySQL
|
||||
<https://dev.mysql.com/doc/refman/en/spatial-convenience-functions.html#function_st-isvalid>`__,
|
||||
`PostGIS <https://postgis.net/docs/ST_IsValid.html>`__, Oracle, SpatiaLite
|
||||
|
||||
Accepts a geographic field or expression and tests if the value is well formed.
|
||||
Returns ``True`` if its value is a valid geometry and ``False`` otherwise.
|
||||
|
||||
.. versionchanged:: 5.2
|
||||
|
||||
MariaDB 11.7+ support was added.
|
||||
|
||||
``Length``
|
||||
==========
|
||||
|
||||
|
|
|
@ -370,8 +370,8 @@ Example::
|
|||
``isvalid``
|
||||
-----------
|
||||
|
||||
*Availability*: MySQL, `PostGIS <https://postgis.net/docs/ST_IsValid.html>`__,
|
||||
Oracle, SpatiaLite
|
||||
*Availability*: MariaDB, MySQL,
|
||||
`PostGIS <https://postgis.net/docs/ST_IsValid.html>`__, Oracle, SpatiaLite
|
||||
|
||||
Tests if the geometry is valid.
|
||||
|
||||
|
@ -379,12 +379,16 @@ Example::
|
|||
|
||||
Zipcode.objects.filter(poly__isvalid=True)
|
||||
|
||||
========================== ================================================================
|
||||
Backend SQL Equivalent
|
||||
========================== ================================================================
|
||||
MySQL, PostGIS, SpatiaLite ``ST_IsValid(poly)``
|
||||
Oracle ``SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(poly, 0.05) = 'TRUE'``
|
||||
========================== ================================================================
|
||||
=================================== ================================================================
|
||||
Backend SQL Equivalent
|
||||
=================================== ================================================================
|
||||
MariaDB, MySQL, PostGIS, SpatiaLite ``ST_IsValid(poly)``
|
||||
Oracle ``SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(poly, 0.05) = 'TRUE'``
|
||||
=================================== ================================================================
|
||||
|
||||
.. versionchanged:: 5.2
|
||||
|
||||
MariaDB 11.7+ support was added.
|
||||
|
||||
.. fieldlookup:: overlaps
|
||||
|
||||
|
@ -876,8 +880,8 @@ Example:
|
|||
|
||||
.. class:: Collect(geo_field, filter=None)
|
||||
|
||||
*Availability*: `PostGIS <https://postgis.net/docs/ST_Collect.html>`__, MySQL,
|
||||
SpatiaLite
|
||||
*Availability*: `PostGIS <https://postgis.net/docs/ST_Collect.html>`__,
|
||||
MariaDB, MySQL, SpatiaLite
|
||||
|
||||
Returns a ``GEOMETRYCOLLECTION`` or a ``MULTI`` geometry object from the geometry
|
||||
column. This is analogous to a simplified version of the :class:`Union`
|
||||
|
@ -889,6 +893,10 @@ caring about dissolving boundaries.
|
|||
|
||||
MySQL 8.0.24+ support was added.
|
||||
|
||||
.. versionchanged:: 5.2
|
||||
|
||||
MariaDB 11.7+ support was added.
|
||||
|
||||
``Extent``
|
||||
~~~~~~~~~~
|
||||
|
||||
|
|
|
@ -102,7 +102,11 @@ Minor features
|
|||
|
||||
* :lookup:`coveredby` lookup is now supported on MySQL.
|
||||
|
||||
* :lookup:`coveredby` lookup is now supported on MariaDB 11.7+.
|
||||
* :lookup:`coveredby` and :lookup:`isvalid` lookups,
|
||||
:class:`~django.contrib.gis.db.models.Collect` aggregation, and
|
||||
:class:`~django.contrib.gis.db.models.functions.GeoHash` and
|
||||
:class:`~django.contrib.gis.db.models.functions.IsValid` database functions
|
||||
are now supported on MariaDB 11.7+.
|
||||
|
||||
:mod:`django.contrib.messages`
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
|
Loading…
Reference in New Issue