Skip to content

Commit 35c3ad7

Browse files
committedOct 16, 2015
When loading a query as a postgis layer the primary key may now also span multiple columns.
1 parent 86ab6c2 commit 35c3ad7

File tree

1 file changed

+5
-20
lines changed

1 file changed

+5
-20
lines changed
 

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,22 +1219,7 @@ bool QgsPostgresProvider::determinePrimaryKey()
12191219
}
12201220
else
12211221
{
1222-
QString primaryKey = mUri.keyColumn();
1223-
int idx = fieldNameIndex( mUri.keyColumn() );
1224-
1225-
if ( idx >= 0 && ( mAttributeFields[idx].type() == QVariant::Int || mAttributeFields[idx].type() == QVariant::LongLong ) )
1226-
{
1227-
if ( mUseEstimatedMetadata || uniqueData( mQuery, primaryKey ) )
1228-
{
1229-
mPrimaryKeyType = pktInt;
1230-
mPrimaryKeyAttrs << idx;
1231-
}
1232-
}
1233-
else
1234-
{
1235-
QgsMessageLog::logMessage( tr( "No key field for query given." ), tr( "PostGIS" ) );
1236-
mPrimaryKeyType = pktUnknown;
1237-
}
1222+
determinePrimaryKeyFromUriKeyColumn();
12381223
}
12391224

12401225
mValid = mPrimaryKeyType != pktUnknown;
@@ -1299,7 +1284,7 @@ void QgsPostgresProvider::determinePrimaryKeyFromUriKeyColumn()
12991284
int idx = fieldNameIndex( col );
13001285
if ( idx < 0 )
13011286
{
1302-
QgsMessageLog::logMessage( tr( "Key field '%1' for view not found." ).arg( col ), tr( "PostGIS" ) );
1287+
QgsMessageLog::logMessage( tr( "Key field '%1' for view/query not found." ).arg( col ), tr( "PostGIS" ) );
13031288
mPrimaryKeyAttrs.clear();
13041289
break;
13051290
}
@@ -1315,17 +1300,17 @@ void QgsPostgresProvider::determinePrimaryKeyFromUriKeyColumn()
13151300
}
13161301
else
13171302
{
1318-
QgsMessageLog::logMessage( tr( "Primary key field '%1' for view not unique." ).arg( primaryKey ), tr( "PostGIS" ) );
1303+
QgsMessageLog::logMessage( tr( "Primary key field '%1' for view/query not unique." ).arg( primaryKey ), tr( "PostGIS" ) );
13191304
}
13201305
}
13211306
else
13221307
{
1323-
QgsMessageLog::logMessage( tr( "Keys for view undefined." ).arg( primaryKey ), tr( "PostGIS" ) );
1308+
QgsMessageLog::logMessage( tr( "Keys for view/query undefined." ).arg( primaryKey ), tr( "PostGIS" ) );
13241309
}
13251310
}
13261311
else
13271312
{
1328-
QgsMessageLog::logMessage( tr( "No key field for view given." ), tr( "PostGIS" ) );
1313+
QgsMessageLog::logMessage( tr( "No key field for view/query given." ), tr( "PostGIS" ) );
13291314
}
13301315
}
13311316

0 commit comments

Comments
 (0)
Please sign in to comment.