Skip to content

Commit 53dd5ef

Browse files
committed
[ogr] Pass default value (-1) for fid columns
1 parent f97b5a5 commit 53dd5ef

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/providers/ogr/qgsogrprovider.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -948,6 +948,10 @@ void QgsOgrProvider::loadFields()
948948
mAttributeFields.append(
949949
fidField
950950
);
951+
// Set default value for fid, this is needed because
952+
// the attribute form will not accept a NULL value, passing
953+
// -1 will delegate to the back-end.
954+
mDefaultValues.insert( 0, QStringLiteral( "-1" ) );
951955
}
952956

953957
for ( int i = 0; i < fdef.GetFieldCount(); ++i )
@@ -1201,6 +1205,18 @@ QVariant QgsOgrProvider::defaultValue( int fieldId ) const
12011205
return resultVar;
12021206
}
12031207

1208+
QString QgsOgrProvider::defaultValueClause( int fieldIndex ) const
1209+
{
1210+
QString defVal = mDefaultValues.value( fieldIndex, QString() );
1211+
1212+
if ( !providerProperty( EvaluateDefaultValues, false ).toBool() && !defVal.isEmpty() )
1213+
{
1214+
return defVal;
1215+
}
1216+
1217+
return QString();
1218+
}
1219+
12041220
void QgsOgrProvider::updateExtents()
12051221
{
12061222
invalidateCachedExtent( true );

src/providers/ogr/qgsogrprovider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class QgsOgrProvider : public QgsVectorDataProvider
109109
virtual QgsFields fields() const override;
110110
virtual QgsRectangle extent() const override;
111111
QVariant defaultValue( int fieldId ) const override;
112+
QString defaultValueClause( int fieldIndex ) const override;
112113
virtual void updateExtents() override;
113114
virtual bool addFeatures( QgsFeatureList &flist, QgsFeatureSink::Flags flags = 0 ) override;
114115
virtual bool deleteFeatures( const QgsFeatureIds &id ) override;

0 commit comments

Comments
 (0)