Browse Source

Reverted "Fixed #35803 -- Added support for Collect, GeoHash, and IsValid on MariaDB 11.7+."

This reverts commit c77573716a58af32ffcfc4fe87ff9e5c97909bd2.

MariaDB reverted GIS functions.
Mariusz Felisiak 1 month ago
parent
commit
eb70aafdba

+ 2 - 6
django/contrib/gis/db/backends/mysql/operations.py

@@ -73,10 +73,7 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
             models.Union,
         ]
         is_mariadb = self.connection.mysql_is_mariadb
-        if is_mariadb:
-            if self.connection.mysql_version < (11, 7):
-                disallowed_aggregates.insert(0, models.Collect)
-        elif self.connection.mysql_version < (8, 0, 24):
+        if is_mariadb or self.connection.mysql_version < (8, 0, 24):
             disallowed_aggregates.insert(0, models.Collect)
         return tuple(disallowed_aggregates)
 
@@ -110,8 +107,7 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
         }
         if self.connection.mysql_is_mariadb:
             unsupported.remove("PointOnSurface")
-            if self.connection.mysql_version < (11, 7):
-                unsupported.update({"GeoHash", "IsValid"})
+            unsupported.update({"GeoHash", "IsValid"})
         return unsupported
 
     def geo_db_type(self, f):

+ 13 - 12
docs/ref/contrib/gis/db-api.txt

@@ -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 (≥ 11.7) X            X
+:lookup:`isvalid`                  X          X                   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,11 +406,11 @@ 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 (≥ 11.7)   X           X (LWGEOM/RTTOPO)
+:class:`GeoHash`                      X                                    X           X (LWGEOM/RTTOPO)
 :class:`GeometryDistance`             X
 :class:`Intersection`                 X        X              X            X           X
 :class:`IsEmpty`                      X
-:class:`IsValid`                      X        X              X (≥ 11.7)   X           X
+:class:`IsValid`                      X        X                           X           X
 :class:`Length`                       X        X              X            X           X
 :class:`LineLocatePoint`              X                                                X
 :class:`MakeValid`                    X                                                X (LWGEOM/RTTOPO)
@@ -432,19 +432,20 @@ Aggregate Functions
 -------------------
 
 The following table provides a summary of what GIS-specific aggregate functions
-are available on each spatial backend.
+are available on each spatial backend. Please note that MariaDB does not
+support any of these aggregates, and is thus excluded from the table.
 
 .. currentmodule:: django.contrib.gis.db.models
 
-=======================  =======  ======  ==========  ============  ==========
-Aggregate                PostGIS  Oracle  MariaDB     MySQL         SpatiaLite
-=======================  =======  ======  ==========  ============  ==========
-:class:`Collect`         X                X (≥ 11.7)  X (≥ 8.0.24)  X
-:class:`Extent`          X        X                                 X
+=======================  =======  ======  ============  ==========
+Aggregate                PostGIS  Oracle  MySQL         SpatiaLite
+=======================  =======  ======  ============  ==========
+:class:`Collect`         X                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).

+ 2 - 10
docs/ref/contrib/gis/functions.txt

@@ -381,7 +381,7 @@ Creates geometry from `Well-known text (WKT)`_ representation. The optional
 
 .. class:: GeoHash(expression, precision=None, **extra)
 
-*Availability*: MariaDB, `MySQL
+*Availability*: `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)
@@ -394,10 +394,6 @@ result.
 
 __ https://en.wikipedia.org/wiki/Geohash
 
-.. versionchanged:: 5.2
-
-    MariaDB 11.7+ support was added.
-
 ``GeometryDistance``
 ====================
 
@@ -436,17 +432,13 @@ geometry. Returns ``True`` if its value is empty and ``False`` otherwise.
 
 .. class:: IsValid(expr)
 
-*Availability*: MariaDB, `MySQL
+*Availability*: `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``
 ==========
 

+ 10 - 18
docs/ref/contrib/gis/geoquerysets.txt

@@ -375,8 +375,8 @@ Example::
 ``isvalid``
 -----------
 
-*Availability*: MariaDB, MySQL,
-`PostGIS <https://postgis.net/docs/ST_IsValid.html>`__, Oracle, SpatiaLite
+*Availability*: MySQL, `PostGIS <https://postgis.net/docs/ST_IsValid.html>`__,
+Oracle, SpatiaLite
 
 Tests if the geometry is valid.
 
@@ -384,16 +384,12 @@ Example::
 
     Zipcode.objects.filter(poly__isvalid=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.
+==========================  ================================================================
+Backend                     SQL Equivalent
+==========================  ================================================================
+MySQL, PostGIS, SpatiaLite  ``ST_IsValid(poly)``
+Oracle                      ``SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(poly, 0.05) = 'TRUE'``
+==========================  ================================================================
 
 .. fieldlookup:: overlaps
 
@@ -885,8 +881,8 @@ Example:
 
 .. class:: Collect(geo_field, filter=None)
 
-*Availability*: `PostGIS <https://postgis.net/docs/ST_Collect.html>`__,
-MariaDB, MySQL, SpatiaLite
+*Availability*: `PostGIS <https://postgis.net/docs/ST_Collect.html>`__, 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`
@@ -894,10 +890,6 @@ aggregate, except it can be several orders of magnitude faster than performing
 a union because it rolls up geometries into a collection or multi object, not
 caring about dissolving boundaries.
 
-.. versionchanged:: 5.2
-
-    MariaDB 11.7+ support was added.
-
 ``Extent``
 ~~~~~~~~~~
 

+ 1 - 5
docs/releases/5.2.txt

@@ -199,11 +199,7 @@ Minor features
 
 * :lookup:`coveredby` and :lookup:`covers` lookup are now supported on MySQL.
 
-* :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+.
+* :lookup:`coveredby` lookup is now supported on MariaDB 11.7+.
 
 :mod:`django.contrib.syndication`
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~