mirror of
https://github.com/postgres/postgres.git
synced 2025-10-16 17:07:43 +03:00
Add FILLFACTOR to CREATE INDEX.
ITAGAKI Takahiro
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*
|
||||
*
|
||||
* IDENTIFICATION
|
||||
* $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.61 2006/03/05 15:58:21 momjian Exp $
|
||||
* $PostgreSQL: pgsql/src/backend/access/heap/hio.c,v 1.62 2006/07/02 02:23:18 momjian Exp $
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@@ -102,12 +102,18 @@ RelationGetBufferForTuple(Relation relation, Size len,
|
||||
{
|
||||
Buffer buffer = InvalidBuffer;
|
||||
Page pageHeader;
|
||||
Size pageFreeSpace;
|
||||
Size pageFreeSpace,
|
||||
freespace;
|
||||
BlockNumber targetBlock,
|
||||
otherBlock;
|
||||
bool needLock;
|
||||
|
||||
if (relation->rd_options == NULL)
|
||||
elog(ERROR, "RelationGetBufferForTuple %s IS NULL", RelationGetRelationName(relation));
|
||||
Assert(relation->rd_options != NULL);
|
||||
|
||||
len = MAXALIGN(len); /* be conservative */
|
||||
freespace = HeapGetPageFreeSpace(relation);
|
||||
|
||||
/*
|
||||
* If we're gonna fail for oversize tuple, do it right away
|
||||
@@ -146,7 +152,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
|
||||
* We have no cached target page, so ask the FSM for an initial
|
||||
* target.
|
||||
*/
|
||||
targetBlock = GetPageWithFreeSpace(&relation->rd_node, len);
|
||||
targetBlock = GetPageWithFreeSpace(&relation->rd_node, len + freespace);
|
||||
|
||||
/*
|
||||
* If the FSM knows nothing of the rel, try the last page before we
|
||||
@@ -202,7 +208,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
|
||||
*/
|
||||
pageHeader = (Page) BufferGetPage(buffer);
|
||||
pageFreeSpace = PageGetFreeSpace(pageHeader);
|
||||
if (len <= pageFreeSpace)
|
||||
if (len + freespace <= pageFreeSpace)
|
||||
{
|
||||
/* use this page as future insert target, too */
|
||||
relation->rd_targblock = targetBlock;
|
||||
@@ -235,7 +241,7 @@ RelationGetBufferForTuple(Relation relation, Size len,
|
||||
targetBlock = RecordAndGetPageWithFreeSpace(&relation->rd_node,
|
||||
targetBlock,
|
||||
pageFreeSpace,
|
||||
len);
|
||||
len + freespace);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user