Subject | Re: [Firebird-Java] Denied connections due to character set |
---|---|
Author | Mark Rotteveel |
Post date | 2017-02-14T09:26:40Z |
On 13-2-2017 23:32, 'William L. Thomson Jr.' wlt-ml@...
[Firebird-Java] wrote:
2.2, then you have a different problem.
then your problem is not one of character sets.
configuration, etc that you use.
this in november, and I couldn't contact you for more information
because my email sent to your email address on the tracker was rejected
by your mail server.
If instead you had contacted me directly or through this mailinglist,
some frustration might have been avoided.
will be fixed in Jaybird 3 beta 3, see JDBC-473. I have also updated the
documentation.
I appreciate constructive feedback, but I need more than just "EXTREMELY
vague". English is not my native language, and being deep down in the
technical workings of Jaybird will sometimes make things extremely
obvious to me that might not be so to others.
I have made some changes to the documentation, see
*
https://github.com/FirebirdSQL/jaybird/blob/master/src/documentation/release_notes.md#connection-character-set-none
*
https://github.com/FirebirdSQL/jaybird/blob/master/src/documentation/release_notes.md#connection-rejected-without-an-explicit-character-set
handling of NONE has lead to surprise in the past, including corruption
of data. Furthermore, the handling of NONE was changed in Jaybird 3 and
that can lead to unexpected behavior. If you want to use NONE, that is
fine, but that should be an explicit decision on your part.
For example if a column has an explicit character, Jaybird 2.2 and
earlier interpret that column in the local JVM default character
encoding, however Jaybird 3 will interpret the column in the specific
character set instead. This can lead to surprising character set
conversions or even transliterations errors if for example if all this
time you have been writing WIN1252 data into a WIN1250 column using
connection character set NONE.
Alternatives like using a new default like UTF8 have their own problems,
because if your database is largely NONE, then things won't work out
either, and if you have columns wider than 8191 characters that will
lead to all kinds of exception (truncation, string length exceeded, etc).
Mark
--
Mark Rotteveel
[Firebird-Java] wrote:
> Last time I was on the list was in 2008. I am pretty displeased at theThis change was not backported to 2.2. If you have the same problem with
> circumstances that are forcing me to re-subscribe. I have already opened a bug
> on this issue.
>
>
> I first noticed this issue/change with jaybird 3.x. I am VERY displeased that
> it has been back ported to 2.2.12, essentially breaking jaybird for existing
> applications.
2.2, then you have a different problem.
> I am VERY upset over this, as I have NEVER had an update of Jaybird breakIf you have the same problem with Jaybird 3 beta and Jaybird 2.2.12,
> existing applications. Nor have I ever had any issues connecting to database.
> No matter what I set, where how etc. I CANNOT connect to my databases using
> jaybird 2.2.12 or any 3.x version.
>
> This need to be fixed immediately! It is one thing to make such major change
> for 3.x. That should never have been done to 2.x. There should be CLEAR
> documentation that works. I have messed around for HOURS trying all sorts of
> methods and NONE work.
then your problem is not one of character sets.
> When I get past the connection issue, I run into other issues with theCould you please describe the problem in detail, and showing some code,
> character set not matching that of my database. I have NEVER had to set a
> character set, nor had any problems in over a decade of usage. This is
> completely unacceptable to be making such a change and breaking existing
> function.
configuration, etc that you use.
> http://tracker.firebirdsql.org/browse/JDBC-479That is unfortunate, but you only once left a comment on JDBC-446 about
>
> Really never seen a change like that frustrate me so much. I have spent WAY to
> much time trying to get something to work. That used to work just fine. That
> should work per various attempts, but does not.
this in november, and I couldn't contact you for more information
because my email sent to your email address on the tracker was rejected
by your mail server.
If instead you had contacted me directly or through this mailinglist,
some frustration might have been avoided.
> There is no clear documentation or steps. Which clearly shows that someone isThere was a bug in the default connection character set handling that
> ASSUMING how to get past this issue. Even the error output is EXTREMELY vague.
> I have tried every method and NO difference.
will be fixed in Jaybird 3 beta 3, see JDBC-473. I have also updated the
documentation.
I appreciate constructive feedback, but I need more than just "EXTREMELY
vague". English is not my native language, and being deep down in the
technical workings of Jaybird will sometimes make things extremely
obvious to me that might not be so to others.
I have made some changes to the documentation, see
*
https://github.com/FirebirdSQL/jaybird/blob/master/src/documentation/release_notes.md#connection-character-set-none
*
https://github.com/FirebirdSQL/jaybird/blob/master/src/documentation/release_notes.md#connection-rejected-without-an-explicit-character-set
> java.sql.SQLNonTransientConnectionException: Connection rejected: NoThis change is necessary in my opinion, because the character set
> connection character set specified (property lc_ctype, encoding, charSet or
> localEncoding). Please specify a connection character set (eg property
> charSet=utf-8) or consult the Jaybird documentation for more information
>
>
> Ridiculous!!!!! Unacceptable!!!! Absolutely unnecessary!!!
handling of NONE has lead to surprise in the past, including corruption
of data. Furthermore, the handling of NONE was changed in Jaybird 3 and
that can lead to unexpected behavior. If you want to use NONE, that is
fine, but that should be an explicit decision on your part.
For example if a column has an explicit character, Jaybird 2.2 and
earlier interpret that column in the local JVM default character
encoding, however Jaybird 3 will interpret the column in the specific
character set instead. This can lead to surprising character set
conversions or even transliterations errors if for example if all this
time you have been writing WIN1252 data into a WIN1250 column using
connection character set NONE.
Alternatives like using a new default like UTF8 have their own problems,
because if your database is largely NONE, then things won't work out
either, and if you have columns wider than 8191 characters that will
lead to all kinds of exception (truncation, string length exceeded, etc).
Mark
--
Mark Rotteveel