Skip to content

Commit

Permalink
Avoid some detaches in SAP provider
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jan 28, 2021
1 parent 02610c9 commit a323b36
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 11 deletions.
7 changes: 4 additions & 3 deletions src/providers/hana/qgshanaconnection.cpp
Expand Up @@ -498,7 +498,7 @@ QVector<QgsHanaLayerProperty> QgsHanaConnection::getLayers(
continue;
if ( layersCount == 1 )
{
QgsHanaLayerProperty firstLayer = layers.values( layerKey )[0];
QgsHanaLayerProperty firstLayer = layers.values( layerKey ).value( 0 );
if ( firstLayer.geometryColName.isEmpty() )
layers.remove( layerKey );
}
Expand All @@ -523,13 +523,14 @@ QVector<QgsHanaLayerProperty> QgsHanaConnection::getLayers(
}

QVector<QgsHanaLayerProperty> list;
for ( const QPair<QString, QString> &key : layers.uniqueKeys() )
const auto uniqueKeys = layers.uniqueKeys();
for ( const QPair<QString, QString> &key : uniqueKeys )
{
QList<QgsHanaLayerProperty> values = layers.values( key );
if ( values.size() == 1 )
values[0].isUnique = true;

for ( const QgsHanaLayerProperty &lp : values )
for ( const QgsHanaLayerProperty &lp : qgis::as_const( values ) )
list << lp;
}

Expand Down
4 changes: 2 additions & 2 deletions src/providers/hana/qgshanafeatureiterator.cpp
Expand Up @@ -200,7 +200,7 @@ bool QgsHanaFeatureIterator::fetchFeature( QgsFeature &feature )
// Read attributes
if ( mHasAttributes )
{
for ( int idx : mAttributesToFetch )
for ( int idx : qgis::as_const( mAttributesToFetch ) )
{
feature.setAttribute( idx, mResultSet->getValue( paramIndex ) );
++paramIndex;
Expand Down Expand Up @@ -342,7 +342,7 @@ QString QgsHanaFeatureIterator::buildSqlQuery( const QgsFeatureRequest &request
sqlFields.push_back( QgsHanaUtils::quotedIdentifier( fieldName ) );
}

for ( int idx : attrIds )
for ( int idx : qgis::as_const( attrIds ) )
{
if ( mSource->mPrimaryKeyAttrs.contains( idx ) )
continue;
Expand Down
4 changes: 2 additions & 2 deletions src/providers/hana/qgshanaprovider.cpp
Expand Up @@ -648,7 +648,7 @@ bool QgsHanaProvider::addFeatures( QgsFeatureList &flist, Flags flags )
{
if ( mPrimaryKeyType == PktInt )
{
feature.setId( QgsHanaPrimaryKeyUtils::intToFid( attrs.at( mPrimaryKeyAttrs[ 0 ] ).toInt() ) );
feature.setId( QgsHanaPrimaryKeyUtils::intToFid( attrs.at( mPrimaryKeyAttrs.value( 0 ) ).toInt() ) );
}
else
{
Expand Down Expand Up @@ -1424,7 +1424,7 @@ void QgsHanaProvider::determinePrimaryKey()
if ( mPrimaryKeyAttrs.size() == 1 )
{
//primary keys are unique, not null
QgsFieldConstraints constraints = mAttributeFields.at( mPrimaryKeyAttrs[0] ).constraints();
QgsFieldConstraints constraints = mAttributeFields.at( mPrimaryKeyAttrs.value( 0 ) ).constraints();
constraints.setConstraint( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintOriginProvider );
constraints.setConstraint( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider );
mAttributeFields[ mPrimaryKeyAttrs[0] ].setConstraints( constraints );
Expand Down
2 changes: 1 addition & 1 deletion src/providers/hana/qgshanasettings.cpp
Expand Up @@ -66,7 +66,7 @@ void QgsHanaSettings::setFromDataSourceUri( const QgsDataSourceUri &uri )
mSslKeyStore = QString();
mSslTrustStore = QString();
if ( uri.hasParam( QStringLiteral( "sslEnabled" ) ) )
mSslEnabled = QVariant( uri.param( "sslEnabled" ) ).toBool();
mSslEnabled = QVariant( uri.param( QStringLiteral( "sslEnabled" ) ) ).toBool();
if ( uri.hasParam( QStringLiteral( "sslCryptoProvider" ) ) )
mSslCryptoProvider = uri.param( QStringLiteral( "sslCryptoProvider" ) );
if ( uri.hasParam( QStringLiteral( "sslValidateCertificate" ) ) )
Expand Down
6 changes: 3 additions & 3 deletions src/providers/hana/qgshanautils.cpp
Expand Up @@ -134,11 +134,11 @@ QString QgsHanaUtils::toConstant( const QVariant &value, QVariant::Type type )
case QVariant::String:
return QgsHanaUtils::quotedString( value.toString() );
case QVariant::Date:
return QStringLiteral( "date'%1'" ).arg( value.toDate().toString( "yyyy-MM-dd" ) );
return QStringLiteral( "date'%1'" ).arg( value.toDate().toString( QStringLiteral( "yyyy-MM-dd" ) ) );
case QVariant::DateTime:
return QStringLiteral( "timestamp'%1'" ).arg( value.toDateTime().toString( "yyyy-MM-dd hh:mm:ss.zzz" ) );
return QStringLiteral( "timestamp'%1'" ).arg( value.toDateTime().toString( QStringLiteral( "yyyy-MM-dd hh:mm:ss.zzz" ) ) );
case QVariant::Time:
return QStringLiteral( "time'%1'" ).arg( value.toTime().toString( "hh:mm:ss.zzz" ) );
return QStringLiteral( "time'%1'" ).arg( value.toTime().toString( QStringLiteral( "hh:mm:ss.zzz" ) ) );
case QVariant::ByteArray:
return QStringLiteral( "x'%1'" ).arg( QString( value.toByteArray().toHex() ) );
default:
Expand Down

0 comments on commit a323b36

Please sign in to comment.