fwiw this looks more like a problem with the Oracle driver than GeoTools. The
sqlType=93 is Timestamp as represented by the ResultSetMetadata but it seems
like it should be sqlType=91 (Date). I'm looking at how to make GeoTools
handle a work around for this Oracle issue.
There may be a solution in setting certain connection properties including
oracle.jdbc.mapDateToTimestamp OR oracle.jdbc.V8Compatible as discussed at
these links
http://stackoverflow.com/questions/6764617/conflict-with-java-util-date-and-java-sql-timestamp,
https://community.oracle.com/thread/485903,
https://community.oracle.com/thread/68918.
From: Walter Stovall
Sent: Wednesday, May 10, 2017 11:13 AM
To: [email protected]
Subject: RE: [Geoserver-devel] Oracle DATE treated as TIMESTAMP makes WFS
handle the value incorrectly when using a VTABLE
I know more now about why Date columns are not handled correction with virtual
tables. I'm working on what exactly to do about it (suggestions are quite
welcome).
In JDBCFeatureSource.buildFeatureType() it calls a different overload of
getColumnMetadata() depending on whether it comes from a vtable. The overload
for vtables uses the following line of code to set the binding for my date
column:
column.binding = store.getMapping(column.sqlType);
In my case the sqlType is 93 and that results in a binding of
java.sql.Timestamp.
In the case of real tables the following line of code sets the binding for my
date column:
column.binding = dialect.getMapping(columns, cx);
The above generates an apparently more correct binding of java.sql.Date and
then correctly handles the column in my WFS use.
From: Walter Stovall
Sent: Wednesday, May 10, 2017 6:08 AM
To:
[email protected]<mailto:[email protected]>
Subject: [Geoserver-devel] Oracle DATE treated as TIMESTAMP makes WFS handle
the value incorrectly when using a VTABLE
I'm having a problem with date vs. timestamp columns. The problem happens when
the layer depends on a geoserver view/vtable.
If I create a layer and just point to the database table then it works as
expected. In the console GUI some layer attributes show as Timestamp and others
show as Date. But if I base the layer on a geoserver view ALL columns of
either type DATE or TIMESTAMP show as Timestamp in the console GUI. My view
simply selects each column that I want to publish on the layer.
This leads downstream problems where the date value is treated as date/time.
On input (such as WFS-T) GeoServer expects date AND time when it should be just
date. And on output both date and time are provided when it should be just
date.
Any clues about what to do with this problem?
Thanks for any help!
Walter Stovall - Byers Engineering Company
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel