[
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