Hi,
About crazy talks, what our hardcore Oracle developers do first when they face
problems with efficiency is to start writing some PL/SQL procedures which they
then tune until they are satisfied (of when we say that we have paid enough).
Unfortunately Geoserver can't utilize those fancy creatures at the moment. It
feels to me that they belong logically to the same category than the stored
queries in WFS 2.0 so perhaps Geoserver could support them someday.
-Jukka Rahkonen-
________________________________
Martin Davis wrote:
Now who's talking crazy! :)
+0 on using a full templating language. Seems perhaps a bit of overkill for
the immediate need? The "macro language" already discussed would suffice for
the immediate need I think?
Whatever the syntax used, it seems like the solution has to:
- allow altering the geometry column expression based on whether the context is
a WMS rendering request or something else (data request, preliminary scan for
query schema, etc)
- avoid adding an extra spatial filter if one is already provided (or
alternatively, add it in such a way that the DB doesn't squawk)
To take another slant on this, I realized that the source of the problem is
that for SQL views the "custom SQL" is wrapped in parens before the WMS bbox
filter condition is appended to it. This is what's causing the DB to complain
that the geometry column expression doesn't have an index. If there was a way
to avoid using the parens that would solve the problem nicely (there would be
no need for any macros in the user-supplied SQL, they could use any expression
around the GEOMETRY column (renaming it to GEOMETRY) and they wouldn't have to
supply their own bbox filter condition. One issue is deciding how to append
the bbox condition - it would be necessary to know whether or not a WHERE
clause was already present. This could perhaps be determined by a flag
supplied by the user.
On Wed, Mar 11, 2015 at 9:22 PM, Andrea Aime
<andrea.a...@geo-solutions.it<mailto:andrea.a...@geo-solutions.it>> wrote:
On Thu, Mar 12, 2015 at 1:15 AM, Martin Davis
<mtncl...@gmail.com<mailto:mtncl...@gmail.com>> wrote:
Uuuh... the result might become very confusing... in the simple case you might
want to just change a function call,
in the complex one you might have to rewrite half of the query.
Well, let's not let the best be the enemy of the good. I'd be happy if the
"simple" case was handled.
So I've been talking about this with Jody, and he's been pretty horrified about
what I proposed, but
here it goes anyways: it seems to me that what you are looking for is some sort
of templating language
to write a query.
Right now parametric queries are sort of our templating language, but to do
what you want you
need control structures that would emit different sql bits depending on the
zoom level... so
it seems to me that what you want is a freemarker template for sqlviews... and
it would be up
to you to make sure that whatever you write always returns the same
_structure_, the same
attribute names and types.
There are of course ugly sides to this:
* We'd need to add a relatively large dependency to gt-jdbc (freemarker, if we
care for consistency
with what is alread in use in GeoServer) since the sql expansion is done
there
* We'd need to start passing in a set of "well known" variables to it, bbox,
current zoom level, target
pixel size, and so on
* Checking that the template would not result in something easy to attack with
sql injection would
be hard
But it seems it would satisfy all your needs, and more
Cheers
Andrea
--
==
GeoServer Professional Services from the experts! Visit
http://goo.gl/NWWaa2 for more information.
==
Ing. Andrea Aime
@geowolf
Technical Lead
GeoSolutions S.A.S.
Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy
phone: +39 0584 962313<tel:%2B39%200584%20962313>
fax: +39 0584 1660272<tel:%2B39%200584%201660272>
mob: +39 339 8844549<tel:%2B39%20%C2%A0339%208844549>
http://www.geo-solutions.it
http://twitter.com/geosolutions_it
AVVERTENZE AI SENSI DEL D.Lgs. 196/2003
Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i
file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo
è consentito esclusivamente al destinatario del messaggio, per le finalità
indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne
il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di
procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro
sistema. Conservare il messaggio stesso, divulgarlo anche in parte,
distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse,
costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.
The information in this message and/or attachments, is intended solely for the
attention and use of the named addressee(s) and may be confidential or
proprietary in nature or covered by the provisions of privacy act (Legislative
Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in
accord with its purpose, any disclosure, reproduction, copying, distribution,
or either dissemination, either whole or partial, is strictly forbidden except
previous formal approval of the named addressee(s). If you are not the intended
recipient, please contact immediately the sender by telephone, fax or e-mail
and delete the information in this message that has been received in error. The
sender does not give any warranty or accept liability as the content, accuracy
or completeness of sent messages and accepts no responsibility for changes
made after they were sent or for other risks which arise as a result of e-mail
transmission, viruses, etc.
-------------------------------------------------------
------------------------------------------------------------------------------
Dive into the World of Parallel Programming The Go Parallel Website, sponsored
by Intel and developed in partnership with Slashdot Media, is your hub for all
things parallel software development, from weekly thought leadership blogs to
news, videos, case studies, tutorials and more. Take a look and join the
conversation now. http://goparallel.sourceforge.net/
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users