Hi friends, I have found that QGIS is not choosing proper 'gid serial' primary key column when integer column with unique constraint exists in table.
Example: I have following table called 'vranov.v_budovy': - gid serial PRIMARY KEY, - id_cis_supisne_cisla integer REFERENCES gisdata.t_cis_supisne_cisla(id) ON DELETE SET NULL UNIQUE, - the_geom geometry I have the same tables in other database schemas with the same problem. 1. After loading this table, QGIS will incorrectly choose 'id_cis_supisne_cisla' column instead of proper PostGIS primary key 'gid'. 2. After removing unique constraint, 'gid' column will be correctly chosen. Qgis debug log is attached. Qgis 1.7, Debian Squeeze Linux. Can anybody confirm ? -- Ivan Mincik
Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaplayer.cpp: 54: (QgsMapLayer) lyrname is 'v_budovy' Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaplayer.cpp: 60: (QgsMapLayer) layerName is 'v_budovy' Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsproviderregistry.cpp: 362: (getProvider) Library name is /usr/lib/qgis/plugins/libpostgresprovider.so Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsproviderregistry.cpp: 368: (getProvider) Loaded data provider library Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsproviderregistry.cpp: 369: (getProvider) Attempting to resolve the classFactory function Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsproviderregistry.cpp: 376: (getProvider) Getting pointer to a dataProvider object from the library Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 72: (QgsPostgresProvider) URI: dbname='gisdata' host=xen-dataserver port=5432 user='ivan.mincik' password='xxx' sslmode=disable table="vranov"."v_budovy" (the_geom) sql= Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 104: (QgsPostgresProvider) Connection info is dbname='gisdata' host=xen-dataserver port=5432 user='ivan.mincik' password='xxx' sslmode=disable Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 105: (QgsPostgresProvider) Geometry column is: the_geom Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 106: (QgsPostgresProvider) Schema is: vranov Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 107: (QgsPostgresProvider) Table name is: v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 108: (QgsPostgresProvider) Query is: "vranov"."v_budovy" Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 109: (QgsPostgresProvider) Where clause is: Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 215: (connectDb) New postgres connection for dbname='gisdata' host=xen-dataserver port=5432 user='ivan.mincik' password='xxx' sslmode=disable Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 255: (connectDb) setting client encoding to UNICODE Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 261: (connectDb) encoding successfully set Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 272: (connectDb) Connection to the database was successful Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 2183: (postgisVersion) PostGIS version info: 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 Warning: Query: SET application_name='Quantum GIS' returned 7 [ERROR: unrecognized configuration parameter "application_name" ] NOTICE: there is no transaction in progress NOTICE: there is no transaction in progress Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 295: (connectDb) Checking for GEOS support Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 2183: (postgisVersion) PostGIS version info: 1.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1 Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 981: (hasSufficientPermsAndCapabilities) Checking for permissions on the relation Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3150: (getGeometryDetails) Getting geometry column: select upper(type),srid from geometry_columns where f_table_name='v_budovy' and f_geometry_column='the_geom' and f_table_schema='vranov' Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3153: (getGeometryDetails) geometry column query returned 1 Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3303: (getGeometryDetails) SRID is -1 Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3304: (getGeometryDetails) type is POLYGON Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3305: (getGeometryDetails) Feature type is 3 Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3306: (getGeometryDetails) Feature type name is WKBPolygon Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3307: (getGeometryDetails) Geometry is geography Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3058: (deduceEndian) Creating binary cursor Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3364: (openCursor) Starting read-only transaction Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3063: (deduceEndian) Fetching a record and attempting to get check endian-ness Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3378: (closeCursor) Committing read-only transaction Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 1167: (getPrimaryKey) Getting unique index using 'select indkey from pg_index where indisunique and indrelid=regclass('"vranov"."v_budovy"')::oid and indpred is null' Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 1171: (getPrimaryKey) Got 2 rows. Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 1397: (getPrimaryKey) row key is id_cis_supisne_cisla Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 831: (loadFields) Loading fields for table v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsproviderregistry.cpp: 387: (getProvider) Instantiated the data provider plugin Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsproviderregistry.cpp: 388: (getProvider) provider name: postgres Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 2723: (setDataProvider) Instantiated the data provider plugin Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 2984: (extent) Got extents using: select extent("the_geom") from "vranov"."v_budovy" Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3001: (extent) Set extents to: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 2737: (setDataProvider) Extent of layer: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 2753: (setDataProvider) Beautifying layer name v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 2777: (setDataProvider) Beautified layer name v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 4330: (setCoordinateSystem) ----- Computing Coordinate System Debug: /tmp/buildd/qgis-1.7.4/src/core/qgscoordinatereferencesystem.cpp: 281: (loadFromDb) failed : select srs_id,description,projection_acronym,ellipsoid_acronym,parameters,srid,auth_name||':'||auth_id,is_geo from tbl_srs where srid='-1' Debug: /tmp/buildd/qgis-1.7.4/src/core/qgscoordinatereferencesystem.cpp: 836: (setMapUnits) Projection has linear units of Meter Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaplayer.cpp: 592: (loadNamedStyle) project fileName: /home/ivo Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaplayer.cpp: 538: (loadNamedStyleFromDb) Trying to load style for "dbname='gisdata' host=xen-dataserver port=5432 user='ivan.mincik' sslmode=disable key='id_cis_supisne_cisla' table="vranov"."v_budovy" (the_geom) sql=" from "/home/ivo/.qgis/qgis.qmldb" Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaplayer.cpp: 538: (loadNamedStyleFromDb) Trying to load style for "dbname='gisdata' host=xen-dataserver port=5432 user='ivan.mincik' sslmode=disable key='id_cis_supisne_cisla' table="vranov"."v_budovy" (the_geom) sql=" from "/usr/share/qgis/resources/qgis.qmldb" Debug: /tmp/buildd/qgis-1.7.4/src/app/legend/qgslegendlayer.cpp: 92: (QgsLegendLayer) Connecting signals for updating icons, layer v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 849: (updateFullExtent) Updating extent using v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 850: (updateFullExtent) Input extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 856: (updateFullExtent) Output extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 849: (updateFullExtent) Updating extent using v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 850: (updateFullExtent) Input extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 856: (updateFullExtent) Output extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapoverviewcanvas.cpp: 174: (drawExtentRect) panning: extent to widget: [-2147483648,-2147483648] [1x1] Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapcanvas.cpp: 320: (setLayerSet) Layers have changed, refreshing Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 849: (updateFullExtent) Updating extent using v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 850: (updateFullExtent) Input extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 856: (updateFullExtent) Output extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 194: (adjustExtentToSize) Map units per pixel (x,y) : 0.146723, 0.0584852 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 195: (adjustExtentToSize) Pixmap dimensions (x,y) : 1107, 864 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 196: (adjustExtentToSize) Extent dimensions (x,y) : 162.422, 50.5312 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 197: (adjustExtentToSize) -228017.6015625000000000,-1224009.2031250000000000 : -227855.1796875000000000,-1223958.6718750000000000 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsscalecalculator.cpp: 89: (calculate) Using conversionFactor of 39.3701 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 208: (adjustExtentToSize) Scale (assuming meters as map units) = 1:514.107 Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapoverviewcanvas.cpp: 174: (drawExtentRect) panning: extent to widget: [-2147483648,-2147483648] [1x1] Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 223: (render) ========== Rendering ========== Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 261: (render) Starting to render layer stack. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 345: (render) Rendering at layer item v_budovy20120611111051801 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 353: (render) If there is a QPaintEngine error here, it is caused by an emit call Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 364: (render) Rendering layer v_budovy Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 365: (render) Layer minscale 0 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 366: (render) Layer maxscale 1e+08 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 367: (render) Scale dep. visibility enabled? 0 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 368: (render) Input extent: -228013.7343750000000000,-1224008.0000000000000000 : -227859.0468750000000000,-1223959.8750000000000000 Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3364: (openCursor) Starting read-only transaction Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 660: (nextFeature) finished after 6 features Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 3378: (closeCursor) Committing read-only transaction Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 665: (nextFeature) feature count adjusted from -1 to 6 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 1119: (draw) Total features processed 6 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 498: (render) Layer rendered without issues Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 538: (render) Done rendering map layers Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 330: (drawLabels) Starting draw of labels Debug: /tmp/buildd/qgis-1.7.4/src/core/qgspallabeling.cpp: 991: (drawLabeling) LABELING work: 0 ms ... labels# 0 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgspallabeling.cpp: 1114: (drawLabeling) LABELING draw: 0 ms Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 616: (render) Rendering completed in (seconds): 0.013 Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: Empty Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: Empty Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapoverviewcanvas.cpp: 174: (drawExtentRect) panning: extent to widget: [-2147483648,-2147483648] [1x1] Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapcanvas.cpp: 320: (setLayerSet) Layers have changed, refreshing Debug: /tmp/buildd/qgis-1.7.4/src/app/legend/qgslegend.cpp: 239: (removeLayer) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: Empty Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapoverviewcanvas.cpp: 174: (drawExtentRect) panning: extent to widget: [-2147483648,-2147483648] [1x1] Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsvectorlayer.cpp: 182: (~QgsVectorLayer) entered. Debug: /tmp/buildd/qgis-1.7.4/src/providers/postgres/qgspostgresprovider.cpp: 198: (~QgsPostgresProvider) deconstructing. Warning: QMainWindow::saveState(): 'objectName' not set for QToolBar 0x9f8c068 'Buildings' Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 830: (updateFullExtent) called. Debug: /tmp/buildd/qgis-1.7.4/src/core/qgsmaprenderer.cpp: 887: (updateFullExtent) Full extent: Empty Debug: /tmp/buildd/qgis-1.7.4/src/gui/qgsmapoverviewcanvas.cpp: 174: (drawExtentRect) panning: extent to widget: [-2147483648,-2147483648] [1x1] Script done on Mon 11 Jun 2012 11:11:03 AM CEST
_______________________________________________ Qgis-developer mailing list Qgis-developer@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/qgis-developer