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

Reply via email to