Hi Paul,

Thanks for reporting, investigating and fixing that. I assume you are working 
with a HANA 1 instance. The SRID derivation was removed in HANA 2 because it 
caused too many issues.

So, the fix won’t work for HANA 2, but it won’t do any harm either (if the SRID 
is omitted in HANA 2, it is assumed to be 0).

I’ll have a look at your PR. We can use it for the time being, but we should 
leave the JIRA issue open until there is a solution for HANA 2 as well. I can 
take the issue then and think what we can do about it.

Best regards,
Stefan


From: Biskup, Paul <paul.bis...@fit.fichtner.de>
Sent: Tuesday, May 12, 2020 9:34 AM
To: Jody Garnett <jody.garn...@gmail.com>; Uhrig, Stefan <stefan.uh...@sap.com>
Cc: geotools-devel@lists.sourceforge.net
Subject: AW: [Geotools-devel] Exception in SAP-HANA-datastore when using a 
HANA-view

Hi,

I have created an issue and a PR:

Jira-issue:
https://osgeo-org.atlassian.net/browse/GEOT-6587

Pull request:
https://github.com/geotools/geotools/pull/2926

Regards,
Paul

Von: Jody Garnett <jody.garn...@gmail.com<mailto:jody.garn...@gmail.com>>
Gesendet: Dienstag, 12. Mai 2020 02:49
An: Biskup, Paul 
<paul.bis...@fit.fichtner.de<mailto:paul.bis...@fit.fichtner.de>>; Uhrig, 
Stefan <stefan.uh...@sap.com<mailto:stefan.uh...@sap.com>>
Cc: 
geotools-devel@lists.sourceforge.net<mailto:geotools-devel@lists.sourceforge.net>
Betreff: Re: [Geotools-devel] Exception in SAP-HANA-datastore when using a 
HANA-view

Thanks for joining the developer list with a fix, yes please create an issue in 
jira, and a PR with your fix. Checking the plugin 
pom.xml<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgeotools%2Fgeotools%2Fblob%2Fmaster%2Fmodules%2Fplugin%2Fjdbc%2Fjdbc-hana%2Fpom.xml&data=02%7C01%7CPaul.Biskup%40fit.fichtner.de%7Cc85b4b889cce4009e5dd08d7f60e65fd%7Cb43430ce7d754158ab7b1f39e6fe6b3f%7C0%7C0%7C637248414005411269&sdata=3dWt1qoFf3nzlIS%2BASbHfftbykV5gY3wEe7fLsl1Z0U%3D&reserved=0>
 shows Stefan is the module maintainer and should be in a position to review.

Stay safe!
--
Jody Garnett


On Mon, 11 May 2020 at 08:42, Biskup, Paul 
<paul.bis...@fit.fichtner.de<mailto:paul.bis...@fit.fichtner.de>> wrote:
Hi all,

I’ve been recently using the SAP HANA-datastore in GeoServer, which works great.
Unfortunately there is a problem if you publish a HANA-view as a layer and try 
to do a spatial GetFeature-request on this layer. The view can be published and 
displayed as WMS, but if you do a GetFeature-request, you get this exception:

<ows:ExceptionText>java.lang.RuntimeException: java.io.IOException
java.io.IOExceptionSAP DBTech JDBC: [8]: invalid argument: The given SRID (-1) 
does not match the field's SRID (31466) at function __st_geomfromwkb__() (at 
pos 134) </ows:ExceptionText>

The SRID from the geometry-column in my view is EPSG:31466.

I have already analyzed the problem and have also found a fix for this problem.
The problem is, that in a spatial GetFeature-request the code tries to get the 
SRID from the layer by executing this SQL-Statement:

                                "SELECT SRS_ID FROM PUBLIC.ST_GEOMETRY_COLUMNS 
WHERE SCHEMA_NAME = ? AND TABLE_NAME = ? AND COLUMN_NAME = ?");

https://github.com/geotools/geotools/blob/b1be2cef1c06058f726bce94ac665ee50b571db6/modules/plugin/jdbc/jdbc-hana/src/main/java/org/geotools/data/hana/HanaDialect.java#L193<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgeotools%2Fgeotools%2Fblob%2Fb1be2cef1c06058f726bce94ac665ee50b571db6%2Fmodules%2Fplugin%2Fjdbc%2Fjdbc-hana%2Fsrc%2Fmain%2Fjava%2Forg%2Fgeotools%2Fdata%2Fhana%2FHanaDialect.java%23L193&data=02%7C01%7CPaul.Biskup%40fit.fichtner.de%7Cc85b4b889cce4009e5dd08d7f60e65fd%7Cb43430ce7d754158ab7b1f39e6fe6b3f%7C0%7C0%7C637248414005411269&sdata=HxfLFNA5IUyQi58IFiHORZDgJnzpsBYwaG580Ojnvxk%3D&reserved=0>

But the PUBLIC.ST_GEOMETRY-view in HANA is only filled for tables and not for 
views. That is why in my request the SRID of the layer can not be found and a 
„-1“ is returned.
Further have I analyzed, that the received SRID is passed in the 
„prepareGeometryValue“-function, which is used to create the sql-statement.
https://github.com/geotools/geotools/blob/b1be2cef1c06058f726bce94ac665ee50b571db6/modules/plugin/jdbc/jdbc-hana/src/main/java/org/geotools/data/hana/HanaDialect.java#L732<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgeotools%2Fgeotools%2Fblob%2Fb1be2cef1c06058f726bce94ac665ee50b571db6%2Fmodules%2Fplugin%2Fjdbc%2Fjdbc-hana%2Fsrc%2Fmain%2Fjava%2Forg%2Fgeotools%2Fdata%2Fhana%2FHanaDialect.java%23L732&data=02%7C01%7CPaul.Biskup%40fit.fichtner.de%7Cc85b4b889cce4009e5dd08d7f60e65fd%7Cb43430ce7d754158ab7b1f39e6fe6b3f%7C0%7C0%7C637248414005421260&sdata=j9zzFk3oBN0A3FKzSD7rdnxdJkpXLYS7qvspSZ9eZUk%3D&reserved=0>

There is an easy fix for this problem:
If you change the „prepareGeometryValue“-code like this, the SRID will only be 
passed to the „ST_GeomFromWKB“-function, if it is „>1“:

    public void prepareGeometryValue(
            Class<? extends Geometry> gClass,
            int dimension,
            int srid,
            Class binding,
            StringBuffer sql) {
        String pattern = null;
        if (srid > -1) {
            pattern = "ST_GeomFromWKB( ? ,{0})";
            sql.append(MessageFormat.format(pattern, Integer.toString(srid)));
        } else {
            sql.append("ST_GeomFromWKB( ? )");
        }
    }

If no SRID is passed, the HANA-function assumes, that the SRID is in the same 
coordinate system as the passed coordinates.
The fix is working in my locally build JDBC-HANA-Datastore and GeoServer.

Could you please take a look at this and tell me if I should create an issue in 
your JIRA?

Best regards,
Paul
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net<mailto:GeoTools-Devel@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geotools-devel<https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.sourceforge.net%2Flists%2Flistinfo%2Fgeotools-devel&data=02%7C01%7CPaul.Biskup%40fit.fichtner.de%7Cc85b4b889cce4009e5dd08d7f60e65fd%7Cb43430ce7d754158ab7b1f39e6fe6b3f%7C0%7C0%7C637248414005421260&sdata=sz0ZAJ7talziuKsKDrXneJ4Chk2ecot8fOFTatOlHzg%3D&reserved=0>
_______________________________________________
GeoTools-Devel mailing list
GeoTools-Devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to