Skip to content

Commit 8dec70c

Browse files
committed
[mssql] Small fixes to expression compilation
- Use [] to correctly quote field names instead of "" - Don't invalidate provider side limit when not required
1 parent db86b73 commit 8dec70c

File tree

3 files changed

+12
-2
lines changed

3 files changed

+12
-2
lines changed

src/providers/mssql/qgsmssqlexpressioncompiler.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,12 @@ QString QgsMssqlExpressionCompiler::quotedValue( const QVariant& value, bool& ok
7777
return QgsSqlExpressionCompiler::quotedValue( value, ok );
7878
}
7979
}
80+
81+
QString QgsMssqlExpressionCompiler::quotedIdentifier( const QString &identifier )
82+
{
83+
QString quoted = identifier;
84+
quoted.replace( '[', "[[" );
85+
quoted.replace( ']', "]]" );
86+
quoted = quoted.prepend( '[' ).append( ']' );
87+
return quoted;
88+
}

src/providers/mssql/qgsmssqlexpressioncompiler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class QgsMssqlExpressionCompiler : public QgsSqlExpressionCompiler
2929
protected:
3030
virtual Result compileNode( const QgsExpression::Node* node, QString& result ) override;
3131
virtual QString quotedValue( const QVariant& value, bool& ok ) override;
32+
virtual QString quotedIdentifier( const QString& identifier ) override;
3233

3334
};
3435

src/providers/mssql/qgsmssqlfeatureiterator.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ void QgsMssqlFeatureIterator::BuildStatement( const QgsFeatureRequest& request )
109109
mStatement += QString( ",[%1]" ).arg( mSource->mGeometryColName );
110110
}
111111

112-
mStatement += QString( "FROM [%1].[%2]" ).arg( mSource->mSchemaName, mSource->mTableName );
112+
mStatement += QString( " FROM [%1].[%2]" ).arg( mSource->mSchemaName, mSource->mTableName );
113113

114114
bool filterAdded = false;
115115
// set spatial filter
@@ -247,7 +247,7 @@ void QgsMssqlFeatureIterator::BuildStatement( const QgsFeatureRequest& request )
247247
mOrderByCompiled = false;
248248
}
249249

250-
if ( !mOrderByCompiled )
250+
if ( !mOrderByCompiled && !request.orderBy().isEmpty() )
251251
limitAtProvider = false;
252252

253253
if ( request.limit() >= 0 && limitAtProvider )

0 commit comments

Comments
 (0)