Fixed #26134 -- Used new OpenGIS names for recent MySQL

Thanks František Malina for the report.
This commit is contained in:
Claude Paroz 2016-01-29 23:25:15 +01:00
parent 9a5c94588e
commit c47364ef0c
1 changed files with 28 additions and 11 deletions

View File

@ -11,12 +11,27 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
mysql = True mysql = True
name = 'mysql' name = 'mysql'
select = 'AsText(%s)'
from_wkb = 'GeomFromWKB'
from_text = 'GeomFromText'
Adapter = WKTAdapter Adapter = WKTAdapter
@cached_property
def select(self):
if self.connection.mysql_version < (5, 6, 0):
return 'AsText(%s)'
return 'ST_AsText(%s)'
@cached_property
def from_wkb(self):
if self.connection.mysql_version < (5, 6, 0):
return 'GeomFromWKB'
return 'ST_GeomFromWKB'
@cached_property
def from_text(self):
if self.connection.mysql_version < (5, 6, 0):
return 'GeomFromText'
return 'ST_GeomFromText'
gis_operators = { gis_operators = {
'bbcontains': SpatialOperator(func='MBRContains'), # For consistency w/PostGIS API 'bbcontains': SpatialOperator(func='MBRContains'), # For consistency w/PostGIS API
'bboverlaps': SpatialOperator(func='MBROverlaps'), # .. .. 'bboverlaps': SpatialOperator(func='MBROverlaps'), # .. ..
@ -32,11 +47,13 @@ class MySQLOperations(BaseSpatialOperations, DatabaseOperations):
'within': SpatialOperator(func='MBRWithin'), 'within': SpatialOperator(func='MBRWithin'),
} }
function_names = { @cached_property
def function_names(self):
return {
'Difference': 'ST_Difference', 'Difference': 'ST_Difference',
'Distance': 'ST_Distance', 'Distance': 'ST_Distance',
'Intersection': 'ST_Intersection', 'Intersection': 'ST_Intersection',
'Length': 'GLength', 'Length': 'GLength' if self.connection.mysql_version < (5, 6, 0) else 'ST_Length',
'SymDifference': 'ST_SymDifference', 'SymDifference': 'ST_SymDifference',
'Union': 'ST_Union', 'Union': 'ST_Union',
} }