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

Reply via email to