Skip to content

Commit 53c0d40

Browse files
committedSep 14, 2020
Implemented method QgsMssqlProvider::defaultValue
1 parent a715e50 commit 53c0d40

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed
 

‎src/providers/mssql/qgsmssqlprovider.cpp

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,44 @@ QString QgsMssqlProvider::quotedIdentifier( const QString &value )
478478

479479
QString QgsMssqlProvider::defaultValueClause( int fieldId ) const
480480
{
481-
return mDefaultValues.value( fieldId, QString() );
481+
QString defVal = mDefaultValues.value( fieldId, QString() );
482+
483+
// NOTE: If EvaluateDefaultValues is activated it is impossible to get the defaultValueClause.
484+
// This also apply to QgsPostgresProvider::defaultValueClause.
485+
if ( !providerProperty( EvaluateDefaultValues, false ).toBool() && !defVal.isEmpty() )
486+
{
487+
return defVal;
488+
}
489+
490+
return QString();
491+
}
492+
493+
QVariant QgsMssqlProvider::defaultValue( int fieldId ) const
494+
{
495+
QString defVal = mDefaultValues.value( fieldId, QString() );
496+
497+
if ( providerProperty( EvaluateDefaultValues, false ).toBool() && !defVal.isEmpty() )
498+
{
499+
QString sql = QStringLiteral( "select %1" )
500+
.arg( defVal );
501+
502+
QSqlQuery query = createQuery();
503+
query.setForwardOnly( true );
504+
505+
if ( !query.exec( sql ) )
506+
{
507+
QgsDebugMsg( query.lastError().text() );
508+
pushError( tr( "Could not execute query" ) );
509+
return QVariant();
510+
}
511+
512+
if ( !query.next() )
513+
return QVariant();
514+
515+
return query.value( 0 );
516+
}
517+
518+
return QVariant();
482519
}
483520

484521
QString QgsMssqlProvider::storageType() const

‎src/providers/mssql/qgsmssqlprovider.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ class QgsMssqlProvider final: public QgsVectorDataProvider
133133
static QString quotedIdentifier( const QString &value );
134134

135135
QString defaultValueClause( int fieldId ) const override;
136+
QVariant defaultValue( int fieldId ) const override;
136137

137138
//! Import a vector layer into the database
138139
static QgsVectorLayerExporter::ExportError createEmptyLayer(

0 commit comments

Comments
 (0)
Please sign in to comment.