Affects Version/s: 10.4.1.3
Fix Version/s: None
AllocPage.createPage() contains this code at its beginning:
// args is the format id
// args is whether to sync the page to disk or not
// args is the pagesize (used by StoredPage)
// args is the spareSize (used by StoredPage)
// args is the number of bytes to reserve for container header
// args is the minimumRecordSize
// NOTE: the arg list here must match the one in FileContainer
int pageSize = args;
int minimumRecordSize = args;
borrowedSpace = args;
The variable minimumRecordSize is local and unused, so setting it has no effect. The local variable hides a field with the same name inherited from StoredPage. That field is initialized to args when super.createPage() is called. According to the comment in AllocPage, args is the number of bytes to reserve for the container header (aka borrowedSpace), not the minimum record size. (args is however the minimum record size if the page is a plain StoredPage, that's why super.createPage() will use that value.) I therefore believe that this code intended to update StoredPage.minimumRecordSize, not a local, unused variable.
I don't know if this can lead to incorrect behaviour, but it doesn't look right.