Skip to content

Commit

Permalink
oracle provider: verify existence of layer style table before trying …
Browse files Browse the repository at this point in the history
…to retrieve a style
  • Loading branch information
jef-n committed Jun 11, 2016
1 parent 1af74f7 commit 61eea86
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 22 deletions.
12 changes: 3 additions & 9 deletions src/providers/oracle/ocispatial/qsql_ocispatial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3163,9 +3163,7 @@ bool QOCISpatialResult::exec()
qOraWarning( "Unable to get statement type:", d->err );
setLastError( qMakeError( QCoreApplication::translate( "QOCISpatialResult",
"Unable to get statement type" ), QSqlError::StatementError, d->err ) );
#ifdef QOCISPATIAL_DEBUG
qDebug() << "lastQuery()" << lastQuery();
#endif
qWarning( "type retrieval failed with statement:%s", lastQuery().toLocal8Bit().constData() );
return false;
}

Expand All @@ -3189,9 +3187,7 @@ bool QOCISpatialResult::exec()
qOraWarning( "unable to bind value: ", d->err );
setLastError( qMakeError( QCoreApplication::translate( "QOCISpatialResult", "Unable to bind value" ),
QSqlError::StatementError, d->err ) );
#ifdef QOCISPATIAL_DEBUG
qDebug() << "lastQuery()" << lastQuery();
#endif
qWarning( "bind failed with statement:%s", lastQuery().toLocal8Bit().constData() );
return false;
}

Expand All @@ -3202,9 +3198,7 @@ bool QOCISpatialResult::exec()
qOraWarning( "unable to execute statement:", d->err );
setLastError( qMakeError( QCoreApplication::translate( "QOCISpatialResult",
"Unable to execute statement" ), QSqlError::StatementError, d->err ) );
#ifdef QOCISPATIAL_DEBUG
qDebug() << "lastQuery()" << lastQuery();
#endif
qWarning( "execution failed with statement:%s", lastQuery().toLocal8Bit().constData() );
return false;
}

Expand Down
32 changes: 19 additions & 13 deletions src/providers/oracle/qgsoracleprovider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3402,19 +3402,25 @@ QGISEXTERN QString loadStyle( const QString &uri, QString &errCause )
QSqlQuery qry( *conn );

QString style;
if ( !qry.exec( QString( "SELECT styleQML FROM ("
"SELECT styleQML"
" FROM layer_styles"
" WHERE f_table_catalog=%1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4"
" ORDER BY useAsDefault DESC"
") WHERE rownum=1" )
.arg( QgsOracleConn::quotedValue( dsUri.database() ) )
.arg( QgsOracleConn::quotedValue( dsUri.schema() ) )
.arg( QgsOracleConn::quotedValue( dsUri.table() ) )
.arg( QgsOracleConn::quotedValue( dsUri.geometryColumn() ) ) ) )
if ( !qry.exec( "SELECT COUNT(*) FROM user_tables WHERE table_name='LAYER_STYLES'" ) || !qry.next() || qry.value( 0 ).toInt() == 0 )
{
errCause = QObject::tr( "Unable layer style table not found [%1]" ).arg( qry.lastError().text() );
conn->disconnect();
return QString::null;
}
else if ( !qry.exec( QString( "SELECT styleQML FROM ("
"SELECT styleQML"
" FROM layer_styles"
" WHERE f_table_catalog=%1"
" AND f_table_schema=%2"
" AND f_table_name=%3"
" AND f_geometry_column=%4"
" ORDER BY useAsDefault DESC"
") WHERE rownum=1" )
.arg( QgsOracleConn::quotedValue( dsUri.database() ) )
.arg( QgsOracleConn::quotedValue( dsUri.schema() ) )
.arg( QgsOracleConn::quotedValue( dsUri.table() ) )
.arg( QgsOracleConn::quotedValue( dsUri.geometryColumn() ) ) ) )
{
errCause = QObject::tr( "Could not retrieve style [%1]" ).arg( qry.lastError().text() );
}
Expand Down

0 comments on commit 61eea86

Please sign in to comment.