Hi,

Jody and I have been discussing my pull request on cascaded stored requests
and we'd like to open another point to wider debate.

This is regarding Jody's notes on this test case:
https://github.com/geoserver/geoserver/pull/841#discussion-diff-21495146

Some background: my implementation of cascaded stored query passes stored
query parameters to the backend via two mechanisms:

   1. The original request to the feature type backed by a cascaded stored
   query may include view parameters, just like with Virtual Table backed
   feature types.
   2. Feature type configuration may specify mappings to the parameters.

There are a two types of mappings possible in the implementation. You can
either specify a default value (two flavours: one you can override with a
view parameter and another you can't), or the parameter value can be
evaluated from an expression. The discussion here is regarding these
expressions.

The expressions are written in CQL and are executed within a context where
the query filter, basic feature type information and the query bounds are
accessible. A stored query that my work specifically targets has a bounding
box parameter that needs to be derived from this context. I used
expressions instead of a hard-coded bounding box type parameter mapping to
make the implementation more general.

When I wrote the CQL expression parts, I was only aware of a single
concatenation function in CQL, strConCat. This function only takes two
parameters and both must be strings. So as you can see in the test
referenced by the diff, the expression to build a bounding box becomes
quite a mess. To avoid this, I overrode the + operator for these
expressions so it does string concatenation if either the left hand side or
right hand side values were strings.

https://github.com/geotools/geotools/blob/master/modules/unsupported/wfs-ng/src/main/java/org/geotools/data/wfs/internal/v2_0/storedquery/ParameterCQLExpressionFilterFactoryImpl.java#L104

However, Jody led me on to the fact that there is a multi-parameter
concatenation function in CQL.

Now the question is: should I remove the overridden + operator and go with
the standard concatenation function?


Also: I was unable to find reference documentation on this concatenation
function. Maybe someone knows where it is so I can check it? Especially
whether it allows combining numbers and strings is of interest.


  Sampo



-- 
Sampo Savolainen
R&D Director, Spatineo Oy
sampo.savolai...@spatineo.com
+358-407555649
Linnankoskenkatu 16 A 17, 00250 Helsinki, Finland
www.spatineo.com, twitter.com/#!/spatineo
www.linkedin.com/company/spatineo-inc

This message may contain privileged and/or confidential information. If you
have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate, or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.
------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk
_______________________________________________
Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Reply via email to