[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