Skip to content

Commit 52a0082

Browse files
committedOct 17, 2016
Fix extraction of ogr LayerName from database dataset URIs
See 6c53641#commitcomment-19439676 Includes testcase. REF #15698
1 parent da0ee8b commit 52a0082

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed
 

‎python/plugins/processing/tests/ToolsTest.py

+6
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,12 @@ def linkTestfile(f, t):
9292
name = vector.ogrLayerName(tmpdir + '|layername=f2|layerid=0')
9393
self.assertEqual(name, 'f2') # layername takes precedence
9494

95+
name = vector.ogrLayerName('dbname=\'/tmp/x.sqlite\' table="t" (geometry) sql=')
96+
self.assertEqual(name, 't')
97+
98+
name = vector.ogrLayerName('dbname=\'/tmp/x.sqlite\' table="s.t" (geometry) sql=')
99+
self.assertEqual(name, 's.t')
100+
95101
def testFeatures(self):
96102
ProcessingConfig.initialize()
97103

‎python/plugins/processing/tools/vector.py

+13
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,19 @@ def ogrConnectionString(uri):
533533

534534

535535
def ogrLayerName(uri):
536+
if 'host' in uri:
537+
regex = re.compile('table="(.+?)\.(.+?)"')
538+
r = regex.search(uri)
539+
return '"' + r.groups()[0] + '.' + r.groups()[1] + '"'
540+
elif 'dbname' in uri:
541+
regex = re.compile('table="(.+?)"')
542+
r = regex.search(uri)
543+
return r.groups()[0]
544+
elif 'layername' in uri:
545+
regex = re.compile('(layername=)([^|]*)')
546+
r = regex.search(uri)
547+
return r.groups()[1]
548+
536549
fields = uri.split('|')
537550
ogruri = fields[0]
538551
fields = fields[1:]

0 commit comments

Comments
 (0)