[
https://issues.apache.org/jira/browse/DERBY-2936?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Knut Anders Hatlen updated DERBY-2936:
--------------------------------------
Attachment: d2936-1.diff
Attaching a patch which adds a ByteBuffer field which wraps the byte array (the
byte array is still a field). Also removed the offset variable, since the byte
buffer maintains a position variable. DDMWriter now uses ByteBuffer's utility
methods for encoding primitive types, but it still uses String.getBytes() to
encode strings. I plan to change the string encoding methods later.
The patch also fixes a bug where writeBigDecimal() called ensureLength() with
offset+length as argument, instead of length as it should. Derbyall and
suites.All ran cleanly with the patch.
> Use java.nio.ByteBuffer for buffering in DDMWriter
> --------------------------------------------------
>
> Key: DERBY-2936
> URL: https://issues.apache.org/jira/browse/DERBY-2936
> Project: Derby
> Issue Type: Improvement
> Components: Network Server
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
> Priority: Minor
> Attachments: d2936-1.diff
>
>
> org.apache.derby.impl.drda.DDMWriter uses a byte array as a buffer. Wrapping
> the array in a java.nio.ByteBuffer has some advantages, for instance:
> - utility methods for encoding primitive types into the byte array could be
> used instead of manually encoding the values
> - it allows us to encode strings directly into the buffer (using a
> CharsetEncoder) without doing an expensive String.getBytes(String encoding)
> in an intermediate step
> By using a utility class, the code becomes easier to maintain. Also,
> ByteBuffer allows us to access the backing byte array without going through
> the ByteBuffer interface, so we still have the possibility to modify the byte
> array directly in cases where that's more convenient.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.