db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Hillegas <rick.hille...@oracle.com>
Subject Re: Database name length
Date Mon, 13 Sep 2010 20:52:16 GMT
Tiago Espinha wrote:
> Aha, we do indeed Knut, but I just found a bug that is present at least on 
> If you try to create a database using the client driver with 243 
> [excluding ;create=true] Latin characters (e.g. 'ç'), the server will throw the 
> following exception: 
> --------------8<----------------
> 2010-09-13 20:26:11.052 GMT : fromIndex(518) > toIndex(275)
> java.lang.IllegalArgumentException: fromIndex(518) > toIndex(275)
>         at java.util.Arrays.rangeCheck(Arrays.java:1306)
>         at java.util.Arrays.fill(Arrays.java:2567)
>         at org.apache.derby.impl.drda.DDMWriter.padBytes(Unknown Source)
>         at org.apache.derby.impl.drda.DDMWriter.writeScalarPaddedBytes(Unknown 
> Source)
>         at org.apache.derby.impl.drda.DRDAConnThread.writeRDBNAM(Unknown Source)
> ------------8<-----------------------
> This causes havoc as probably 'ç' is indeed requiring more than one byte to be 
> encoded. I'm actually surprised this works at all but it's probably some obscure 
> addition of EBCDIC on top of just regular US-ASCII. When I try to get the bytes 
> for 'ç' in plain US-ASCII, I get 63 which is ASCII for the question mark.
> This means that as it is, on the client driver, the limit will be shorter than 
> 255 characters if these special characters are used. The only matter for concern 
> is that in previous releases this limit isn't properly handled and we just let 
> the server crash with a serious unhandled exception.
> I'm all for raising this limit if the community agrees that this does not 
> violate the DRDA protocol. 
At this point, our driver contains several Derby-specific extensions to 
DRDA. This sounds like another reasonable extension to me. +1

> I think Kathey also expressed some concern about the 
> limit on JIRA, so it would be interesting to hear her thoughts on this.
> Tiago
> ----- Original Message ----
> From: Knut Anders Hatlen <knut.hatlen@oracle.com>
> To: derby-dev@db.apache.org
> Sent: Mon, 13 September, 2010 12:53:11
> Subject: Re: Database name length
> Tiago Espinha <tiago.derby@yahoo.co.uk> writes:
>> Thank you Knut, for your reply.
>> Your point #1 is correct. As for point #2 and #3 just a small correction. It is 
>> all characters falling outside the *US-ASCII* encoding that will get a length 
>> lower than 255 characters as anything other than ASCII requires more than just 
>> 1 
>> byte to encode. I'm fairly sure that at this point we do not support ISO-8859-1 
>> through the client driver as these characters (the extended ones like áéó etc)

>> fall outside US-ASCII. So hopefully this won't break anything as we didn't 
>> support these characters previously.
> I think we do support this. At least, this code ran fine on my machine
> with Derby and created a database named áéó:
>     Connection c = DriverManager.getConnection(
>             "jdbc:derby://localhost/\u00E1\u00E9\u00F3;create=true");
>> As for your suggestion of increasing the length of the field, I'm not sure 
>> that's an option. This length limitation is imposed by the DRDA specification 
>> and the ACR unfortunately didn't change this. On the ACR it reads "As of DDM 
>> Level 7, the RDBNAM can accommodate an RDB name of up to 255 bytes in length, 
>> and its format will vary depending on the length of the RDB name". So 
>> essentially, we could easily support a much larger RDB name on Derby but the 
>> specification forbids it.
> DRDA does allow product-unique extensions. I have a hard time seeing any
> downside with extending the protocol here. Sending a longer string than
> what a strict reading of the spec permits sounds like a lesser evil to
> me than disallowing network access to the database.

View raw message