[ 
https://issues.apache.org/jira/browse/DERBY-5236?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen updated DERBY-5236:
--------------------------------------

    Attachment: write-full-string.diff

DDMWriter.writeLDString() truncates the string down to LONGVARCHAR_MAX_LEN 
bytes (not characters). I tried to change it to just send the full string, 
regardless of its length (see the attached patch), and that made the repro 
pass. (I haven't run any other tests.)

At the location where DRDAConnThread calls writeLDString(), there is a comment 
about the truncation:

                                        //WriteLDString and generate warning if 
truncated
                                        // which will be picked up by 
checkWarning()
                                        writer.writeLDString(val.toString(), 
index);

But there is no code that actually generates the warning if the string is 
truncated.

> Client driver silently truncates strings that exceed 32KB
> ---------------------------------------------------------
>
>                 Key: DERBY-5236
>                 URL: https://issues.apache.org/jira/browse/DERBY-5236
>             Project: Derby
>          Issue Type: Bug
>          Components: Network Client
>    Affects Versions: 10.8.1.2
>            Reporter: Knut Anders Hatlen
>         Attachments: repro.diff, write-full-string.diff
>
>
> Can be seen with this JUnit test case that retrieves a VARCHAR value with 
> 20000 characters. With the client driver, the string is truncated to 10900 
> characters (32700 bytes when encoded in UTF-8).
>     public void testLongColumn() throws SQLException {
>         PreparedStatement ps = prepareStatement(
>                 "values cast(? as varchar(20000))");
>         char[] chars = new char[20000];
>         Arrays.fill(chars, '\u4e10');
>         String str = new String(chars);
>         ps.setString(1, str);
>         JDBC.assertSingleValueResultSet(ps.executeQuery(), str);
>     }

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to