Skip to content

Commit 558fe92

Browse files
committed
dbmanager: adapt to sl4 metadata tables (fixes #8290)
1 parent d64ab21 commit 558fe92

File tree

1 file changed

+26
-3
lines changed

1 file changed

+26
-3
lines changed

python/plugins/db_manager/db_plugins/spatialite/connector.py

+26-3
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,12 @@ def _checkGeometryColumnsTable(self):
6767
try:
6868
c = self._get_cursor()
6969
self._execute(c, u"SELECT CheckSpatialMetaData()")
70-
self.has_geometry_columns = c.fetchone()[0] == 1
70+
v = c.fetchone()[0]
71+
self.has_geometry_columns = v == 1 or v == 3
72+
self.has_spatialite4 = v == 3
7173
except Exception, e:
7274
self.has_geometry_columns = False
75+
self.has_spatialite4 = False
7376

7477
self.has_geometry_columns_access = self.has_geometry_columns
7578
return self.has_geometry_columns
@@ -206,11 +209,31 @@ def getVectorTables(self, schema=None):
206209

207210
c = self._get_cursor()
208211

212+
if self.has_spatialite4:
213+
cols = """CASE geometry_type % 10
214+
WHEN 1 THEN 'POINT'
215+
WHEN 2 THEN 'LINESTRING'
216+
WHEN 3 THEN 'POLYGON'
217+
WHEN 4 THEN 'MULTIPOINT'
218+
WHEN 5 THEN 'MULTILINESTRING'
219+
WHEN 6 THEN 'MULTIPOLYGON'
220+
WHEN 7 THEN 'GEOMETRYCOLLECTION'
221+
END AS gtype,
222+
CASE geometry_type / 1000
223+
WHEN 0 THEN 'XY'
224+
WHEN 1 THEN 'XYZ'
225+
WHEN 2 THEN 'XYM'
226+
WHEN 3 THEN 'XYZM'
227+
ELSE NULL
228+
END AS coord_dimension"""
229+
else:
230+
cols = "g.type,g.coord_dimension"
231+
209232
# get geometry info from geometry_columns if exists
210-
sql = u"""SELECT m.name, m.type = 'view', g.f_table_name, g.f_geometry_column, g.type, g.coord_dimension, g.srid
233+
sql = u"""SELECT m.name, m.type = 'view', g.f_table_name, g.f_geometry_column, %s, g.srid
211234
FROM sqlite_master AS m JOIN geometry_columns AS g ON upper(m.name) = upper(g.f_table_name)
212235
WHERE m.type in ('table', 'view')
213-
ORDER BY m.name, g.f_geometry_column"""
236+
ORDER BY m.name, g.f_geometry_column""" % cols
214237

215238
self._execute(c, sql)
216239

0 commit comments

Comments
 (0)