btree_free_percent.patch
application/octet-stream
Filename: btree_free_percent.patch
Type: application/octet-stream
Part: 0
Message:
TODO-Item: B-tree fillfactor control
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: context
| File | + | − |
|---|---|---|
| src/backend/access/nbtree/nbtsort.c | 5 | 4 |
| src/backend/utils/misc/guc.c | 20 | 0 |
diff -cpr pgsql-orig/src/backend/access/nbtree/nbtsort.c pgsql/src/backend/access/nbtree/nbtsort.c
*** pgsql-orig/src/backend/access/nbtree/nbtsort.c 2006-01-19 22:02:42.000000000 +0900
--- pgsql/src/backend/access/nbtree/nbtsort.c 2006-01-19 22:13:13.000000000 +0900
*************** typedef struct BTWriteState
*** 125,130 ****
--- 125,132 ----
(sizeof(BTItemData) - sizeof(IndexTupleData))) : \
0)
+ double btree_node_free_percent = 30.0;
+ double btree_leaf_free_percent = 10.0;
static Page _bt_blnewpage(uint32 level);
static BTPageState *_bt_pagestate(BTWriteState *wstate, uint32 level);
*************** _bt_pagestate(BTWriteState *wstate, uint
*** 360,369 ****
state->btps_lastoff = P_HIKEY;
state->btps_level = level;
/* set "full" threshold based on level. See notes at head of file. */
! if (level > 0)
! state->btps_full = (PageGetPageSize(state->btps_page) * 3) / 10;
! else
! state->btps_full = PageGetPageSize(state->btps_page) / 10;
/* no parent level, yet */
state->btps_next = NULL;
--- 362,370 ----
state->btps_lastoff = P_HIKEY;
state->btps_level = level;
/* set "full" threshold based on level. See notes at head of file. */
! state->btps_full = (Size) ((PageGetPageSize(state->btps_page)
! * (level > 0 ? btree_node_free_percent : btree_leaf_free_percent)
! + 99) / 100);
/* no parent level, yet */
state->btps_next = NULL;
diff -cpr pgsql-orig/src/backend/utils/misc/guc.c pgsql/src/backend/utils/misc/guc.c
*** pgsql-orig/src/backend/utils/misc/guc.c 2006-01-19 22:02:42.000000000 +0900
--- pgsql/src/backend/utils/misc/guc.c 2006-01-19 22:13:02.000000000 +0900
*************** extern int CommitDelay;
*** 95,100 ****
--- 95,102 ----
extern int CommitSiblings;
extern char *default_tablespace;
extern bool fullPageWrites;
+ extern double btree_node_free_percent;
+ extern double btree_leaf_free_percent;
#ifdef TRACE_SORT
extern bool trace_sort;
*************** static struct config_real ConfigureNames
*** 1685,1690 ****
--- 1687,1710 ----
0.2, 0.0, 100.0, NULL, NULL
},
+ {
+ {"btree_node_free_percent", PGC_SUSET, RESOURCES,
+ gettext_noop("Reserved free space for btree node pages during index creation."),
+ NULL
+ },
+ &btree_node_free_percent,
+ 30.0, 0.0, 66.6, NULL, NULL
+ },
+
+ {
+ {"btree_leaf_free_percent", PGC_SUSET, RESOURCES,
+ gettext_noop("Reserved free space for btree leaf pages during index creation."),
+ NULL
+ },
+ &btree_leaf_free_percent,
+ 10.0, 0.0, 66.6, NULL, NULL
+ },
+
/* End-of-list marker */
{
{NULL, 0, 0, NULL, NULL}, NULL, 0.0, 0.0, 0.0, NULL, NULL