Filter in Mapserver 4.10.0

Daniel Morissette dmorissette at MAPGEARS.COM
Tue Oct 24 11:25:03 EDT 2006


Can you please create a bug and add a note to the 4.10 HISTORY.TXT about 
this... the users will thank you.

Daniel


Steve Lime wrote:
> Ok, found and fixed the problem. It wasn't an issue with the lexer changes Paul refers to
> rather an issue with some cleanup done in loadExpressionString in mapfile.c. I made a 
> mistake and let the lexer check for simple expression strings when in reality that's should
> be the default case if an expression is not a regex, logical or case insensitive. 
> 
> I have fixed in both 4.10 and 5.0 if anyone would care to confirm...
> 
> Steve
> 
>>>> Steve Lime <Steve.Lime at DNR.STATE.MN.US> 10/23/06 12:33 PM >>>
> Will look into it...
> 
> Steve
> 
>>>> Paul Ramsey <pramsey at REFRACTIONS.NET> 10/19/2006 2:59:10 PM >>>
> I assume this traces back to this commit:
> ----------------------------
> revision 1.101
> date: 2006/08/15 06:18:49;  author: sdlime;  state: Exp;  lines: +5 -34
> Simplified quoted string rules in maplexer.l, just or'd together the  
> single and
> double qoute regular expressions. Updated include detection to  
> support single
> quotes as well.
> 
> 
> On 19-Oct-06, at 12:21 PM, Andreas Albarello wrote:
> 
>> Sture Dingsøyr wrote:
>>> The code below fails:
>>> $poLayer = $mapObject->getLayerByName($layerId[$i]);
>>> $poLayer->set("status", 1);			
>>> $poLayer->setFilter("navn = 'Fjaler'");
>>> I get this error message:
>>> DECLARE mycursor BINARY CURSOR FOR SELECT asbinary(force_collection 
>>> (force_2d(the_geom)),'NDR'),gid::text from (SELECT * FROM  
>>> n2000ko_f) AS n2000ko_f WHERE (navn = ) and (the_geom && setSRID 
>>> ( 'BOX3D(-647132 6410334.17468806,1689132  
>>> 7988665.82531194)'::BOX3D,32633) )
>> Sture,
>>
>> I've experienced exactly the same problem with Mapserver 4.10.0.  
>> Don't know if this should be considered a bug, but it is a  
>> backwards compatibility issue with existing mapscript applications  
>> at least. I believe this behavior has been caused by some recent  
>> changes to the mapfile lexer.
>>
>> There's however a workaround for this. The following should do the  
>> trick:
>>
>> $poLayer->setFilter("\"navn = 'Fjaler'\"");
>>
>> Best regards,
>> -- 
>> --------------------------------------------------------------------
>> Andreas Albarello
>> Analysis & SW Development
>>
>> Territorium Online srl/GmbH
>> Via Buozzi/Buozzistraße 12 - I 39100 Bolzano/Bozen
>> email: andreas.albarello at territoriumonline.com 
>> web:   www.territoriumonline.com 
>> --------------------------------------------------------------------


-- 
Daniel Morissette
http://www.mapgears.com/



More information about the mapserver-dev mailing list