aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/gist/gistutil.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-07-02 02:23:23 +0000
committerBruce Momjian <bruce@momjian.us>2006-07-02 02:23:23 +0000
commit277807bd9eba1645d8dfc9252fa29220c4a83751 (patch)
treefb3dca975d8371bd42e9e58d0b841db3fd6c4654 /src/backend/access/gist/gistutil.c
parent5d5c1416bf03efcf13cfd3b8f68a0bba199d70af (diff)
downloadpostgresql-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.c20
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));
+}