Skip to content

Commit 2b52f49

Browse files
committed
MSSQL: Fix for handling spatial tables with no FID columns (#7254)
1 parent 9dbd21a commit 2b52f49

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

src/providers/mssql/qgsmssqlprovider.cpp

+13-4
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,6 @@ QgsMssqlProvider::QgsMssqlProvider( QString uri )
133133
mWkbType = QGis::WKBNoGeometry;
134134
mSRId = 0;
135135
}
136-
137-
if ( mFidColName.isEmpty() )
138-
mValid = false;
139136
}
140137

141138
//fill type names into sets
@@ -947,6 +944,9 @@ bool QgsMssqlProvider::changeAttributeValues( const QgsChangedAttributesMap & at
947944
if ( attr_map.isEmpty() )
948945
return true;
949946

947+
if ( mFidColName.isEmpty() )
948+
return false;
949+
950950
for ( QgsChangedAttributesMap::const_iterator it = attr_map.begin(); it != attr_map.end(); ++it )
951951
{
952952
QgsFeatureId fid = it.key();
@@ -1055,6 +1055,9 @@ bool QgsMssqlProvider::changeGeometryValues( QgsGeometryMap & geometry_map )
10551055
if ( geometry_map.isEmpty() )
10561056
return true;
10571057

1058+
if ( mFidColName.isEmpty() )
1059+
return false;
1060+
10581061
for ( QgsGeometryMap::iterator it = geometry_map.begin(); it != geometry_map.end(); ++it )
10591062
{
10601063
QgsFeatureId fid = it.key();
@@ -1125,6 +1128,9 @@ bool QgsMssqlProvider::changeGeometryValues( QgsGeometryMap & geometry_map )
11251128

11261129
bool QgsMssqlProvider::deleteFeatures( const QgsFeatureIds & id )
11271130
{
1131+
if ( mFidColName.isEmpty() )
1132+
return false;
1133+
11281134
QString featureIds;
11291135
for ( QgsFeatureIds::const_iterator it = id.begin(); it != id.end(); ++it )
11301136
{
@@ -1156,7 +1162,10 @@ bool QgsMssqlProvider::deleteFeatures( const QgsFeatureIds & id )
11561162

11571163
int QgsMssqlProvider::capabilities() const
11581164
{
1159-
return CreateSpatialIndex | CreateAttributeIndex | AddFeatures | DeleteFeatures |
1165+
if (mFidColName.isEmpty())
1166+
return CreateSpatialIndex | CreateAttributeIndex | AddFeatures | AddAttributes;
1167+
else
1168+
return CreateSpatialIndex | CreateAttributeIndex | AddFeatures | DeleteFeatures |
11601169
ChangeAttributeValues | ChangeGeometries | AddAttributes | DeleteAttributes |
11611170
QgsVectorDataProvider::SelectAtId | QgsVectorDataProvider::SelectGeometryAtId;
11621171
}

0 commit comments

Comments
 (0)