Skip to content

Commit eeb1283

Browse files
committed
Handle arrays in QgsExpression::quotedValue
1 parent 25fe2b0 commit eeb1283

File tree

2 files changed

+12
-0
lines changed

2 files changed

+12
-0
lines changed

src/core/qgsexpression.cpp

+10
Original file line numberDiff line numberDiff line change
@@ -4225,6 +4225,16 @@ QString QgsExpression::quotedValue( const QVariant &value, QVariant::Type type )
42254225
case QVariant::Bool:
42264226
return value.toBool() ? "TRUE" : "FALSE";
42274227

4228+
case QVariant::List:
4229+
{
4230+
QStringList quotedValues;
4231+
Q_FOREACH ( const QVariant &v, value.toList() )
4232+
{
4233+
quotedValues += quotedValue( v );
4234+
}
4235+
return QStringLiteral( "array( %1 )" ).arg( quotedValues.join( ", " ) );
4236+
}
4237+
42284238
default:
42294239
case QVariant::String:
42304240
return quotedString( value.toString() );

tests/src/core/testqgsexpression.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -2539,6 +2539,8 @@ class TestQgsExpression: public QObject
25392539
QCOMPARE( QgsExpression::quotedValue( QVariant( true ), QVariant::String ), QString( "'true'" ) );
25402540
QCOMPARE( QgsExpression::quotedValue( QVariant() ), QString( "NULL" ) );
25412541
QCOMPARE( QgsExpression::quotedValue( QVariant(), QVariant::String ), QString( "NULL" ) );
2542+
QVariantList array = QVariantList() << QVariant( 1 ) << QVariant( "a" ) << QVariant();
2543+
QCOMPARE( QgsExpression::quotedValue( array ), QString( "array( 1, 'a', NULL )" ) );
25422544
}
25432545

25442546
void reentrant()

0 commit comments

Comments
 (0)