@@ -27,18 +27,6 @@ bool QgsVectorLayerUtils::valueExists( const QgsVectorLayer* layer, int fieldInd
27
27
if ( fieldIndex < 0 || fieldIndex >= fields.count () )
28
28
return false ;
29
29
30
- // check - if value is a provider side defaultValueClause then we exclude it from the check
31
- if ( fields.fieldOrigin ( fieldIndex ) == QgsFields::OriginProvider )
32
- {
33
- int providerIdx = fields.fieldOriginIndex ( fieldIndex );
34
- QString providerDefaultClause = layer->dataProvider ()->defaultValueClause ( providerIdx );
35
- if ( !providerDefaultClause.isEmpty () && value.toString () == providerDefaultClause )
36
- {
37
- // exempt from check
38
- return false ;
39
- }
40
- }
41
-
42
30
QString fieldName = fields.at ( fieldIndex ).name ();
43
31
44
32
// build up an optimised feature request
@@ -272,19 +260,24 @@ QgsFeature QgsVectorLayerUtils::createFeature( QgsVectorLayer* layer, const QgsG
272
260
}
273
261
}
274
262
275
- // 3. passed attribute value
263
+ // 3. provider side default literal
276
264
// note - deliberately not using else if!
277
- if ( !v.isValid () && attributes. contains ( idx ) )
265
+ if ( !v.isValid () && fields. fieldOrigin ( idx ) == QgsFields::OriginProvider )
278
266
{
279
- v = attributes.value ( idx );
267
+ int providerIndex = fields.fieldOriginIndex ( idx );
268
+ v = layer->dataProvider ()->defaultValue ( providerIndex );
269
+ if ( v.isValid () )
270
+ {
271
+ // trust that the provider default has been sensibly set not to violate any constraints
272
+ checkUnique = false ;
273
+ }
280
274
}
281
275
282
- // 4. provider side default literal
276
+ // 4. passed attribute value
283
277
// note - deliberately not using else if!
284
- if ( !v.isValid () && fields. fieldOrigin ( idx ) == QgsFields::OriginProvider )
278
+ if ( !v.isValid () && attributes. contains ( idx ) )
285
279
{
286
- int providerIndex = fields.fieldOriginIndex ( idx );
287
- v = layer->dataProvider ()->defaultValue ( providerIndex );
280
+ v = attributes.value ( idx );
288
281
}
289
282
290
283
// last of all... check that unique constraints are respected
0 commit comments