mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-13 00:03:09 -04:00
Fix extraction of ogr LayerName from database dataset URIs
See 6c5364186d (commitcomment-19439676)
Includes testcase.
REF #15698
This commit is contained in:
parent
da0ee8b007
commit
52a0082ade
@ -92,6 +92,12 @@ class VectorTest(unittest.TestCase):
|
||||
name = vector.ogrLayerName(tmpdir + '|layername=f2|layerid=0')
|
||||
self.assertEqual(name, 'f2') # layername takes precedence
|
||||
|
||||
name = vector.ogrLayerName('dbname=\'/tmp/x.sqlite\' table="t" (geometry) sql=')
|
||||
self.assertEqual(name, 't')
|
||||
|
||||
name = vector.ogrLayerName('dbname=\'/tmp/x.sqlite\' table="s.t" (geometry) sql=')
|
||||
self.assertEqual(name, 's.t')
|
||||
|
||||
def testFeatures(self):
|
||||
ProcessingConfig.initialize()
|
||||
|
||||
|
@ -533,6 +533,19 @@ def ogrConnectionString(uri):
|
||||
|
||||
|
||||
def ogrLayerName(uri):
|
||||
if 'host' in uri:
|
||||
regex = re.compile('table="(.+?)\.(.+?)"')
|
||||
r = regex.search(uri)
|
||||
return '"' + r.groups()[0] + '.' + r.groups()[1] + '"'
|
||||
elif 'dbname' in uri:
|
||||
regex = re.compile('table="(.+?)"')
|
||||
r = regex.search(uri)
|
||||
return r.groups()[0]
|
||||
elif 'layername' in uri:
|
||||
regex = re.compile('(layername=)([^|]*)')
|
||||
r = regex.search(uri)
|
||||
return r.groups()[1]
|
||||
|
||||
fields = uri.split('|')
|
||||
ogruri = fields[0]
|
||||
fields = fields[1:]
|
||||
|
Loading…
x
Reference in New Issue
Block a user