BUG #14166: JDBC driver won't parse error message from DB server in German

From: davygora(at)sulzer(dot)de
To: pgsql-bugs(at)postgresql(dot)org
Subject: BUG #14166: JDBC driver won't parse error message from DB server in German
Date: 2016-05-31 14:32:13
Message-ID: 20160531143213.30388.89741@wrigleys.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs pgsql-jdbc

The following bug has been logged on the website:

Bug reference: 14166
Logged by: Yuriy Davygora
Email address: davygora(at)sulzer(dot)de
PostgreSQL version: 9.5.3
Operating system: Windows 7 64 bit
Description:

Prerequisites (all local, no remote servers):
- PostgreSQL DB 9.5.3 with locale German_Germany.1252
- PostgreSQL JDBC driver postgresql-9.4.1208.jar (jre8)
- Payara JEE server 4.1.1.161.1
- Oracle JDK 1.8.0_72
- Misconfiguration of the JDBC connection in the domain.xml file causing
the DB connection error (see below)

The JDBC driver provides a property 'DatabaseName' which I set to the
correct database name which is different from the user name. Here is an
excerpt from domain.xml:

<property name="DatabaseName" value="database_name"></property>
<property name="User" value="user_name"></property>
<property name="PortNumber" value="5432"></property>
<property name="Url" value="jdbc:postgresql://localhost/"></property>

--------------------------

Bug description:

The DB connection error was "database does not exist" (which I found out
after switching the locale from German to English). To fix I had to include
the database name in the URL as follows:

<property name="Url"
value="jdbc:postgresql://localhost/database_name?"></property>

While the locale of the DB server was still set to German, however, I did
get a different message. Here is an excerpt from the stacktrace:

Caused by: java.io.IOException: Ungültige UTF-8-Sequenz: das erste Byte ist
10xxxxxx: 132
at org.postgresql.core.UTF8Encoding.decode(UTF8Encoding.java:104)
at org.postgresql.core.PGStream.ReceiveString(PGStream.java:331)
at
org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:705)
at
org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213)
... 90 more
]]

I downloaded the sources of the JDBC driver to find out where the error
comes from. It turned out, that the exception is thrown when the JDBC driver
cannot parse the error message from the DB server. Thus, I don't ever get to
see the original error message.

As mentioned above, setting the locale to English allowed me to see the
error and fix it quickly. However, it would be nice, if the error messages
could be parsed in any language.

--------------------------

P.S. This has nothing to do with the reported bug, however it might be a bug
in its own right. While the configuration was still as shown in the
prerequisites section, occasionally the JDBC connection would work, about
30% of the time, on a seemingly random basis.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Michael Paquier 2016-06-01 00:23:01 Re: [BUGS] BUG #14166: JDBC driver won't parse error message from DB server in German
Previous Message Daniel Migowski 2016-05-31 05:47:58 Re: BUG #14162: No statistics for functions used as aggregates

Browse pgsql-jdbc by date

  From Date Subject
Next Message Michael Paquier 2016-06-01 00:23:01 Re: [BUGS] BUG #14166: JDBC driver won't parse error message from DB server in German
Previous Message Vladimir Sitnikov 2016-05-29 14:37:35 Re: Roadmap: JDK 9 testing.