Hello list,<br><br>Filter encoding seems to suffer from a type problem with Postgis. I want to confirm the problem and check I don't miss something.<br><br>So my use case.<br>I have created a Postgis table.<br>The structure of the table starts with<br>
<br>
CREATE TABLE departement<br>
(<br>
gid serial NOT NULL,<br>
id_geofla numeric(10,0),<br>
code_dept character varying(2),<br>
nom_dept character varying(30),<br>
the_geom geometry,<br>....<br>
<br>
I use this postgis layer in a WFS webservices<br>A query like <a href="http://localhost/cgi-bin/mapserv?map=/home/test/SIG/france/mapfiles/mapfile_carte.map&REQUEST=GetFeature&SERVICE=WFS&VERSION=1.0.0&TYPENAME=departements&OUTPUT=gml">http://localhost/cgi-bin/mapserv?map=/home/test/SIG/france/mapfiles/mapfile_carte.map&REQUEST=GetFeature&SERVICE=WFS&VERSION=1.0.0&TYPENAME=departements&OUTPUT=gml</a> works.<br>
<br>When I use a filter like<br><a href="http://localhost/cgi-bin/mapserv?map=/home/test/SIG/france/mapfiles/mapfile_carte.map&REQUEST=GetFeature&SERVICE=WFS&VERSION=1.0.0&TYPENAME=departements&OUTPUT=gml&Filter=">http://localhost/cgi-bin/mapserv?map=/home/test/SIG/france/mapfiles/mapfile_carte.map&REQUEST=GetFeature&SERVICE=WFS&VERSION=1.0.0&TYPENAME=departements&OUTPUT=gml&Filter=</a><Filter><PropertyIsEqualTo><PropertyName>code_dept</PropertyName><Literal>01</Literal></PropertyIsEqualTo></Filter><br>
there is an error with the message below.<br><ServiceExceptionReport version="1.2.0" xmlns="<a href="http://www.opengis.net/ogc">http://www.opengis.net/ogc</a>" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:schemaLocation="<a href="http://www.opengis.net/ogc">http://www.opengis.net/ogc</a> <a href="http://schemas.opengis.net/wfs/1.0.0/OGC-exception.xsd">http://schemas.opengis.net/wfs/1.0.0/OGC-exception.xsd</a>"><br>
<ServiceException code="NoApplicableCode" locator="mapserv"><br>msWFSGetFeature(): WFS server error. FLTApplyFilterToLayer() failed msPostGISLayerWhichShapes(): Query error. Error (ERREUR: l'opérateur n'existe pas : character varying = integer LINE 1: ...d_srid('','departement','the_geom')) and ( (code_dept= 01) ) ^ HINT: Aucun opérateur ne correspond au nom donné et aux types d'arguments. Vous devez ajouter des conversions explicites de type. ) executing query: select "gid","id_geofla","code_dept","nom_dept",encode(AsBinary(force_collection(force_2d("the_geom")),'NDR'),'hex') as geom,"oid" from departement where the_geom && GeomFromText('POLYGON((-25000000 -25000000,-25000000 25000000,25000000 25000000,25000000 -25000000,-25000000 -25000000))',find_srid('','departement','the_geom')) and ( (code_dept= 01) ) <br>
</ServiceException><br></ServiceExceptionReport><br><br>It seems to come from cast : mapserver receives the parameter from the url but doesn't check type and considers the retrieved value as an integer (because there is no quotes)<br>
This problem occurs with Postgis but not with a shapefile (the same url works...). I've done some test with oid = true but nothing changes too<br><br>Regards<br><br>ThomasG<br>