diff --git a/src/core/qgssqliteexpressioncompiler.cpp b/src/core/qgssqliteexpressioncompiler.cpp index ee801c27537..803532385cd 100644 --- a/src/core/qgssqliteexpressioncompiler.cpp +++ b/src/core/qgssqliteexpressioncompiler.cpp @@ -92,7 +92,12 @@ static const QMap& functionNamesSqlFunctionsMap() fnNames = { { "abs", "abs" }, - { "round", "round" } + { "char", "char" }, + { "coalesce", "coalesce" }, + { "lower", "lower" }, + { "round", "round" }, + { "trim", "trim" }, + { "upper", "upper" }, }; } return fnNames; diff --git a/src/providers/postgres/qgspostgresexpressioncompiler.cpp b/src/providers/postgres/qgspostgresexpressioncompiler.cpp index 3fabf4aab65..d4ffa4a27d1 100644 --- a/src/providers/postgres/qgspostgresexpressioncompiler.cpp +++ b/src/providers/postgres/qgspostgresexpressioncompiler.cpp @@ -102,7 +102,12 @@ static const QMap& functionNamesSqlFunctionsMap() { "union", "ST_Union" }, #endif { "geom_from_wkt", "ST_GeomFromText" }, - { "geom_from_gml", "ST_GeomFromGML" } + { "geom_from_gml", "ST_GeomFromGML" }, + { "char", "chr" }, + { "coalesce", "coalesce" }, + { "lower", "lower" }, + { "trim", "trim" }, + { "upper", "upper" }, }; } return fnNames; diff --git a/tests/src/python/providertestbase.py b/tests/src/python/providertestbase.py index 9490feef470..8309ccd968e 100644 --- a/tests/src/python/providertestbase.py +++ b/tests/src/python/providertestbase.py @@ -252,6 +252,11 @@ class ProviderTestCase(object): self.assert_query(provider, 'floor(cnt / 66.67) <= 2', [1, 2, 5]) self.assert_query(provider, 'ceil(cnt / 66.67) <= 2', [1, 5]) self.assert_query(provider, 'pk < pi() / 2', [1]) + self.assert_query(provider, 'pk = char(51)', [3]) + self.assert_query(provider, 'pk = coalesce(NULL,3,4)', [3]) + self.assert_query(provider, 'lower(name) = \'apple\'', [2]) + self.assert_query(provider, 'upper(name) = \'APPLE\'', [2]) + self.assert_query(provider, 'name = trim(\' Apple \')', [2]) # geometry # azimuth and touches tests are deactivated because they do not pass for WFS provider diff --git a/tests/src/python/test_provider_shapefile.py b/tests/src/python/test_provider_shapefile.py index 7b11b42a68a..c6f876562d7 100644 --- a/tests/src/python/test_provider_shapefile.py +++ b/tests/src/python/test_provider_shapefile.py @@ -155,6 +155,11 @@ class TestPyQgsShapefileProvider(unittest.TestCase, ProviderTestCase): 'floor(cnt / 66.67) <= 2', 'ceil(cnt / 66.67) <= 2', 'pk < pi() / 2', + 'pk = char(51)', + 'pk = coalesce(NULL,3,4)', + 'lower(name) = \'apple\'', + 'upper(name) = \'APPLE\'', + 'name = trim(\' Apple \')', 'x($geometry) < -70', 'y($geometry) > 70', 'xmin($geometry) < -70',