Skip to content

Commit

Permalink
Handle arrays in QgsExpression::quotedValue
Browse files Browse the repository at this point in the history
  • Loading branch information
arnaud-morvan committed Mar 22, 2017
1 parent 25fe2b0 commit eeb1283
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/core/qgsexpression.cpp
Expand Up @@ -4225,6 +4225,16 @@ QString QgsExpression::quotedValue( const QVariant &value, QVariant::Type type )
case QVariant::Bool:
return value.toBool() ? "TRUE" : "FALSE";

case QVariant::List:
{
QStringList quotedValues;
Q_FOREACH ( const QVariant &v, value.toList() )
{
quotedValues += quotedValue( v );
}
return QStringLiteral( "array( %1 )" ).arg( quotedValues.join( ", " ) );
}

default:
case QVariant::String:
return quotedString( value.toString() );
Expand Down
2 changes: 2 additions & 0 deletions tests/src/core/testqgsexpression.cpp
Expand Up @@ -2539,6 +2539,8 @@ class TestQgsExpression: public QObject
QCOMPARE( QgsExpression::quotedValue( QVariant( true ), QVariant::String ), QString( "'true'" ) );
QCOMPARE( QgsExpression::quotedValue( QVariant() ), QString( "NULL" ) );
QCOMPARE( QgsExpression::quotedValue( QVariant(), QVariant::String ), QString( "NULL" ) );
QVariantList array = QVariantList() << QVariant( 1 ) << QVariant( "a" ) << QVariant();
QCOMPARE( QgsExpression::quotedValue( array ), QString( "array( 1, 'a', NULL )" ) );
}

void reentrant()
Expand Down

0 comments on commit eeb1283

Please sign in to comment.