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:
-
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.
-
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.
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.savolainen@anonymised.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.