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

Knut Anders Hatlen updated DERBY-3589:
--------------------------------------

    Attachment: d3589-1a.stat
                d3589-1a.diff

Attached is a patch that changes the signature of CachedPage.createPage() so 
that it takes a PageCreationArgs object instead of an int array. The 
PageCreationArgs object contains the same information as the array, only that 
it has named fields and thereby fixes the problem with minimumRecordSize being 
taken from the wrong array element.

I have started the full regression test suite.

> AllocPage.createPage() doesn't initialize minimumRecordSize correctly
> ---------------------------------------------------------------------
>
>                 Key: DERBY-3589
>                 URL: https://issues.apache.org/jira/browse/DERBY-3589
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.3.1.4, 10.4.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>            Priority: Minor
>         Attachments: d3589-1a.diff, d3589-1a.stat
>
>
> AllocPage.createPage() will initialize minimumRecordSize to the same
> value as borrowedSpace. See this code taken from AllocPage.java:
> -------------------
>       protected void createPage(PageKey newIdentity, int[] args) 
>                throws StandardException
>       {
>               super.createPage(newIdentity, args);
>               // args[0] is the format id
>               // args[1] is whether to sync the page to disk or not
>               // args[2] is the pagesize (used by StoredPage)
>               // args[3] is the spareSize (used by StoredPage)
>               // args[4] is the number of bytes to reserve for container 
> header
>               // args[5] is the minimumRecordSize
>               // NOTE: the arg list here must match the one in FileContainer
>               int pageSize = args[2];
>               int minimumRecordSize = args[5];
>               borrowedSpace = args[4];
> -------------------
> Here it correctly takes args[5] and puts into the local variable
> minimumRecordSize. However, that variable hides a field with the same
> name, and that field is set to args[4] in the call to
> super.createPage() at the first line in the method. The local variable
> is never used.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to