Skip to content

Commit

Permalink
Compile some string functions
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jan 3, 2017
1 parent 30f498f commit 57917ab
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 2 deletions.
7 changes: 6 additions & 1 deletion src/core/qgssqliteexpressioncompiler.cpp
Expand Up @@ -92,7 +92,12 @@ static const QMap<QString, QString>& functionNamesSqlFunctionsMap()
fnNames =
{
{ "abs", "abs" },
{ "round", "round" }
{ "char", "char" },
{ "coalesce", "coalesce" },
{ "lower", "lower" },
{ "round", "round" },
{ "trim", "trim" },
{ "upper", "upper" },
};
}
return fnNames;
Expand Down
7 changes: 6 additions & 1 deletion src/providers/postgres/qgspostgresexpressioncompiler.cpp
Expand Up @@ -102,7 +102,12 @@ static const QMap<QString, QString>& 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;
Expand Down
5 changes: 5 additions & 0 deletions tests/src/python/providertestbase.py
Expand Up @@ -252,6 +252,11 @@ def runGetFeatureTests(self, provider):
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
Expand Down
5 changes: 5 additions & 0 deletions tests/src/python/test_provider_shapefile.py
Expand Up @@ -155,6 +155,11 @@ def uncompiledFilters(self):
'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',
Expand Down

0 comments on commit 57917ab

Please sign in to comment.