diff options
author | Bruce Momjian <bruce@momjian.us> | 2006-07-02 02:23:23 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2006-07-02 02:23:23 +0000 |
commit | 277807bd9eba1645d8dfc9252fa29220c4a83751 (patch) | |
tree | fb3dca975d8371bd42e9e58d0b841db3fd6c4654 /src/backend/access/gist/gistutil.c | |
parent | 5d5c1416bf03efcf13cfd3b8f68a0bba199d70af (diff) | |
download | postgresql-277807bd9eba1645d8dfc9252fa29220c4a83751.tar.gz postgresql-277807bd9eba1645d8dfc9252fa29220c4a83751.zip |
Add FILLFACTOR to CREATE INDEX.
ITAGAKI Takahiro
Diffstat (limited to 'src/backend/access/gist/gistutil.c')
-rw-r--r-- | src/backend/access/gist/gistutil.c | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index 3be4fd31f58..ae1fbc73201 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -8,7 +8,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.16 2006/06/28 12:00:14 teodor Exp $ + * $PostgreSQL: pgsql/src/backend/access/gist/gistutil.c,v 1.17 2006/07/02 02:23:18 momjian Exp $ *------------------------------------------------------------------------- */ #include "postgres.h" @@ -58,9 +58,9 @@ gistfillbuffer(Relation r, Page page, IndexTuple *itup, * Check space for itup vector on page */ bool -gistnospace(Page page, IndexTuple *itvec, int len, OffsetNumber todelete) +gistnospace(Page page, IndexTuple *itvec, int len, OffsetNumber todelete, Size freespace) { - unsigned int size = 0, deleted = 0; + unsigned int size = freespace, deleted = 0; int i; for (i = 0; i < len; i++) @@ -82,6 +82,7 @@ gistfitpage(IndexTuple *itvec, int len) { for(i=0;i<len;i++) size += IndexTupleSize(itvec[i]) + sizeof(ItemIdData); + /* TODO: Consider fillfactor */ return (size <= GiSTPageSize); } @@ -634,3 +635,16 @@ gistNewBuffer(Relation r) return buffer; } + +Datum +gistoption(PG_FUNCTION_ARGS) +{ +#define GIST_DEFAULT_FILLFACTOR 90 +#define GIST_MIN_FILLFACTOR 50 + + ArrayType *options = (ArrayType *) PG_GETARG_POINTER(0); + + /* Use index common routine. */ + PG_RETURN_BYTEA_P(genam_option(options, + GIST_MIN_FILLFACTOR, GIST_DEFAULT_FILLFACTOR)); +} |