Skip to content

Commit cd64d31

Browse files
committed
[mssql] Ensure provider rejects features with incorrect geometry type
1 parent f4e6477 commit cd64d31

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/providers/mssql/qgsmssqlprovider.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,21 @@ bool QgsMssqlProvider::addFeatures( QgsFeatureList &flist, Flags flags )
855855
{
856856
for ( QgsFeatureList::iterator it = flist.begin(); it != flist.end(); ++it )
857857
{
858+
if ( it->hasGeometry() && mWkbType == QgsWkbTypes::NoGeometry )
859+
{
860+
it->clearGeometry();
861+
}
862+
else if ( it->hasGeometry() && QgsWkbTypes::geometryType( it->geometry().wkbType() ) !=
863+
QgsWkbTypes::geometryType( mWkbType ) )
864+
{
865+
pushError( tr( "Could not add feature with geometry type %1 to layer of type %2" ).arg( QgsWkbTypes::displayString( it->geometry().wkbType() ),
866+
QgsWkbTypes::displayString( mWkbType ) ) );
867+
if ( !mSkipFailures )
868+
return false;
869+
870+
continue;
871+
}
872+
858873
QString statement;
859874
QString values;
860875
statement = QStringLiteral( "INSERT INTO [%1].[%2] (" ).arg( mSchemaName, mTableName );

0 commit comments

Comments
 (0)