From c09af58244f1ebe258c71af2e7599e627a8ff223 Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Wed, 2 Dec 2015 09:19:39 +0100 Subject: [PATCH] oracle provider: fix geometry type/srid detection for queries --- .../oracle/ocispatial/qsql_ocispatial.cpp | 13 +++++++- src/providers/oracle/qgsoracleprovider.cpp | 30 +++++++++++-------- 2 files changed, 29 insertions(+), 14 deletions(-) diff --git a/src/providers/oracle/ocispatial/qsql_ocispatial.cpp b/src/providers/oracle/ocispatial/qsql_ocispatial.cpp index c1702cb24457..e681079ba4e6 100644 --- a/src/providers/oracle/ocispatial/qsql_ocispatial.cpp +++ b/src/providers/oracle/ocispatial/qsql_ocispatial.cpp @@ -3075,7 +3075,18 @@ int QOCISpatialResult::numRowsAffected() bool QOCISpatialResult::prepare( const QString& query ) { ENTER - qDebug() << "prepare(" << query << ")"; + + static int sDebugLevel = -1; + if ( sDebugLevel < 0 ) + { + if ( getenv( "QGIS_DEBUG" ) ) + sDebugLevel = atoi( getenv( "QGIS_DEBUG" ) ); + else + sDebugLevel = 0; + } + + if ( sDebugLevel >= 4 ) + qDebug() << "prepare(" << query << ")"; int r = 0; QSqlResult::prepare( query ); diff --git a/src/providers/oracle/qgsoracleprovider.cpp b/src/providers/oracle/qgsoracleprovider.cpp index dd3c6b42efa6..73bb085b8f61 100644 --- a/src/providers/oracle/qgsoracleprovider.cpp +++ b/src/providers/oracle/qgsoracleprovider.cpp @@ -2221,23 +2221,27 @@ bool QgsOracleProvider::getGeometryDetails() if ( detectedType == QGis::WKBUnknown || detectedSrid <= 0 ) { QgsOracleLayerProperty layerProperty; - layerProperty.ownerName = ownerName; - layerProperty.tableName = tableName; - layerProperty.geometryColName = mGeometryColumn; - layerProperty.types << detectedType; - layerProperty.srids << detectedSrid; - QString delim = ""; - - if ( !mSqlWhereClause.isEmpty() ) + if ( !mIsQuery ) { - layerProperty.sql += delim + "(" + mSqlWhereClause + ")"; - delim = " AND "; - } + layerProperty.ownerName = ownerName; + layerProperty.tableName = tableName; + layerProperty.geometryColName = mGeometryColumn; + layerProperty.types << detectedType; + layerProperty.srids << detectedSrid; + + QString delim = ""; - mConnection->retrieveLayerTypes( layerProperty, mUseEstimatedMetadata, false ); + if ( !mSqlWhereClause.isEmpty() ) + { + layerProperty.sql += delim + "(" + mSqlWhereClause + ")"; + delim = " AND "; + } + + mConnection->retrieveLayerTypes( layerProperty, mUseEstimatedMetadata, false ); - Q_ASSERT( layerProperty.types.size() == layerProperty.srids.size() ); + Q_ASSERT( layerProperty.types.size() == layerProperty.srids.size() ); + } if ( layerProperty.types.isEmpty() ) {