Skip to content

Commit d2b5ed9

Browse files
committedFeb 8, 2012
postgres provider:
- pre-select first integer column as primary key for views - also consider oid type as integer column
1 parent d181e26 commit d2b5ed9

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed
 

‎src/providers/postgres/qgspgtablemodel.cpp

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,20 @@ void QgsPgTableModel::addTableEntry( QgsPostgresLayerProperty layerProperty )
9191
sridItem->setEditable( false );
9292

9393
QString pkText, pkCol = "";
94-
switch ( layerProperty.pkCols.size() )
94+
if ( layerProperty.pkCols.size() == 0 )
9595
{
96-
case 0: pkText = ""; break;
97-
case 1: pkText = layerProperty.pkCols[0]; pkCol = pkText; break;
98-
default: pkText = tr( "Select..." ); break;
96+
pkText = "";
97+
}
98+
else
99+
{
100+
pkCol = pkText = layerProperty.pkCols[0];
99101
}
100102

101103
QStandardItem *pkItem = new QStandardItem( pkText );
102-
if ( pkText == tr( "Select..." ) )
104+
if ( layerProperty.pkCols.size() > 1 )
103105
pkItem->setFlags( pkItem->flags() | Qt::ItemIsEditable );
106+
else
107+
pkItem->setFlags( pkItem->flags() & ~Qt::ItemIsEditable );
104108

105109
pkItem->setData( layerProperty.pkCols, Qt::UserRole + 1 );
106110
pkItem->setData( pkCol, Qt::UserRole + 2 );
@@ -313,11 +317,11 @@ bool QgsPgTableModel::setData( const QModelIndex &idx, const QVariant &value, in
313317

314318
bool ok = geomType != QGis::UnknownGeometry;
315319

316-
if ( geomType != QGis::NoGeometry )
320+
if ( ok && geomType != QGis::NoGeometry )
317321
idx.sibling( idx.row(), dbtmSrid ).data().toInt( &ok );
318322

319323
QStringList pkCols = idx.sibling( idx.row(), dbtmPkCol ).data( Qt::UserRole + 1 ).toStringList();
320-
if ( pkCols.size() > 0 )
324+
if ( ok && pkCols.size() > 0 )
321325
ok = pkCols.contains( idx.sibling( idx.row(), dbtmPkCol ).data().toString() );
322326

323327
for ( int i = 0; i < dbtmColumns; i++ )

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1056,16 +1056,15 @@ bool QgsPostgresProvider::loadFields()
10561056
fieldSize = -1;
10571057
fieldPrec = 0;
10581058
}
1059-
else if ( fieldTypeName.startsWith( "int" ) ||
1060-
fieldTypeName == "serial" )
1059+
else if ( fieldTypeName == "int2" || fieldTypeName == "int4" ||
1060+
fieldTypeName == "oid" || fieldTypeName == "serial" )
10611061
{
10621062
fieldType = QVariant::Int;
10631063
fieldSize = -1;
10641064
fieldPrec = 0;
10651065
}
1066-
else if ( fieldTypeName == "real" ||
1067-
fieldTypeName == "double precision" ||
1068-
fieldTypeName.startsWith( "float" ) )
1066+
else if ( fieldTypeName == "real" || fieldTypeName == "double precision" ||
1067+
fieldTypeName == "float4" || fieldTypeName == "float8" )
10691068
{
10701069
fieldType = QVariant::Double;
10711070
fieldSize = -1;

0 commit comments

Comments
 (0)
Please sign in to comment.