diff options
Diffstat (limited to 'django')
| -rw-r--r-- | django/contrib/gis/db/backends/mysql/operations.py | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/django/contrib/gis/db/backends/mysql/operations.py b/django/contrib/gis/db/backends/mysql/operations.py index 8af78d8703..f838a79da6 100644 --- a/django/contrib/gis/db/backends/mysql/operations.py +++ b/django/contrib/gis/db/backends/mysql/operations.py @@ -45,6 +45,7 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations): "bboverlaps": SpatialOperator(func="MBROverlaps"), # ... "contained": SpatialOperator(func="MBRWithin"), # ... "contains": SpatialOperator(func="ST_Contains"), + "coveredby": SpatialOperator(func="MBRCoveredBy"), "crosses": SpatialOperator(func="ST_Crosses"), "disjoint": SpatialOperator(func="ST_Disjoint"), "equals": SpatialOperator(func="ST_Equals"), @@ -57,9 +58,10 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations): } if self.connection.mysql_is_mariadb: operators["relate"] = SpatialOperator(func="ST_Relate") + if self.connection.mysql_version < (12, 0, 1): + del operators["coveredby"] else: operators["covers"] = SpatialOperator(func="MBRCovers") - operators["coveredby"] = SpatialOperator(func="MBRCoveredBy") return operators @cached_property @@ -71,7 +73,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 < (12, 0, 1): + disallowed_aggregates.insert(0, models.Collect) + elif self.connection.mysql_version < (8, 0, 24): disallowed_aggregates.insert(0, models.Collect) return tuple(disallowed_aggregates) @@ -106,7 +111,8 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations): } if self.connection.mysql_is_mariadb: unsupported.remove("PointOnSurface") - unsupported.update({"GeoHash", "IsValid"}) + if self.connection.mysql_version < (12, 0, 1): + unsupported.update({"GeoHash", "IsValid"}) return unsupported def geo_db_type(self, f): |
