Skip to content

Commit

Permalink
fix oracle
Browse files Browse the repository at this point in the history
  • Loading branch information
elpaso authored and github-actions[bot] committed Jan 23, 2025
1 parent 889e0b9 commit ef17a61
Showing 1 changed file with 7 additions and 5 deletions.
12 changes: 7 additions & 5 deletions src/providers/oracle/qgsoracleproviderconnection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,8 @@ QgsVectorLayer *QgsOracleProviderConnection::createSqlVectorLayer( const QgsAbst
throw QgsProviderConnectionException( QObject::tr( "Could not create a SQL vector layer: SQL expression is empty." ) );
}

const QString optionsSql { sanitizeSqlForQueryLayer( options.sql ) };

QgsDataSourceUri tUri( uri() );

tUri.setSql( options.filter );
Expand All @@ -173,25 +175,25 @@ QgsVectorLayer *QgsOracleProviderConnection::createSqlVectorLayer( const QgsAbst
if ( !options.primaryKeyColumns.isEmpty() )
{
tUri.setKeyColumn( options.primaryKeyColumns.join( ',' ) );
tUri.setTable( QStringLiteral( "(%1)" ).arg( sanitizeSqlForQueryLayer( options.sql ) ) );
tUri.setTable( QStringLiteral( "(%1)" ).arg( optionsSql ) );
}
else
{
// Disable when there is no pk
tUri.setUseEstimatedMetadata( false );
int pkId { 0 };
while ( options.sql.contains( QStringLiteral( "qgis_generated_uid_%1_" ).arg( pkId ), Qt::CaseSensitivity::CaseInsensitive ) )
while ( optionsSql.contains( QStringLiteral( "qgis_generated_uid_%1_" ).arg( pkId ), Qt::CaseSensitivity::CaseInsensitive ) )
{
pkId++;
}
tUri.setKeyColumn( QStringLiteral( "qgis_generated_uid_%1_" ).arg( pkId ) );

int sqlId { 0 };
while ( options.sql.contains( QStringLiteral( "qgis_generated_subq_%1_" ).arg( sqlId ), Qt::CaseSensitivity::CaseInsensitive ) )
while ( optionsSql.contains( QStringLiteral( "qgis_generated_subq_%1_" ).arg( sqlId ), Qt::CaseSensitivity::CaseInsensitive ) )
{
sqlId++;
}
tUri.setTable( QStringLiteral( "(SELECT row_number() over (ORDER BY NULL) AS qgis_generated_uid_%1_, qgis_generated_subq_%3_.* FROM (%2\n) qgis_generated_subq_%3_\n)" ).arg( QString::number( pkId ), options.sql, QString::number( sqlId ) ) );
tUri.setTable( QStringLiteral( "(SELECT row_number() over (ORDER BY NULL) AS qgis_generated_uid_%1_, qgis_generated_subq_%3_.* FROM (%2\n) qgis_generated_subq_%3_\n)" ).arg( QString::number( pkId ), optionsSql, QString::number( sqlId ) ) );
}

if ( !options.geometryColumn.isEmpty() )
Expand All @@ -212,7 +214,7 @@ QgsVectorLayer *QgsOracleProviderConnection::createSqlVectorLayer( const QgsAbst
WHERE a.%1 IS NOT NULL %3
ORDER BY a.%1.SDO_GTYPE
)" )
.arg( options.geometryColumn, options.sql, limit ) };
.arg( options.geometryColumn, optionsSql, limit ) };
const QList<QList<QVariant>> candidates { executeSql( sql ) };
for ( const QList<QVariant> &row : std::as_const( candidates ) )
{
Expand Down

0 comments on commit ef17a61

Please sign in to comment.