dbmanager/postgis: quote identifiers in urls (fixes qgis portion of #19583)

This commit is contained in:
Juergen E. Fischer 2018-08-10 00:42:41 +02:00
parent c7421c77a6
commit f4d08eb926

View File

@ -316,9 +316,9 @@ class PGRasterTable(PGTable, RasterTable):
def gdalUri(self, uri=None):
if not uri:
uri = self.database().uri()
service = (u'service=%s' % uri.service()) if uri.service() else ''
schema = (u'schema=%s' % self.schemaName()) if self.schemaName() else ''
dbname = (u'dbname=%s' % uri.database()) if uri.database() else ''
service = (u'service=\'%s\'' % uri.service()) if uri.service() else ''
schema = (u'schema=\'%s\'' % self.schemaName()) if self.schemaName() else ''
dbname = (u'dbname=\'%s\'' % uri.database()) if uri.database() else ''
host = (u'host=%s' % uri.host()) if uri.host() else ''
user = (u'user=%s' % uri.username()) if uri.username() else ''
passw = (u'password=%s' % uri.password()) if uri.password() else ''
@ -330,17 +330,17 @@ class PGRasterTable(PGTable, RasterTable):
# TODO: cache this ?
connector = self.database().connector
r = connector._execute(None, "SELECT current_database()")
dbname = (u'dbname=%s' % connector._fetchone(r)[0])
dbname = (u'dbname=\'%s\'' % connector._fetchone(r)[0])
connector._close_cursor(r)
# Find first raster field
col = ''
for fld in self.fields():
if fld.dataType == "raster":
col = u'column=%s' % fld.name
col = u'column=\'%s\'' % fld.name
break
gdalUri = u'PG: %s %s %s %s %s %s mode=2 %s %s table=%s' % \
gdalUri = u'PG: %s %s %s %s %s %s mode=2 %s %s table=\'%s\'' % \
(service, dbname, host, user, passw, port, schema, col, self.name)
return gdalUri