[QGIS Commit] r12235 - trunk/qgis/src/providers/postgres
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Mon Nov 23 16:16:45 EST 2009
Author: jef
Date: 2009-11-23 16:16:44 -0500 (Mon, 23 Nov 2009)
New Revision: 12235
Modified:
trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp
Log:
fix #2137
Modified: trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp
===================================================================
--- trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp 2009-11-23 20:59:02 UTC (rev 12234)
+++ trunk/qgis/src/providers/postgres/qgspostgresprovider.cpp 2009-11-23 21:16:44 UTC (rev 12235)
@@ -2044,7 +2044,7 @@
return fieldValue.toUtf8();
}
-bool QgsPostgresProvider::addFeatures( QgsFeatureList & flist )
+bool QgsPostgresProvider::addFeatures( QgsFeatureList &flist )
{
if ( flist.size() == 0 )
return true;
@@ -2082,6 +2082,7 @@
QStringList defaultValues;
QList<int> fieldId;
+ int primaryKeyId = -1;
// look for unique attribute values to place in statement instead of passing as parameter
// e.g. for defaults
@@ -2095,9 +2096,15 @@
QgsDebugMsg( "Checking field against: " + fieldname );
- if ( fieldname.isEmpty() || fieldname == geometryColumn || fieldname == primaryKey )
+ if ( fieldname.isEmpty() || fieldname == geometryColumn )
continue;
+ if ( fieldname == primaryKey )
+ {
+ primaryKeyId = it.key();
+ continue;
+ }
+
int i;
for ( i = 1; i < flist.size(); i++ )
{
@@ -2179,7 +2186,9 @@
if ( primaryKeyType != "tid" )
{
- if ( keyDefault.isNull() )
+ QByteArray key = paramValue( primaryKeyId >= 0 ? attributevec[ primaryKeyId ].toString() : QString::null, keyDefault );
+
+ if ( key.isNull() )
{
++primaryKeyHighWater;
params << QString::number( primaryKeyHighWater );
@@ -2187,7 +2196,6 @@
}
else
{
- QByteArray key = paramValue( keyDefault, keyDefault );
params << key;
newIds << key.toInt();
}
More information about the QGIS-commit
mailing list