aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorTeodor Sigaev <teodor@sigaev.ru>2006-06-28 12:00:14 +0000
committerTeodor Sigaev <teodor@sigaev.ru>2006-06-28 12:00:14 +0000
commit1f7ef548ec2e594fa8766781c490fb5b998ea46b (patch)
treea552894bd93658d85c7136d00042c4b05e19a9a6 /contrib
parenta1dc5c60bcd4c458e160bf0e355bed083a1cab57 (diff)
downloadpostgresql-1f7ef548ec2e594fa8766781c490fb5b998ea46b.tar.gz
postgresql-1f7ef548ec2e594fa8766781c490fb5b998ea46b.zip
Changes
* new split algorithm (as proposed in http://archives.postgresql.org/pgsql-hackers/2006-06/msg00254.php) * possible call pickSplit() for second and below columns * add spl_(l|r)datum_exists to GIST_SPLITVEC - pickSplit should check its values to use already defined spl_(l|r)datum for splitting. pickSplit should set spl_(l|r)datum_exists to 'false' (if they was 'true') to signal to caller about using spl_(l|r)datum. * support for old pickSplit(): not very optimal but correct split * remove 'bytes' field from GISTENTRY: in any case size of value is defined by it's type. * split GIST_SPLITVEC to two structures: one for using in picksplit and second - for internal use. * some code refactoring * support of subsplit to rtree opclasses TODO: add support of subsplit to contrib modules
Diffstat (limited to 'contrib')
-rw-r--r--contrib/btree_gist/btree_inet.c2
-rw-r--r--contrib/btree_gist/btree_interval.c4
-rw-r--r--contrib/btree_gist/btree_text.c2
-rw-r--r--contrib/btree_gist/btree_time.c2
-rw-r--r--contrib/btree_gist/btree_ts.c2
-rw-r--r--contrib/btree_gist/btree_utils_num.c2
-rw-r--r--contrib/btree_gist/btree_utils_var.c4
-rw-r--r--contrib/cube/cube.c6
-rw-r--r--contrib/intarray/_int_gist.c8
-rw-r--r--contrib/intarray/_intbig_gist.c4
-rw-r--r--contrib/ltree/_ltree_gist.c4
-rw-r--r--contrib/ltree/ltree_gist.c6
-rw-r--r--contrib/pg_trgm/trgm_gist.c4
-rw-r--r--contrib/seg/seg.c4
-rw-r--r--contrib/tsearch2/gistidx.c8
-rw-r--r--contrib/tsearch2/query_gist.c2
16 files changed, 32 insertions, 32 deletions
diff --git a/contrib/btree_gist/btree_inet.c b/contrib/btree_gist/btree_inet.c
index 551368cec2e..914f4f6d5ef 100644
--- a/contrib/btree_gist/btree_inet.c
+++ b/contrib/btree_gist/btree_inet.c
@@ -100,7 +100,7 @@ gbt_inet_compress(PG_FUNCTION_ARGS)
r->upper = r->lower;
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
- entry->offset, sizeof(inetKEY), FALSE);
+ entry->offset, FALSE);
}
else
retval = entry;
diff --git a/contrib/btree_gist/btree_interval.c b/contrib/btree_gist/btree_interval.c
index b7776295a0e..6f346f94fed 100644
--- a/contrib/btree_gist/btree_interval.c
+++ b/contrib/btree_gist/btree_interval.c
@@ -129,7 +129,7 @@ gbt_intv_compress(PG_FUNCTION_ARGS)
}
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
- entry->offset, 2 * INTERVALSIZE, FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);
@@ -153,7 +153,7 @@ gbt_intv_decompress(PG_FUNCTION_ARGS)
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
- entry->offset, sizeof(intvKEY), FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);
}
diff --git a/contrib/btree_gist/btree_text.c b/contrib/btree_gist/btree_text.c
index 6ab77f86ae7..fa4eb904f50 100644
--- a/contrib/btree_gist/btree_text.c
+++ b/contrib/btree_gist/btree_text.c
@@ -115,7 +115,7 @@ gbt_bpchar_compress(PG_FUNCTION_ARGS)
gistentryinit(trim, d,
entry->rel, entry->page,
- entry->offset, VARSIZE(DatumGetPointer(d)), TRUE);
+ entry->offset, TRUE);
retval = gbt_var_compress(&trim, &tinfo);
}
else
diff --git a/contrib/btree_gist/btree_time.c b/contrib/btree_gist/btree_time.c
index c6a5697af0c..379f1e0a603 100644
--- a/contrib/btree_gist/btree_time.c
+++ b/contrib/btree_gist/btree_time.c
@@ -137,7 +137,7 @@ gbt_timetz_compress(PG_FUNCTION_ARGS)
r->lower = r->upper = tmp;
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
- entry->offset, sizeof(timeKEY), FALSE);
+ entry->offset, FALSE);
}
else
retval = entry;
diff --git a/contrib/btree_gist/btree_ts.c b/contrib/btree_gist/btree_ts.c
index 9f305119d84..9a7d6505279 100644
--- a/contrib/btree_gist/btree_ts.c
+++ b/contrib/btree_gist/btree_ts.c
@@ -159,7 +159,7 @@ gbt_tstz_compress(PG_FUNCTION_ARGS)
r->lower = r->upper = gmt;
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
- entry->offset, sizeof(tsKEY), FALSE);
+ entry->offset, FALSE);
}
else
retval = entry;
diff --git a/contrib/btree_gist/btree_utils_num.c b/contrib/btree_gist/btree_utils_num.c
index 69292758f58..9798d015635 100644
--- a/contrib/btree_gist/btree_utils_num.c
+++ b/contrib/btree_gist/btree_utils_num.c
@@ -46,7 +46,7 @@ gbt_num_compress(GISTENTRY *retval, GISTENTRY *entry, const gbtree_ninfo * tinfo
memcpy((void *) &r[tinfo->size], leaf, tinfo->size);
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r), entry->rel, entry->page,
- entry->offset, (2 * tinfo->size), FALSE);
+ entry->offset, FALSE);
}
else
retval = entry;
diff --git a/contrib/btree_gist/btree_utils_var.c b/contrib/btree_gist/btree_utils_var.c
index 20a1e427f27..810ca78af9b 100644
--- a/contrib/btree_gist/btree_utils_var.c
+++ b/contrib/btree_gist/btree_utils_var.c
@@ -19,7 +19,7 @@ gbt_var_decompress(PG_FUNCTION_ARGS)
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
- entry->offset, VARSIZE(key), FALSE);
+ entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
@@ -292,7 +292,7 @@ gbt_var_compress(GISTENTRY *entry, const gbtree_vinfo * tinfo)
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r),
entry->rel, entry->page,
- entry->offset, VARSIZE(r), TRUE);
+ entry->offset, TRUE);
}
else
retval = entry;
diff --git a/contrib/cube/cube.c b/contrib/cube/cube.c
index 944eee62b17..87ca2db7688 100644
--- a/contrib/cube/cube.c
+++ b/contrib/cube/cube.c
@@ -1,5 +1,5 @@
/******************************************************************************
- $PostgreSQL: pgsql/contrib/cube/cube.c,v 1.25 2006/05/30 22:12:12 tgl Exp $
+ $PostgreSQL: pgsql/contrib/cube/cube.c,v 1.26 2006/06/28 11:59:59 teodor Exp $
This file contains routines that can be bound to a Postgres backend and
called by the backend in the process of processing queries. The calling
@@ -300,8 +300,8 @@ g_cube_picksplit(GistEntryVector *entryvec,
double size_l,
size_r;
int nbytes;
- OffsetNumber seed_1 = 0,
- seed_2 = 0;
+ OffsetNumber seed_1 = 1,
+ seed_2 = 2;
OffsetNumber *left,
*right;
OffsetNumber maxoff;
diff --git a/contrib/intarray/_int_gist.c b/contrib/intarray/_int_gist.c
index f82024896f2..df5ae03e54d 100644
--- a/contrib/intarray/_int_gist.c
+++ b/contrib/intarray/_int_gist.c
@@ -154,7 +154,7 @@ g_int_compress(PG_FUNCTION_ARGS)
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r),
- entry->rel, entry->page, entry->offset, VARSIZE(r), FALSE);
+ entry->rel, entry->page, entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
@@ -201,7 +201,7 @@ g_int_compress(PG_FUNCTION_ARGS)
r = resize_intArrayType(r, len);
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r),
- entry->rel, entry->page, entry->offset, VARSIZE(r), FALSE);
+ entry->rel, entry->page, entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
else
@@ -238,7 +238,7 @@ g_int_decompress(PG_FUNCTION_ARGS)
{
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(in),
- entry->rel, entry->page, entry->offset, VARSIZE(in), FALSE);
+ entry->rel, entry->page, entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
@@ -260,7 +260,7 @@ g_int_decompress(PG_FUNCTION_ARGS)
pfree(in);
retval = palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(r),
- entry->rel, entry->page, entry->offset, VARSIZE(r), FALSE);
+ entry->rel, entry->page, entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
diff --git a/contrib/intarray/_intbig_gist.c b/contrib/intarray/_intbig_gist.c
index ecd949d87a2..626421f83c3 100644
--- a/contrib/intarray/_intbig_gist.c
+++ b/contrib/intarray/_intbig_gist.c
@@ -172,7 +172,7 @@ g_intbig_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
- entry->offset, res->len, FALSE);
+ entry->offset, FALSE);
if (in != (ArrayType *) PG_DETOAST_DATUM(entry->key))
pfree(in);
@@ -198,7 +198,7 @@ g_intbig_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
- entry->offset, res->len, FALSE);
+ entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
diff --git a/contrib/ltree/_ltree_gist.c b/contrib/ltree/_ltree_gist.c
index b95dc333340..285077802bb 100644
--- a/contrib/ltree/_ltree_gist.c
+++ b/contrib/ltree/_ltree_gist.c
@@ -108,7 +108,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
- entry->offset, key->len, FALSE);
+ entry->offset, FALSE);
}
else if (!LTG_ISALLTRUE(entry->key))
{
@@ -130,7 +130,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
- entry->offset, key->len, FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);
}
diff --git a/contrib/ltree/ltree_gist.c b/contrib/ltree/ltree_gist.c
index e210117cbc7..f5214b746b1 100644
--- a/contrib/ltree/ltree_gist.c
+++ b/contrib/ltree/ltree_gist.c
@@ -1,7 +1,7 @@
/*
* GiST support for ltree
* Teodor Sigaev <teodor@stack.net>
- * $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.14 2006/03/11 04:38:29 momjian Exp $
+ * $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.15 2006/06/28 11:59:59 teodor Exp $
*/
#include "ltree.h"
@@ -81,7 +81,7 @@ ltree_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
- entry->offset, key->len, FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);
}
@@ -98,7 +98,7 @@ ltree_decompress(PG_FUNCTION_ARGS)
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
- entry->offset, key->len, FALSE);
+ entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
PG_RETURN_POINTER(entry);
diff --git a/contrib/pg_trgm/trgm_gist.c b/contrib/pg_trgm/trgm_gist.c
index 4c33a45a229..bfb92336d7d 100644
--- a/contrib/pg_trgm/trgm_gist.c
+++ b/contrib/pg_trgm/trgm_gist.c
@@ -103,7 +103,7 @@ gtrgm_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
- entry->offset, res->len, FALSE);
+ entry->offset, FALSE);
}
else if (ISSIGNKEY(DatumGetPointer(entry->key)) &&
!ISALLTRUE(DatumGetPointer(entry->key)))
@@ -126,7 +126,7 @@ gtrgm_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
- entry->offset, res->len, FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);
}
diff --git a/contrib/seg/seg.c b/contrib/seg/seg.c
index 47ca1b614a5..8f0c83c298d 100644
--- a/contrib/seg/seg.c
+++ b/contrib/seg/seg.c
@@ -316,8 +316,8 @@ gseg_picksplit(GistEntryVector *entryvec,
float size_l,
size_r;
int nbytes;
- OffsetNumber seed_1 = 0,
- seed_2 = 0;
+ OffsetNumber seed_1 = 1,
+ seed_2 = 2;
OffsetNumber *left,
*right;
OffsetNumber maxoff;
diff --git a/contrib/tsearch2/gistidx.c b/contrib/tsearch2/gistidx.c
index 7cc370bf84f..5afb1a41b3b 100644
--- a/contrib/tsearch2/gistidx.c
+++ b/contrib/tsearch2/gistidx.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/contrib/tsearch2/gistidx.c,v 1.13 2006/03/11 04:38:30 momjian Exp $ */
+/* $PostgreSQL: pgsql/contrib/tsearch2/gistidx.c,v 1.14 2006/06/28 12:00:06 teodor Exp $ */
#include "postgres.h"
@@ -202,7 +202,7 @@ gtsvector_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
- entry->offset, res->len, FALSE);
+ entry->offset, FALSE);
}
else if (ISSIGNKEY(DatumGetPointer(entry->key)) &&
!ISALLTRUE(DatumGetPointer(entry->key)))
@@ -225,7 +225,7 @@ gtsvector_compress(PG_FUNCTION_ARGS)
retval = (GISTENTRY *) palloc(sizeof(GISTENTRY));
gistentryinit(*retval, PointerGetDatum(res),
entry->rel, entry->page,
- entry->offset, res->len, FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);
}
@@ -242,7 +242,7 @@ gtsvector_decompress(PG_FUNCTION_ARGS)
gistentryinit(*retval, PointerGetDatum(key),
entry->rel, entry->page,
- entry->offset, key->len, FALSE);
+ entry->offset, FALSE);
PG_RETURN_POINTER(retval);
}
diff --git a/contrib/tsearch2/query_gist.c b/contrib/tsearch2/query_gist.c
index 5941be3a55b..d0a61389d2d 100644
--- a/contrib/tsearch2/query_gist.c
+++ b/contrib/tsearch2/query_gist.c
@@ -164,7 +164,7 @@ gtsq_compress(PG_FUNCTION_ARGS)
gistentryinit(*retval, PointerGetDatum(sign),
entry->rel, entry->page,
- entry->offset, sizeof(TPQTGist), FALSE);
+ entry->offset, FALSE);
}
PG_RETURN_POINTER(retval);