Hi,
Experiencing something not expected with the filter condition in mapfile.
I add this code in my mapFile to have the possibility to void the filter if no
parameter is given:
VALIDATION
no_diag '^[0-9]{1,2}$'
default_no_diag '0'
END
DATA "geom_surf from LOCTS_PARC_AGRI_AN_COUR using srid 4326"
FILTER (([no_diag]='%no_diag%') or ('%no_diag%' = '0'))
I compare my execution time without parameter and it’s going to an execution
time of 3 seconds before filter to one of 3 minutes with the filter.
After debugging, I realize that the « where clause » generated by MapServe were
bad with the filter and that generate a full table scan :
WHERE ( '0' = '0' ) OR ( no_diag = '0' ) AND …
I was expecting something more like :
WHERE (( '0' = '0' ) OR ( no_diag = '0' )) AND …
So I had to add more parenthesis to the filter to get it correct
((('%no_diag%' = '0') or ([no_diag]='%no_diag%')))
Is it normal that I have to do that? The examples I found on the internet, have
always single parenthesis. Do I code it right?
I use Mapserver 7 with database Oracle 12c. My parameter no_diag is a number.
Thanks
Michael Lane
Technicien en informatique
Direction des solutions d'affaires
La Financière agricole du Québec
1400, boul. Guillaume-Couture
Lévis (Québec) G6W 8K7
Tél. : 418 838-5614, poste 6034
[email protected]<mailto:[email protected]>
[cid:[email protected]]
[cid:[email protected]]
[cid:[email protected]]
_______________________________________________
mapserver-users mailing list
[email protected]
https://lists.osgeo.org/mailman/listinfo/mapserver-users