@@ -227,6 +227,18 @@ def setUpClass(cls):
227
227
sql += "VALUES (8, 'int', GeomFromText('POINT(2 1)', 4326))"
228
228
cur .execute (sql )
229
229
230
+ # bigint table
231
+ sql = "CREATE TABLE test_bigint (id BIGINT, value INT)"
232
+ cur .execute (sql )
233
+ sql = "SELECT AddGeometryColumn('test_bigint', 'position', 4326, 'LINESTRING', 'XYM')"
234
+ cur .execute (sql )
235
+ sql = """
236
+ INSERT INTO test_bigint (id, value, position) VALUES
237
+ (987654321012345, 1, ST_GeomFromtext('LINESTRINGM(10.416255 55.3786316 1577093516, 10.516255 55.4786316 157709)', 4326) ),
238
+ (987654321012346, 2, ST_GeomFromtext('LINESTRINGM(10.316255 55.3786316 1577093516, 11.216255 56.3786316 157709)', 4326) )"""
239
+
240
+ cur .execute (sql )
241
+
230
242
cur .execute ("COMMIT" )
231
243
con .close ()
232
244
@@ -816,7 +828,7 @@ def testEncodeUri(self):
816
828
filename = '/home/to/path/test.db'
817
829
registry = QgsProviderRegistry .instance ()
818
830
819
- parts = {'path' , filename , 'layerName' : 'test' }
831
+ parts = {'path' : filename , 'layerName' : 'test' }
820
832
uri = registry .encodeUri ('spatialite' , parts )
821
833
self .assertEqual (uri , 'dbname=\' {}\' table="test" (geometry) sql=' .format (filename ))
822
834
@@ -1139,6 +1151,14 @@ def testGeometryTypes(self):
1139
1151
self .assertTrue (vl .isValid ())
1140
1152
self .assertEqual (vl .wkbType (), qgisType )
1141
1153
1154
+ def testBigint (self ):
1155
+ """Test unique values bigint, see GH #33585"""
1156
+
1157
+ l = QgsVectorLayer ("dbname=%s table='test_bigint' (position) key='id'" % self .dbname , "test_bigint" , "spatialite" )
1158
+ self .assertTrue (l .isValid ())
1159
+ self .assertEqual (l .uniqueValues (1 ), {1 , 2 })
1160
+ self .assertEqual (l .uniqueValues (0 ), {987654321012345 , 987654321012346 })
1161
+
1142
1162
1143
1163
if __name__ == '__main__' :
1144
1164
unittest .main ()
0 commit comments