Skip to content

Commit 57917ab

Browse files
committed
Compile some string functions
1 parent 30f498f commit 57917ab

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

src/core/qgssqliteexpressioncompiler.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,12 @@ static const QMap<QString, QString>& functionNamesSqlFunctionsMap()
9292
fnNames =
9393
{
9494
{ "abs", "abs" },
95-
{ "round", "round" }
95+
{ "char", "char" },
96+
{ "coalesce", "coalesce" },
97+
{ "lower", "lower" },
98+
{ "round", "round" },
99+
{ "trim", "trim" },
100+
{ "upper", "upper" },
96101
};
97102
}
98103
return fnNames;

src/providers/postgres/qgspostgresexpressioncompiler.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,12 @@ static const QMap<QString, QString>& functionNamesSqlFunctionsMap()
102102
{ "union", "ST_Union" },
103103
#endif
104104
{ "geom_from_wkt", "ST_GeomFromText" },
105-
{ "geom_from_gml", "ST_GeomFromGML" }
105+
{ "geom_from_gml", "ST_GeomFromGML" },
106+
{ "char", "chr" },
107+
{ "coalesce", "coalesce" },
108+
{ "lower", "lower" },
109+
{ "trim", "trim" },
110+
{ "upper", "upper" },
106111
};
107112
}
108113
return fnNames;

tests/src/python/providertestbase.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,11 @@ def runGetFeatureTests(self, provider):
252252
self.assert_query(provider, 'floor(cnt / 66.67) <= 2', [1, 2, 5])
253253
self.assert_query(provider, 'ceil(cnt / 66.67) <= 2', [1, 5])
254254
self.assert_query(provider, 'pk < pi() / 2', [1])
255+
self.assert_query(provider, 'pk = char(51)', [3])
256+
self.assert_query(provider, 'pk = coalesce(NULL,3,4)', [3])
257+
self.assert_query(provider, 'lower(name) = \'apple\'', [2])
258+
self.assert_query(provider, 'upper(name) = \'APPLE\'', [2])
259+
self.assert_query(provider, 'name = trim(\' Apple \')', [2])
255260

256261
# geometry
257262
# azimuth and touches tests are deactivated because they do not pass for WFS provider

tests/src/python/test_provider_shapefile.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,11 @@ def uncompiledFilters(self):
155155
'floor(cnt / 66.67) <= 2',
156156
'ceil(cnt / 66.67) <= 2',
157157
'pk < pi() / 2',
158+
'pk = char(51)',
159+
'pk = coalesce(NULL,3,4)',
160+
'lower(name) = \'apple\'',
161+
'upper(name) = \'APPLE\'',
162+
'name = trim(\' Apple \')',
158163
'x($geometry) < -70',
159164
'y($geometry) > 70',
160165
'xmin($geometry) < -70',

0 commit comments

Comments
 (0)