Re: [PATCHES] JDBC access is broken in 7.3 beta - Mailing list pgsql-hackers

From Barry Lind
Subject Re: [PATCHES] JDBC access is broken in 7.3 beta
Date
Msg-id 3DD3816B.80307@xythos.com
Whole thread Raw
In response to JDBC access is broken in 7.3 beta  (Mats Lofkvist <mal@algonet.se>)
List pgsql-hackers
Mats,

Patch applied.  (I also fixed the 'length' problem you reported as well).

thanks,
--Barry


Mats Lofkvist wrote:
> (I posted this on the bugs and jdbc newsgroups last week
> but have seen no response. Imho, this really needs to
> be fixed since the bug makes it impossible to use the
> driver in a multithreaded environment so I'm reposting
> to hackers and patches.)
>
>       _
> Mats Lofkvist
> mal@algonet.se
>
>
>
>
> The optimization added in
> src/interfaces/jdbc/org/postgresql/core/Encoding.java
> version 1.7 breaks JDBC since it is not thread safe.
>
> The new method decodeUTF8() uses a static (i.e. class member)
> but is synchronized on the instance so it won't work with multiple
> instances used in parallel by multiple threads.
> (Quick and dirty patch below.)
>
> (The method also isn't using the 'length' parameter correctly,
> but since offset always seems to be zero, this bug doesn't show up.)
>
>       _
> Mats Lofkvist
> mal@algonet.se
>
>
> *** org/postgresql/core/Encoding.java~  Sun Oct 20 04:55:50 2002
> --- org/postgresql/core/Encoding.java   Fri Nov  8 16:13:20 2002
> ***************
> *** 233,239 ****
>          */
>         private static final int pow2_6 = 64;           // 26
>         private static final int pow2_12 = 4096;        // 212
> !       private static char[] cdata = new char[50];
>
>         private synchronized String decodeUTF8(byte data[], int offset, int length) {
>                 char[] l_cdata = cdata;
> --- 233,239 ----
>          */
>         private static final int pow2_6 = 64;           // 26
>         private static final int pow2_12 = 4096;        // 212
> !       private char[] cdata = new char[50];
>
>         private synchronized String decodeUTF8(byte data[], int offset, int length) {
>                 char[] l_cdata = cdata;
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>



pgsql-hackers by date:

Previous
From: "Christopher Kings-Lynne"
Date:
Subject: Re: RI_FKey_check: foreign key constraint blocks
Next
From: Michael Meskes
Date:
Subject: Re: ecpg "problem" ...