Skip to content

Commit

Permalink
oracle provider: fix geometry type/srid detection for queries
Browse files Browse the repository at this point in the history
  • Loading branch information
jef-n committed Dec 2, 2015
1 parent 7bab2e5 commit c09af58
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
13 changes: 12 additions & 1 deletion src/providers/oracle/ocispatial/qsql_ocispatial.cpp
Expand Up @@ -3075,7 +3075,18 @@ int QOCISpatialResult::numRowsAffected()
bool QOCISpatialResult::prepare( const QString& query ) bool QOCISpatialResult::prepare( const QString& query )
{ {
ENTER 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; int r = 0;
QSqlResult::prepare( query ); QSqlResult::prepare( query );
Expand Down
30 changes: 17 additions & 13 deletions src/providers/oracle/qgsoracleprovider.cpp
Expand Up @@ -2221,23 +2221,27 @@ bool QgsOracleProvider::getGeometryDetails()
if ( detectedType == QGis::WKBUnknown || detectedSrid <= 0 ) if ( detectedType == QGis::WKBUnknown || detectedSrid <= 0 )
{ {
QgsOracleLayerProperty layerProperty; QgsOracleLayerProperty layerProperty;
layerProperty.ownerName = ownerName;
layerProperty.tableName = tableName;
layerProperty.geometryColName = mGeometryColumn;
layerProperty.types << detectedType;
layerProperty.srids << detectedSrid;


QString delim = ""; if ( !mIsQuery )

if ( !mSqlWhereClause.isEmpty() )
{ {
layerProperty.sql += delim + "(" + mSqlWhereClause + ")"; layerProperty.ownerName = ownerName;
delim = " AND "; 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() ) if ( layerProperty.types.isEmpty() )
{ {
Expand Down

0 comments on commit c09af58

Please sign in to comment.