I have a working setup with a complex type of HeartStarter with a list of 
AvailableTimes thanks to
Rini Angreani and Ben Caradoc-Davies. I can request the data over both WFS och 
WMS.

As I have alot of features I tried to enable joining to get better performance 
but when I did it broke.
The Heartstarter type is read from a view that joins the HeartStarter table 
with another table containing the geometry and some attributes.
AvailableTime are read from a table and all data sits in the same Sql Server 
database.

I enabled the GeoTools logging and found that the following SQL-query are 
executed when a GetMap is requested:

SELECT "HjaertstartarIntegrationsVy"."Geometri".STAsBinary() as "Geometri" FROM 
"HjaertstartarIntegrationsVy" INNER JOIN ( SELECT DISTINCT  FROM 
"HjaertstartarIntegrationsVy" WHERE "Geometri".F
ilter(geometry::STGeomFromText('POLYGON ((-1969834.7690915626 
5498574.065957437, -1969834.7690915626 13090911.210410563, 5622502.375361563 
13090911.210410563, 5622502.375361563 5498574.065957437, -1969834.7690915626 
5498574.065957437))',
 900913)) = 1 ) temp_alias_used_for_filter ON (  )

And it fails with the following exception:

java.lang.RuntimeException: java.io.IOException
        at 
org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:241)
        at 
org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:68)
        at 
org.geotools.data.complex.DataAccessMappingFeatureIterator.initialiseSourceFeatures(DataAccessMappingFeatureIterator.java:382)
        at 
org.geotools.data.complex.AbstractMappingFeatureIterator.<init>(AbstractMappingFeatureIterator.java:161)
        at 
org.geotools.data.complex.DataAccessMappingFeatureIterator.<init>(DataAccessMappingFeatureIterator.java:162)
        at 
org.geotools.data.complex.DataAccessMappingFeatureIterator.<init>(DataAccessMappingFeatureIterator.java:137)
        at 
org.geotools.data.complex.MappingFeatureIteratorFactory.getInstance(MappingFeatureIteratorFactory.java:178)
        at 
org.geotools.data.complex.MappingFeatureCollection.iterator(MappingFeatureCollection.java:264)
        at 
org.geotools.renderer.lite.StreamingRenderer.drawPlain(StreamingRenderer.java:2495)
        at 
org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:2012)
        at 
org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:813)
        at 
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:490)
        at 
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:254)
        at 
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:126)
        at org.geoserver.wms.GetMap.executeInternal(GetMap.java:465)
        at org.geoserver.wms.GetMap.run(GetMap.java:201)
        at org.geoserver.wms.GetMap.run(GetMap.java:111)
        at 
org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:353)
        at sun.reflect.GeneratedMethodAccessor165.invoke(Unknown Source)
....
        at 
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at 
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Unknown Source)
Caused by: java.io.IOException
        at 
org.geotools.jdbc.JoiningJDBCFeatureSource.getJoiningReaderInternal(JoiningJDBCFeatureSource.java:633)
        at 
org.geotools.jdbc.JoiningJDBCFeatureSource.getReaderInternal(JoiningJDBCFeatureSource.java:641)
        at 
org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:562)
        at 
org.geotools.data.store.ContentFeatureCollection.features(ContentFeatureCollection.java:238)
        ... 116 more
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax 
near the keyword 'FROM'.
        at 
com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:216)
        at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1515)
        at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.doExecuteStatement(SQLServerStatement.java:792)
        at 
com.microsoft.sqlserver.jdbc.SQLServerStatement$StmtExecCmd.doExecute(SQLServerStatement.java:689)
        at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
        at 
com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
        at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:180)
        at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:155)
        at 
com.microsoft.sqlserver.jdbc.SQLServerStatement.executeQuery(SQLServerStatement.java:616)
        at 
org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at 
org.apache.commons.dbcp.DelegatingStatement.executeQuery(DelegatingStatement.java:208)
        at 
org.geotools.jdbc.JDBCFeatureReader.<init>(JDBCFeatureReader.java:140)
        at 
org.geotools.jdbc.JoiningJDBCFeatureSource.getJoiningReaderInternal(JoiningJDBCFeatureSource.java:627)
        ... 119 more
15 Jan 17:27:54 DEBUG [org.geotools.rendering] - Style cache hit ratio: NaN , 
hits 0, requests 0
15 Jan 17:27:54 ERROR [org.geoserver.ows] -
org.geoserver.platform.ServiceException: Rendering process failed.

It seems to be that Geoserver constructs a query that are not syntactically 
correct.

When requesting a GetFeature with WFS a FeatureCollection is returned but the 
content of the AvailableTimes are not included in the result (only a empty 
element <heart:AvailableTimes> for those heartstarters that have one ore more 
times associated).

Could this be because I'm using a view instead of a table?

Thank you

Lukas
___________________________
Lukas Bergliden
Civilingenjör
Decerno AB
Electrum 234, SE-164 40 KISTA
Besöksadress: Kistagången 16, 7 tr
Tel:    +46 8 630 75 00
Mobil: +46 70 644 96 61
------------------------------------------------------------------------------
Master SQL Server Development, Administration, T-SQL, SSAS, SSIS, SSRS
and more. Get SQL Server skills now (including 2012) with LearnDevNow -
200+ hours of step-by-step video tutorials by Microsoft MVPs and experts.
SALE $99.99 this month only - learn more at:
http://p.sf.net/sfu/learnmore_122512
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to