duckdb / duckdb/duckdb-java

Wrong WKB produced by jdbc driver when reading geometry type

Offen
#486 7 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
127
Forks
80
Ø Merge
13 Std. 49 Min.
Gemergte PRs (30 T.)
48

Beschreibung

Try this:

```java
try (Statement s = connection.createStatement()) {
s.executeUpdate("install spatial");
s.executeUpdate("load spatial");

try (ResultSet rs = s.executeQuery("select cast('point (1 1)' as geometry)")) {
rs.next();
println(HexFormat.of().formatHex(rs.getBytes(1)));
}
}
```

This prints:

```
00000000000000000000000001000000000000000000f03f000000000000f03f
```

Which is an invalid WKB representation of `point(1 1)`. The correct representation is:

```
0101000000000000000000f03f000000000000f03f
```

This can be validated with this query:

```sql
select st_ashexwkb(cast ('POINT(1 1)' as geometry));
```

Or also with PostgreSQL:

```sql
select encode(st_asbinary(cast('point (1 1)' as geometry)), 'hex')`
```

I'm not sure if this is a duckdb_jdbc problem or a duckdb problem. Feel free to move the issue if it's not a JDBC problem.

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Reproduziere das Java-JDBC-Beispiel im Issue und vergleiche die zurückgegebenen Bytes mit st_ashexwkb und der st_asbinary-Ausgabe von PostgreSQL. Verfolge, ob das ungültige WKB vom JDBC-Treiber oder von DuckDB erzeugt wird, und bestätige anschließend, dass die zurückgegebenen Geometrie-Bytes der gültigen Punktdarstellung entsprechen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, sql
Bereich
database
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.