Skip to content

Commit e83e794

Browse files
committed
spatialite: Add more test cases for table names with spaces
1 parent d4439b2 commit e83e794

File tree

2 files changed

+32
-15
lines changed

2 files changed

+32
-15
lines changed

tests/src/python/test_provider_spatialite.py

Lines changed: 32 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -799,8 +799,17 @@ def _aliased_sql_helper(self, dbname):
799799
'(SELECT * FROM \\"somedata\\" as my_alias4\n)',
800800
'(SELECT * FROM (SELECT * FROM \\"somedata\\"))',
801801
'(SELECT my_alias5.* FROM (SELECT * FROM \\"somedata\\") AS my_alias5)',
802-
'(SELECT my_alias5.* FROM (SELECT * FROM \\"somedata\\" as my_alias\n) AS my_alias5)',
803-
'(SELECT my_alias6.* FROM (SELECT * FROM \\"somedata\\" as my_alias\n) AS my_alias6\n)',
802+
'(SELECT my_alias6.* FROM (SELECT * FROM \\"somedata\\" as my_alias\n) AS my_alias6)',
803+
'(SELECT my_alias7.* FROM (SELECT * FROM \\"somedata\\" as my_alias\n) AS my_alias7\n)',
804+
'(SELECT my_alias8.* FROM (SELECT * FROM \\"some data\\") AS my_alias8)',
805+
'(SELECT my_alias9.* FROM (SELECT * FROM \\"some data\\" as my_alias\n) AS my_alias9)',
806+
'(SELECT my_alias10.* FROM (SELECT * FROM \\"some data\\" as my_alias\n) AS my_alias10\n)',
807+
'(select sd.* from \\"some data\\" as sd left join \\"some data\\" as sd2 on ( sd2.name = sd.name ))',
808+
'(SELECT * FROM \\"some data\\" as my_alias11\n)',
809+
'(SELECT * FROM \\"some data\\" as my_alias12)',
810+
'(SELECT * FROM \\"some data\\" AS my_alias13)',
811+
'(SELECT * from \\"some data\\" AS my_alias14\n)',
812+
'(SELECT * FROM (SELECT * from \\"some data\\"))',
804813
)
805814
for sql in queries:
806815
vl = QgsVectorLayer('dbname=\'{}\' table="{}" (geom) sql='.format(dbname, sql), 'test', 'spatialite')
@@ -819,29 +828,33 @@ def testPkLessQuery(self):
819828
cur.execute(sql)
820829

821830
# simple table with primary key
822-
sql = "CREATE TABLE test_pk (id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL)"
831+
sql = "CREATE TABLE \"test pk\" (id INTEGER NOT NULL PRIMARY KEY, name TEXT NOT NULL)"
823832
cur.execute(sql)
824833

825-
sql = "SELECT AddGeometryColumn('test_pk', 'geometry', 4326, 'POINT', 'XY')"
834+
sql = "SELECT AddGeometryColumn('test pk', 'geometry', 4326, 'POINT', 'XY')"
826835
cur.execute(sql)
827836

828837
for i in range(11, 21):
829-
sql = "INSERT INTO test_pk (id, name, geometry) "
838+
sql = "INSERT INTO \"test pk\" (id, name, geometry) "
830839
sql += "VALUES ({id}, 'name {id}', GeomFromText('POINT({id} {id})', 4326))".format(id=i)
831840
cur.execute(sql)
832841

833-
# simple table without primary key
834-
sql = "CREATE TABLE somedata (name TEXT NOT NULL)"
835-
cur.execute(sql)
836-
837-
sql = "SELECT AddGeometryColumn('somedata', 'geom', 4326, 'POINT', 'XY')"
838-
cur.execute(sql)
842+
def _make_table(table_name):
843+
# simple table without primary key
844+
sql = "CREATE TABLE \"%s\" (name TEXT NOT NULL)" % table_name
845+
cur.execute(sql)
839846

840-
for i in range(11, 21):
841-
sql = "INSERT INTO somedata (name, geom) "
842-
sql += "VALUES ('name {id}', GeomFromText('POINT({id} {id})', 4326))".format(id=i)
847+
sql = "SELECT AddGeometryColumn('%s', 'geom', 4326, 'POINT', 'XY')" % table_name
843848
cur.execute(sql)
844849

850+
for i in range(11, 21):
851+
sql = "INSERT INTO \"%s\" (name, geom) " % table_name
852+
sql += "VALUES ('name {id}', GeomFromText('POINT({id} {id})', 4326))".format(id=i)
853+
cur.execute(sql)
854+
855+
_make_table("somedata")
856+
_make_table("some data")
857+
845858
cur.execute("COMMIT")
846859
con.close()
847860

@@ -857,14 +870,18 @@ def _check_features(vl, offset):
857870
self.assertEqual(f.geometry().asWkt(), 'Point ({id} {id})'.format(id=i))
858871
i += 1
859872

860-
vl_pk = QgsVectorLayer('dbname=\'%s\' table="(select * from test_pk)" (geometry) sql=' % dbname, 'pk', 'spatialite')
873+
vl_pk = QgsVectorLayer('dbname=\'%s\' table="(select * from \\"test pk\\")" (geometry) sql=' % dbname, 'pk', 'spatialite')
861874
self.assertTrue(vl_pk.isValid())
862875
_check_features(vl_pk, 0)
863876

864877
vl_no_pk = QgsVectorLayer('dbname=\'%s\' table="(select * from somedata)" (geom) sql=' % dbname, 'pk', 'spatialite')
865878
self.assertTrue(vl_no_pk.isValid())
866879
_check_features(vl_no_pk, 10)
867880

881+
vl_no_pk = QgsVectorLayer('dbname=\'%s\' table="(select * from \\"some data\\")" (geom) sql=' % dbname, 'pk', 'spatialite')
882+
self.assertTrue(vl_no_pk.isValid())
883+
_check_features(vl_no_pk, 10)
884+
868885
# Test regression when sending queries with aliased tables from DB manager
869886
self._aliased_sql_helper(dbname)
870887

tests/testdata/provider/spatialite.db

3 KB
Binary file not shown.

0 commit comments

Comments
 (0)