@@ -600,6 +600,38 @@ def testGeopackageRefreshIfTableListUpdated(self):
600
600
vl2 .subLayers ()
601
601
self .assertEqual (vl2 .dataProvider ().subLayers (), ['0:test:0:Point:geom' , '1:test2:0:Point:geom' ])
602
602
603
+ def testGeopackageLargeFID (self ):
604
+
605
+ tmpfile = os .path .join (self .basetestpath , 'testGeopackageLargeFID.gpkg' )
606
+ ds = ogr .GetDriverByName ('GPKG' ).CreateDataSource (tmpfile )
607
+ lyr = ds .CreateLayer ('test' , geom_type = ogr .wkbPoint )
608
+ lyr .CreateField (ogr .FieldDefn ('str_field' , ogr .OFTString ))
609
+ ds = None
610
+
611
+ vl = QgsVectorLayer (u'{}' .format (tmpfile ) + "|layername=" + "test" , 'test' , u'ogr' )
612
+ f = QgsFeature ()
613
+ f .setAttributes ([1234567890123 , None ])
614
+ self .assertTrue (vl .startEditing ())
615
+ self .assertTrue (vl .dataProvider ().addFeatures ([f ]))
616
+ self .assertTrue (vl .commitChanges ())
617
+
618
+ got = [feat for feat in vl .getFeatures ()][0 ]
619
+ self .assertEqual (got ['fid' ], 1234567890123 )
620
+
621
+ self .assertTrue (vl .startEditing ())
622
+ self .assertTrue (vl .changeGeometry (1234567890123 , QgsGeometry .fromWkt ('Point (3 50)' )))
623
+ self .assertTrue (vl .changeAttributeValue (1234567890123 , 1 , 'foo' ))
624
+ self .assertTrue (vl .commitChanges ())
625
+
626
+ got = [feat for feat in vl .getFeatures ()][0 ]
627
+ self .assertEqual (got ['str_field' ], 'foo' )
628
+ got_geom = got .geometry ()
629
+ self .assertIsNotNone (got_geom )
630
+
631
+ self .assertTrue (vl .startEditing ())
632
+ self .assertTrue (vl .deleteFeature (1234567890123 ))
633
+ self .assertTrue (vl .commitChanges ())
634
+
603
635
604
636
if __name__ == '__main__' :
605
637
unittest .main ()
0 commit comments