Skip to content

Commit a4c365c

Browse files
committed
dbmanager: include materialized views (implements #9127)
1 parent f1f2e16 commit a4c365c

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def _checkRaster(self):
7979
return self.has_raster
8080

8181
def _checkGeometryColumnsTable(self):
82-
c = self._execute(None, u"SELECT relkind = 'v' FROM pg_class WHERE relname = 'geometry_columns' AND relkind IN ('v', 'r')")
82+
c = self._execute(None, u"SELECT relkind = 'v' OR relkind = 'm' FROM pg_class WHERE relname = 'geometry_columns' AND relkind IN ('v', 'r', 'm')")
8383
res = self._fetchone(c)
8484
self._close_cursor(c)
8585
self.has_geometry_columns = (res != None and len(res) != 0)
@@ -94,7 +94,7 @@ def _checkGeometryColumnsTable(self):
9494
return self.has_geometry_columns
9595

9696
def _checkRasterColumnsTable(self):
97-
c = self._execute(None, u"SELECT relkind = 'v' FROM pg_class WHERE relname = 'raster_columns' AND relkind IN ('v', 'r')")
97+
c = self._execute(None, u"SELECT relkind = 'v' OR relkind = 'm' FROM pg_class WHERE relname = 'raster_columns' AND relkind IN ('v', 'r', 'm')")
9898
res = self._fetchone(c)
9999
self._close_cursor(c)
100100
self.has_raster_columns = (res != None and len(res) != 0)
@@ -238,12 +238,12 @@ def getTables(self, schema=None):
238238

239239
# get all tables and views
240240
sql = u"""SELECT
241-
cla.relname, nsp.nspname, cla.relkind = 'v',
241+
cla.relname, nsp.nspname, cla.relkind = 'v' OR cla.relkind = 'm',
242242
pg_get_userbyid(relowner), reltuples, relpages,
243243
pg_catalog.obj_description(cla.oid)
244244
FROM pg_class AS cla
245245
JOIN pg_namespace AS nsp ON nsp.oid = cla.relnamespace
246-
WHERE cla.relkind IN ('v', 'r') """ + schema_where + """
246+
WHERE cla.relkind IN ('v', 'r', 'm') """ + schema_where + """
247247
ORDER BY nsp.nspname, cla.relname"""
248248

249249
c = self._execute(None, sql)
@@ -296,7 +296,7 @@ def getVectorTables(self, schema=None):
296296

297297
# discovery of all tables and whether they contain a geometry column
298298
sql = u"""SELECT
299-
cla.relname, nsp.nspname, cla.relkind = 'v',
299+
cla.relname, nsp.nspname, cla.relkind = 'v' OR cla.relkind = 'm',
300300
pg_get_userbyid(relowner), cla.reltuples, cla.relpages,
301301
pg_catalog.obj_description(cla.oid),
302302
""" + geometry_fields_select + """
@@ -312,7 +312,7 @@ def getVectorTables(self, schema=None):
312312
313313
""" + geometry_column_from + """
314314
315-
WHERE cla.relkind IN ('v', 'r') """ + schema_where + """
315+
WHERE cla.relkind IN ('v', 'r', 'm') """ + schema_where + """
316316
ORDER BY nsp.nspname, cla.relname, att.attname"""
317317

318318
items = []
@@ -369,7 +369,7 @@ def getRasterTables(self, schema=None):
369369

370370
# discovery of all tables and whether they contain a raster column
371371
sql = u"""SELECT
372-
cla.relname, nsp.nspname, cla.relkind = 'v',
372+
cla.relname, nsp.nspname, cla.relkind = 'v' OR cla.relkind = 'm',
373373
pg_get_userbyid(relowner), cla.reltuples, cla.relpages,
374374
pg_catalog.obj_description(cla.oid),
375375
""" + raster_fields_select + """
@@ -385,7 +385,7 @@ def getRasterTables(self, schema=None):
385385
386386
""" + raster_column_from + """
387387
388-
WHERE cla.relkind IN ('v', 'r') """ + schema_where + """
388+
WHERE cla.relkind IN ('v', 'r', 'm') """ + schema_where + """
389389
ORDER BY nsp.nspname, cla.relname, att.attname"""
390390

391391
items = []
@@ -559,7 +559,7 @@ def getViewDefinition(self, view):
559559

560560
sql = u"""SELECT pg_get_viewdef(c.oid) FROM pg_class c
561561
JOIN pg_namespace nsp ON c.relnamespace = nsp.oid
562-
WHERE relname=%s %s AND relkind='v' """ % (self.quoteString(tablename), schema_where)
562+
WHERE relname=%s %s AND (relkind='v' OR relkind='m') """ % (self.quoteString(tablename), schema_where)
563563

564564
c = self._execute(None, sql)
565565
res = self._fetchone(c)
@@ -937,7 +937,7 @@ def getSqlDictionary(self):
937937
# get schemas, tables and field names
938938
items = []
939939
sql = u"""SELECT nspname FROM pg_namespace WHERE nspname !~ '^pg_' AND nspname != 'information_schema'
940-
UNION SELECT relname FROM pg_class WHERE relkind IN ('v', 'r')
940+
UNION SELECT relname FROM pg_class WHERE relkind IN ('v', 'r', 'm')
941941
UNION SELECT attname FROM pg_attribute WHERE attnum > 0"""
942942
c = self._execute(None, sql)
943943
for row in self._fetchall(c):

0 commit comments

Comments
 (0)