[ https://issues.apache.org/jira/browse/DERBY-4214?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12706350#action_12706350 ]
Kristian Waagan commented on DERBY-4214: ---------------------------------------- Rick wrote: ----- 1) If you upgrade a database to 10.5.1.1, the signature of CLOBGETSUBSTRING will not be the signature which you would see in a freshly created 10.5.1.1 database. Presumably this means that the problem addressed by DERBY-3769 is not solved in upgraded databases. ---- The effect of this depends on the data stored in the Clob and the way the Clob is fetched with the client driver; o If the client asks for chunks of 10890 characters or less in the read loop, the performance will be identical. o If more than 10890 characters are requested *and* the Clob contains characters that require two or three bytes to be encoded in UTF-8, performance will be significantly worse for larger Clobs without DERBY-3769. In the worst case, Derby will appear to have hung and the server will eat up all the CPU. o If more than 10890 characters, but less than or equal to 32760, are requested and the Clob contains only one-byte UTF-8 encoded characters, the user will see better performance without DERBY-3769 (less roundtrips). Because the potential loss of performance is significantly higher than the potential gain, I chose to assume multi-byte characters and reduce the number of characters transferred in one go. DERBY-3918 has been logged to improve the implementation. The user can work around this issue by choosing one of the streaming methods to fetch the Clob *and* adjust the read buffer accordingly, or use Clob.getSubString() to fetch small pieces (<= 10890). > Inconsistent metadata for CLOBGETSUBSTRING, depending on your upgrade > trajectory > -------------------------------------------------------------------------------- > > Key: DERBY-4214 > URL: https://issues.apache.org/jira/browse/DERBY-4214 > Project: Derby > Issue Type: Bug > Components: SQL > Affects Versions: 10.4.3.0, 10.5.1.1, 10.5.1.2, 10.6.0.0 > Reporter: Rick Hillegas > > The on-disk signature of CLOBGETSUBSTRING changed as a result of the work > done on DERBY-3769. Previously, the return type of that function was > VARCHAR(32672). The return type changed to VARCHAR(10890) with revision > 707097, which made it into release 10.5.1.1. That change was also backported > to the 10.4 branch at 711548. However, no upgrade logic was written to > support this metadata change. As a result, we have two discrepancies with our > upgrade policy: > 1) If you upgrade a database to 10.5.1.1, the signature of CLOBGETSUBSTRING > will not be the signature which you would see in a freshly created 10.5.1.1 > database. Presumably this means that the problem addressed by DERBY-3769 is > not solved in upgraded databases. > 2) If we create another release on the 10.4 branch, then we will have a > change in on-disk metadata introduced by a bug-fix release. > I see two solutions: > A) Add metadata upgrade logic to the 10.4 and 10.5 branches so that > DERBY-3769 will be fixed in upgraded databases as well as freshly created > databases. This will violate our policy of not changing on-disk metadata in > maintenance releases. > B) Correct the metadata in the hard-upgrade logic of 10.6. We may want to > revert the 10.4 backport. > In any event, we may also want to re-open DERBY-3769 to indicate that the bug > is not fixed in hard-upgraded databases but only in freshly created databases. > What are people's thoughts about how to address this discrepancy? -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.