db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-3589) AllocPage.createPage() doesn't initialize minimumRecordSize correctly
Date Thu, 03 Apr 2008 13:00:24 GMT

     [ 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.


Mime
View raw message