Skip to content

Commit

Permalink
Support Unicode queries in QgsHanaFeatureIterator
Browse files Browse the repository at this point in the history
  • Loading branch information
Maksim Rylov authored and mrylov committed Dec 7, 2020
1 parent a33b6d7 commit da0dbf9
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
11 changes: 6 additions & 5 deletions src/providers/hana/qgshanafeatureiterator.cpp
Expand Up @@ -27,6 +27,7 @@
#include "qgssettings.h"

#include "odbc/Connection.h"
#include "odbc/Exception.h"
#include "odbc/PreparedStatement.h"
#include "odbc/ResultSet.h"

Expand Down Expand Up @@ -74,9 +75,9 @@ QgsHanaFeatureIterator::QgsHanaFeatureIterator(

try
{
QString sql = buildSQLStatement( request );
PreparedStatementRef stmt = mConnRef->getNativeRef()->prepareStatement( sql.toStdString().c_str() );
mSqlStatement = sql;
QString sql = buildSqlQuery( request );
PreparedStatementRef stmt = mConnRef->getNativeRef()->prepareStatement( reinterpret_cast<const char16_t *>( sql.unicode() ) );
mSqlQuery = sql;
mClosed = false;

rewind();
Expand All @@ -100,7 +101,7 @@ bool QgsHanaFeatureIterator::rewind()
return false;

mResultSet.reset();
PreparedStatementRef stmt = mConnRef->getNativeRef()->prepareStatement( mSqlStatement.toStdString().c_str() );
PreparedStatementRef stmt = mConnRef->getNativeRef()->prepareStatement( reinterpret_cast<const char16_t *>( mSqlQuery.unicode() ) );
mResultSet = QgsHanaResultSet::create( stmt );
return true;
}
Expand Down Expand Up @@ -214,7 +215,7 @@ bool QgsHanaFeatureIterator::prepareOrderBy( const QList<QgsFeatureRequest::Orde
return mOrderByCompiled;
}

QString QgsHanaFeatureIterator::buildSQLStatement( const QgsFeatureRequest &request )
QString QgsHanaFeatureIterator::buildSqlQuery( const QgsFeatureRequest &request )
{
bool limitAtProvider = ( mRequest.limit() >= 0 );
QgsRectangle filterRect = mFilterRect;
Expand Down
4 changes: 2 additions & 2 deletions src/providers/hana/qgshanafeatureiterator.h
Expand Up @@ -73,13 +73,13 @@ class QgsHanaFeatureIterator : public QgsAbstractFeatureIteratorFromSource<QgsHa
private:
bool prepareOrderBy( const QList<QgsFeatureRequest::OrderByClause> &orderBys ) override;

QString buildSQLStatement( const QgsFeatureRequest &request );
QString buildSqlQuery( const QgsFeatureRequest &request );
QString getBBOXFilter( const QgsRectangle &bbox, const QVersionNumber &dbVersion ) const;

private:
QgsHanaConnectionRef mConnRef;
QgsHanaResultSetRef mResultSet;
QString mSqlStatement = QString( "" );
QString mSqlQuery = QString( "" );
QgsRectangle mFilterRect;
QgsRectangle mSrsExtent;
QgsAttributeList mAttributesToFetch;
Expand Down

0 comments on commit da0dbf9

Please sign in to comment.