From f99310839a1e3895b6131e671f4ff9bf45ee3aee Mon Sep 17 00:00:00 2001 From: Sandro Santilli Date: Thu, 17 Oct 2019 12:10:54 +0200 Subject: [PATCH] When requesting a specific type/srid don't try to detect its validity Avoids double-checking from browser and data selector See #32276 --- src/providers/postgres/qgspostgresprovider.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/providers/postgres/qgspostgresprovider.cpp b/src/providers/postgres/qgspostgresprovider.cpp index da386dc8a29..3da95c74534 100644 --- a/src/providers/postgres/qgspostgresprovider.cpp +++ b/src/providers/postgres/qgspostgresprovider.cpp @@ -3534,7 +3534,7 @@ bool QgsPostgresProvider::getGeometryDetails() } } - QString detectedType; + QString detectedType = mRequestedGeomType == QgsWkbTypes::Unknown ? QString() : QgsPostgresConn::postgisWkbTypeName( mRequestedGeomType ); QString detectedSrid = mRequestedSrid; if ( !schemaName.isEmpty() ) { @@ -3550,14 +3550,17 @@ bool QgsPostgresProvider::getGeometryDetails() if ( result.PQntuples() == 1 ) { - detectedType = result.PQgetvalue( 0, 0 ); + QString dt = result.PQgetvalue( 0, 0 ); + if ( dt != "GEOMETRY" ) detectedType = dt; + QString dim = result.PQgetvalue( 0, 2 ); if ( dim == QLatin1String( "3" ) && !detectedType.endsWith( 'M' ) ) detectedType += QLatin1String( "Z" ); else if ( dim == QLatin1String( "4" ) ) detectedType += QLatin1String( "ZM" ); - detectedSrid = result.PQgetvalue( 0, 1 ); + QString ds = result.PQgetvalue( 0, 1 ); + if ( ds != "0" ) detectedSrid = ds; mSpatialColType = SctGeometry; } else @@ -3579,8 +3582,10 @@ bool QgsPostgresProvider::getGeometryDetails() if ( result.PQntuples() == 1 ) { - detectedType = result.PQgetvalue( 0, 0 ); - detectedSrid = result.PQgetvalue( 0, 1 ); + QString dt = result.PQgetvalue( 0, 0 ); + if ( dt != "GEOMETRY" ) detectedType = dt; + QString ds = result.PQgetvalue( 0, 1 ); + if ( ds != "0" ) detectedSrid = ds; mSpatialColType = SctGeography; } else