@@ -799,8 +799,17 @@ def _aliased_sql_helper(self, dbname):
799
799
'(SELECT * FROM \\ "somedata\\ " as my_alias4\n )' ,
800
800
'(SELECT * FROM (SELECT * FROM \\ "somedata\\ "))' ,
801
801
'(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\\ "))' ,
804
813
)
805
814
for sql in queries :
806
815
vl = QgsVectorLayer ('dbname=\' {}\' table="{}" (geom) sql=' .format (dbname , sql ), 'test' , 'spatialite' )
@@ -819,29 +828,33 @@ def testPkLessQuery(self):
819
828
cur .execute (sql )
820
829
821
830
# 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)"
823
832
cur .execute (sql )
824
833
825
- sql = "SELECT AddGeometryColumn('test_pk ', 'geometry', 4326, 'POINT', 'XY')"
834
+ sql = "SELECT AddGeometryColumn('test pk ', 'geometry', 4326, 'POINT', 'XY')"
826
835
cur .execute (sql )
827
836
828
837
for i in range (11 , 21 ):
829
- sql = "INSERT INTO test_pk (id, name, geometry) "
838
+ sql = "INSERT INTO \" test pk \" (id, name, geometry) "
830
839
sql += "VALUES ({id}, 'name {id}', GeomFromText('POINT({id} {id})', 4326))" .format (id = i )
831
840
cur .execute (sql )
832
841
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 )
839
846
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
843
848
cur .execute (sql )
844
849
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
+
845
858
cur .execute ("COMMIT" )
846
859
con .close ()
847
860
@@ -857,14 +870,18 @@ def _check_features(vl, offset):
857
870
self .assertEqual (f .geometry ().asWkt (), 'Point ({id} {id})' .format (id = i ))
858
871
i += 1
859
872
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' )
861
874
self .assertTrue (vl_pk .isValid ())
862
875
_check_features (vl_pk , 0 )
863
876
864
877
vl_no_pk = QgsVectorLayer ('dbname=\' %s\' table="(select * from somedata)" (geom) sql=' % dbname , 'pk' , 'spatialite' )
865
878
self .assertTrue (vl_no_pk .isValid ())
866
879
_check_features (vl_no_pk , 10 )
867
880
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
+
868
885
# Test regression when sending queries with aliased tables from DB manager
869
886
self ._aliased_sql_helper (dbname )
870
887
0 commit comments