Skip to content

Commit

Permalink
Update HANA provider to latest changes in master
Browse files Browse the repository at this point in the history
  • Loading branch information
mrylov committed Dec 7, 2020
1 parent f9f316c commit 3885fe6
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 13 deletions.
8 changes: 4 additions & 4 deletions src/providers/hana/qgshanaprovider.cpp
Expand Up @@ -241,8 +241,8 @@ const QString QgsHanaProvider::HANA_DESCRIPTION = QStringLiteral( "HANA spatial

QgsHanaProvider::QgsHanaProvider(
const QString &uri,
const ProviderOptions &options )
: QgsVectorDataProvider( uri, options )
const ProviderOptions &options, QgsDataProvider::ReadFlags flags )
: QgsVectorDataProvider( uri, options, flags )
, mUri( uri )
, mFeaturesCount( -1 )
{
Expand Down Expand Up @@ -1601,9 +1601,9 @@ void QgsHanaProviderMetadata::cleanupProvider()
}

QgsHanaProvider *QgsHanaProviderMetadata::createProvider(
const QString &uri, const QgsDataProvider::ProviderOptions &options )
const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags )
{
return new QgsHanaProvider( uri, options );
return new QgsHanaProvider( uri, options, flags );
}

QList< QgsDataItemProvider *> QgsHanaProviderMetadata::dataItemProviders() const
Expand Down
5 changes: 3 additions & 2 deletions src/providers/hana/qgshanaprovider.h
Expand Up @@ -55,7 +55,8 @@ class QgsHanaProvider final : public QgsVectorDataProvider
static const QString HANA_KEY;
static const QString HANA_DESCRIPTION;

QgsHanaProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options );
QgsHanaProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options,
QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
~QgsHanaProvider() override;

/* Functions inherited from QgsVectorDataProvider */
Expand Down Expand Up @@ -181,7 +182,7 @@ class QgsHanaProviderMetadata : public QgsProviderMetadata

void cleanupProvider() override;

QgsHanaProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options ) override;
QgsHanaProvider *createProvider( const QString &uri, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() ) override;

QgsVectorLayerExporter::ExportError createEmptyLayer(
const QString &uri,
Expand Down
18 changes: 14 additions & 4 deletions src/providers/hana/qgshanaproviderconnection.cpp
Expand Up @@ -203,15 +203,22 @@ void QgsHanaProviderConnection::renameSchema( const QString &name, const QString
.arg( QgsHanaUtils::quotedIdentifier( name ), QgsHanaUtils::quotedIdentifier( newName ) ) );
}

QList<QVariantList> QgsHanaProviderConnection::executeSql( const QString &sql ) const
QList<QVariantList> QgsHanaProviderConnection::executeSql( const QString &sql, QgsFeedback *feedback ) const
{
checkCapability( Capability::ExecuteSql );

// Check feedback first!
if ( feedback && feedback->isCanceled() )
return QList<QVariantList>();

const QgsDataSourceUri dsUri { uri() };
QgsHanaConnectionRef conn( dsUri );
if ( conn.isNull() )
throw QgsProviderConnectionException( QObject::tr( "Connection failed: %1" ).arg( uri() ) );

if ( feedback && feedback->isCanceled() )
return QList<QVariantList>();

bool isQuery = false;

try
Expand All @@ -225,15 +232,15 @@ QList<QVariantList> QgsHanaProviderConnection::executeSql( const QString &sql )
}

if ( isQuery )
return executeSqlQuery( *conn, sql );
return executeSqlQuery( *conn, sql, feedback );
else
{
executeSqlStatement( sql );
executeSqlStatement( *conn, sql );
return QList<QVariantList>();
}
}

QList<QVariantList> QgsHanaProviderConnection::executeSqlQuery( QgsHanaConnection &conn, const QString &sql ) const
QList<QVariantList> QgsHanaProviderConnection::executeSqlQuery( QgsHanaConnection &conn, const QString &sql, QgsFeedback *feedback ) const
{
QList<QVariantList> results;

Expand All @@ -243,6 +250,9 @@ QList<QVariantList> QgsHanaProviderConnection::executeSqlQuery( QgsHanaConnectio
const unsigned short nColumns = resultSet->getMetadata().getColumnCount();
while ( resultSet->next() )
{
if ( feedback && feedback->isCanceled() )
break;

QVariantList row;
for ( unsigned short i = 1; i <= nColumns; ++i )
row.push_back( resultSet->getValue( i ) );
Expand Down
4 changes: 2 additions & 2 deletions src/providers/hana/qgshanaproviderconnection.h
Expand Up @@ -40,7 +40,7 @@ class QgsHanaProviderConnection : public QgsAbstractDatabaseProviderConnection
void createSchema( const QString &name ) const override;
void dropSchema( const QString &name, bool force = false ) const override;
void renameSchema( const QString &name, const QString &newName ) const override;
QList<QVariantList> executeSql( const QString &sql ) const override;
QList<QVariantList> executeSql( const QString &sql, QgsFeedback *feedback = nullptr ) const override;
QList<QgsAbstractDatabaseProviderConnection::TableProperty> tables( const QString &schema,
const TableFlags &flags = nullptr ) const override;
QStringList schemas( ) const override;
Expand All @@ -50,7 +50,7 @@ class QgsHanaProviderConnection : public QgsAbstractDatabaseProviderConnection
QList<QgsVectorDataProvider::NativeType> nativeTypes() const override;

private:
QList<QVariantList> executeSqlQuery( QgsHanaConnection &conn, const QString &sql ) const;
QList<QVariantList> executeSqlQuery( QgsHanaConnection &conn, const QString &sql, QgsFeedback *feedback = nullptr ) const;
void executeSqlStatement( QgsHanaConnection &conn, const QString &sql ) const;
void executeSqlStatement( const QString &sql ) const;
void setCapabilities();
Expand Down
2 changes: 1 addition & 1 deletion tests/src/python/test_qgsproviderconnection_base.py
Expand Up @@ -414,7 +414,7 @@ def test_native_types(self):
native_types = conn.nativeTypes()
names = [nt.mTypeName.lower() for nt in native_types]
self.assertTrue('integer' in names or 'decimal' in names, names)
self.assertTrue('string' in names or 'text' in names, names)
self.assertTrue('string' in names or 'text' in names or 'nvarchar' in names, names)

def testExecuteSqlCancel(self):
"""Test that feedback can cancel an executeSql query"""
Expand Down

0 comments on commit 3885fe6

Please sign in to comment.