Navigation Menu

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 )
{
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 );
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 )
{
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() )
{
Expand Down

0 comments on commit c09af58

Please sign in to comment.