[mapserver-dev] Call for discussion on MS RFC 114: Faster retrieval of shape count

Even Rouault even.rouault at spatialys.com
Wed Feb 10 02:41:18 PST 2016


Hi Steve,

> Hi Even: I take it that "the_normal_sql_query" could also include the
> translated filter described by a layers FILTER/FILTERITEM combo or the
> NATIVE_FILTER processing option, correct?

Hum, I was convinced that my implementation in the PostGIS driver already did 
that, but it didn't ! And by further checking, I also saw I missed that 
msQueryByFilter() could be called indirectly by the WFS code through 
FLTxxxxx().

Those 2 issues are now fixed with :
https://github.com/rouault/mapserver/commit/4557afed33f92d22c969282d22dacf027e5e7387
https://github.com/rouault/mapserver/commit/28354fe4bd5f5c3058a87ebc31d55ca7905388f3

I've also added new test cases in msautotest:
https://github.com/mapserver/msautotest/commit/05e8264ce737a795d81f1a87614fa5c87399de91

> 
> The only other gotcha is how (or if) to deal with class-level templates.
> The presence of a template is used to decide if a feature is to be
> processed as part of query operation and, in theory, if it should be
> counted. Typically one would configure a template at the LAYER-level but
> it's also possible to define CLASS-level templates. For example:
> 
> CLASSITEM 'column'
> CLASS
>   EXRESSION 'foo'
>   TEMPLATE 'void'
>   ...
> END
> CLASS
>   EXRESSION 'bar'
>   # no template
>   ...
> END
> 
> In this case you wouldn't know if you should count a feature until you know
> what CLASS it is. Granted this is an older configuration option that
> probably isn't widely used but it does exist. Perhaps it's currently
> broken anyway, I haven't tested. Just not sure how to deal with it.
> Perhaps it just needs to be noted as a configuration exception folks need
> to avoid when setting up WFS. I'd be happy to see that option removed in
> the next version - it adds unnecessary complexity to the query code. You
> can see the affect in msIsLayerQueryable() in mapquery.c  among other
> places in that source file.

I indeed see such stuff in msQueryByRect() and didn't know what it was supposed 
to do. In fact, the WFS code has always forced a dummy "ttt.html" layer 
template (if no layer template is defined), so class templates are de-facto 
unused in WFS (since the msQueryXXXX() functions do no test class templates if 
a layer template is defined). And the msLayerGetShapeCount() optimization path 
is only taken if a layer template is defined. So for non-WFS case, map-
>query.only_cache_result_count == 1 and class templates will still work as 
before.

I've modified the RFC with the above changes and precisions :
https://github.com/mapserver/docs/commit/76dfe8cb73c9c3de2f2e878e7c856dedc7a10c28

Thanks a lot for your very much appreciated input !

Unrelated note: my latest commit fails in renderers/wmsclient.map because
http://demo.mapserver.org/cgi-
bin/mapserv?map=/osgeo/mapserver/msautotest/world/world.map&service=WMS&request=GetCapabilities 
doesn't respond.

Even

> 
> Steve
> 
> -----Original Message-----
> From: mapserver-dev [mailto:mapserver-dev-bounces at lists.osgeo.org] On
> Behalf Of Even Rouault Sent: Monday, February 08, 2016 4:58 AM
> To: MapServer Dev Mailing List <mapserver-dev at lists.osgeo.org>
> Subject: [mapserver-dev] Call for discussion on MS RFC 114: Faster
> retrieval of shape count
> 
> Hi,
> 
> Your comments on the following RFC are welcome :
> http://mapserver.org/development/rfc/ms-rfc-114.html
> 
> Even

-- 
Spatialys - Geospatial professional services
http://www.spatialys.com


More information about the mapserver-dev mailing list