web/lib/django/contrib/gis/db/backend/mysql/query.py
changeset 29 cc9b7e14412b
parent 28 b758351d191f
child 30 239f9bcae806
--- a/web/lib/django/contrib/gis/db/backend/mysql/query.py	Wed May 19 17:43:59 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,59 +0,0 @@
-"""
- This module contains the spatial lookup types, and the `get_geo_where_clause`
- routine for MySQL.
-
- Please note that MySQL only supports bounding box queries, also
- known as MBRs (Minimum Bounding Rectangles).  Moreover, spatial
- indices may only be used on MyISAM tables -- if you need 
- transactions, take a look at PostGIS.
-"""
-from django.db import connection
-qn = connection.ops.quote_name
-
-# To ease implementation, WKT is passed to/from MySQL.
-GEOM_FROM_TEXT = 'GeomFromText'
-GEOM_FROM_WKB = 'GeomFromWKB'
-GEOM_SELECT = 'AsText(%s)'
-
-# WARNING: MySQL is NOT compliant w/the OpenGIS specification and
-# _every_ one of these lookup types is on the _bounding box_ only.
-MYSQL_GIS_FUNCTIONS = {
-    'bbcontains' : 'MBRContains', # For consistency w/PostGIS API
-    'bboverlaps' : 'MBROverlaps', # .. ..
-    'contained' : 'MBRWithin',    # .. ..
-    'contains' : 'MBRContains',
-    'disjoint' : 'MBRDisjoint',
-    'equals' : 'MBREqual',
-    'exact' : 'MBREqual',
-    'intersects' : 'MBRIntersects',
-    'overlaps' : 'MBROverlaps',
-    'same_as' : 'MBREqual',
-    'touches' : 'MBRTouches',
-    'within' : 'MBRWithin',
-    }
-
-# This lookup type does not require a mapping.
-MISC_TERMS = ['isnull']
-
-# Assacceptable lookup types for Oracle spatial.
-MYSQL_GIS_TERMS  = MYSQL_GIS_FUNCTIONS.keys()
-MYSQL_GIS_TERMS += MISC_TERMS
-MYSQL_GIS_TERMS = dict((term, None) for term in MYSQL_GIS_TERMS) # Making dictionary 
-
-def get_geo_where_clause(table_alias, name, lookup_type, geo_annot):
-    "Returns the SQL WHERE clause for use in MySQL spatial SQL construction."
-    # Getting the quoted field as `geo_col`.
-    geo_col = '%s.%s' % (qn(table_alias), qn(name))
-
-    # See if a MySQL Geometry function matches the lookup type next
-    lookup_info = MYSQL_GIS_FUNCTIONS.get(lookup_type, False)
-    if lookup_info:
-        return "%s(%s, %%s)" % (lookup_info, geo_col)
-    
-    # Handling 'isnull' lookup type
-    # TODO: Is this needed because MySQL cannot handle NULL
-    # geometries in its spatial indices.
-    if lookup_type == 'isnull':
-        return "%s IS %sNULL" % (geo_col, (not geo_annot.value and 'NOT ' or ''))
-
-    raise TypeError("Got invalid lookup_type: %s" % repr(lookup_type))