Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit1f7ef54

Browse files
committed
Changes
* new split algorithm (as proposed inhttp://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 opclassesTODO: add support of subsplit to contrib modules
1 parenta1dc5c6 commit1f7ef54

File tree

23 files changed

+266
-645
lines changed

23 files changed

+266
-645
lines changed

‎contrib/btree_gist/btree_inet.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ gbt_inet_compress(PG_FUNCTION_ARGS)
100100
r->upper=r->lower;
101101
gistentryinit(*retval,PointerGetDatum(r),
102102
entry->rel,entry->page,
103-
entry->offset,sizeof(inetKEY),FALSE);
103+
entry->offset, FALSE);
104104
}
105105
else
106106
retval=entry;

‎contrib/btree_gist/btree_interval.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ gbt_intv_compress(PG_FUNCTION_ARGS)
129129
}
130130
gistentryinit(*retval,PointerGetDatum(r),
131131
entry->rel,entry->page,
132-
entry->offset,2*INTERVALSIZE,FALSE);
132+
entry->offset, FALSE);
133133
}
134134

135135
PG_RETURN_POINTER(retval);
@@ -153,7 +153,7 @@ gbt_intv_decompress(PG_FUNCTION_ARGS)
153153

154154
gistentryinit(*retval,PointerGetDatum(r),
155155
entry->rel,entry->page,
156-
entry->offset,sizeof(intvKEY),FALSE);
156+
entry->offset, FALSE);
157157
}
158158
PG_RETURN_POINTER(retval);
159159
}

‎contrib/btree_gist/btree_text.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ gbt_bpchar_compress(PG_FUNCTION_ARGS)
115115

116116
gistentryinit(trim,d,
117117
entry->rel,entry->page,
118-
entry->offset,VARSIZE(DatumGetPointer(d)),TRUE);
118+
entry->offset, TRUE);
119119
retval=gbt_var_compress(&trim,&tinfo);
120120
}
121121
else

‎contrib/btree_gist/btree_time.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ gbt_timetz_compress(PG_FUNCTION_ARGS)
137137
r->lower=r->upper=tmp;
138138
gistentryinit(*retval,PointerGetDatum(r),
139139
entry->rel,entry->page,
140-
entry->offset,sizeof(timeKEY),FALSE);
140+
entry->offset, FALSE);
141141
}
142142
else
143143
retval=entry;

‎contrib/btree_gist/btree_ts.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ gbt_tstz_compress(PG_FUNCTION_ARGS)
159159
r->lower=r->upper=gmt;
160160
gistentryinit(*retval,PointerGetDatum(r),
161161
entry->rel,entry->page,
162-
entry->offset,sizeof(tsKEY),FALSE);
162+
entry->offset, FALSE);
163163
}
164164
else
165165
retval=entry;

‎contrib/btree_gist/btree_utils_num.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ gbt_num_compress(GISTENTRY *retval, GISTENTRY *entry, const gbtree_ninfo * tinfo
4646
memcpy((void*)&r[tinfo->size],leaf,tinfo->size);
4747
retval=palloc(sizeof(GISTENTRY));
4848
gistentryinit(*retval,PointerGetDatum(r),entry->rel,entry->page,
49-
entry->offset,(2*tinfo->size),FALSE);
49+
entry->offset, FALSE);
5050
}
5151
else
5252
retval=entry;

‎contrib/btree_gist/btree_utils_var.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ gbt_var_decompress(PG_FUNCTION_ARGS)
1919

2020
gistentryinit(*retval,PointerGetDatum(key),
2121
entry->rel,entry->page,
22-
entry->offset,VARSIZE(key),FALSE);
22+
entry->offset, FALSE);
2323

2424
PG_RETURN_POINTER(retval);
2525
}
@@ -292,7 +292,7 @@ gbt_var_compress(GISTENTRY *entry, const gbtree_vinfo * tinfo)
292292
retval=palloc(sizeof(GISTENTRY));
293293
gistentryinit(*retval,PointerGetDatum(r),
294294
entry->rel,entry->page,
295-
entry->offset,VARSIZE(r),TRUE);
295+
entry->offset, TRUE);
296296
}
297297
else
298298
retval=entry;

‎contrib/cube/cube.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/******************************************************************************
2-
$PostgreSQL: pgsql/contrib/cube/cube.c,v 1.25 2006/05/30 22:12:12 tgl Exp $
2+
$PostgreSQL: pgsql/contrib/cube/cube.c,v 1.26 2006/06/28 11:59:59 teodor Exp $
33
44
This file contains routines that can be bound to a Postgres backend and
55
called by the backend in the process of processing queries. The calling
@@ -300,8 +300,8 @@ g_cube_picksplit(GistEntryVector *entryvec,
300300
doublesize_l,
301301
size_r;
302302
intnbytes;
303-
OffsetNumberseed_1=0,
304-
seed_2=0;
303+
OffsetNumberseed_1=1,
304+
seed_2=2;
305305
OffsetNumber*left,
306306
*right;
307307
OffsetNumbermaxoff;

‎contrib/intarray/_int_gist.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ g_int_compress(PG_FUNCTION_ARGS)
154154

155155
retval=palloc(sizeof(GISTENTRY));
156156
gistentryinit(*retval,PointerGetDatum(r),
157-
entry->rel,entry->page,entry->offset,VARSIZE(r),FALSE);
157+
entry->rel,entry->page,entry->offset, FALSE);
158158

159159
PG_RETURN_POINTER(retval);
160160
}
@@ -201,7 +201,7 @@ g_int_compress(PG_FUNCTION_ARGS)
201201
r=resize_intArrayType(r,len);
202202
retval=palloc(sizeof(GISTENTRY));
203203
gistentryinit(*retval,PointerGetDatum(r),
204-
entry->rel,entry->page,entry->offset,VARSIZE(r),FALSE);
204+
entry->rel,entry->page,entry->offset, FALSE);
205205
PG_RETURN_POINTER(retval);
206206
}
207207
else
@@ -238,7 +238,7 @@ g_int_decompress(PG_FUNCTION_ARGS)
238238
{
239239
retval=palloc(sizeof(GISTENTRY));
240240
gistentryinit(*retval,PointerGetDatum(in),
241-
entry->rel,entry->page,entry->offset,VARSIZE(in),FALSE);
241+
entry->rel,entry->page,entry->offset, FALSE);
242242

243243
PG_RETURN_POINTER(retval);
244244
}
@@ -260,7 +260,7 @@ g_int_decompress(PG_FUNCTION_ARGS)
260260
pfree(in);
261261
retval=palloc(sizeof(GISTENTRY));
262262
gistentryinit(*retval,PointerGetDatum(r),
263-
entry->rel,entry->page,entry->offset,VARSIZE(r),FALSE);
263+
entry->rel,entry->page,entry->offset, FALSE);
264264

265265
PG_RETURN_POINTER(retval);
266266
}

‎contrib/intarray/_intbig_gist.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ g_intbig_compress(PG_FUNCTION_ARGS)
172172
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
173173
gistentryinit(*retval,PointerGetDatum(res),
174174
entry->rel,entry->page,
175-
entry->offset,res->len,FALSE);
175+
entry->offset, FALSE);
176176

177177
if (in!= (ArrayType*)PG_DETOAST_DATUM(entry->key))
178178
pfree(in);
@@ -198,7 +198,7 @@ g_intbig_compress(PG_FUNCTION_ARGS)
198198
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
199199
gistentryinit(*retval,PointerGetDatum(res),
200200
entry->rel,entry->page,
201-
entry->offset,res->len,FALSE);
201+
entry->offset, FALSE);
202202

203203
PG_RETURN_POINTER(retval);
204204
}

‎contrib/ltree/_ltree_gist.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
108108
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
109109
gistentryinit(*retval,PointerGetDatum(key),
110110
entry->rel,entry->page,
111-
entry->offset,key->len,FALSE);
111+
entry->offset, FALSE);
112112
}
113113
elseif (!LTG_ISALLTRUE(entry->key))
114114
{
@@ -130,7 +130,7 @@ _ltree_compress(PG_FUNCTION_ARGS)
130130
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
131131
gistentryinit(*retval,PointerGetDatum(key),
132132
entry->rel,entry->page,
133-
entry->offset,key->len,FALSE);
133+
entry->offset, FALSE);
134134
}
135135
PG_RETURN_POINTER(retval);
136136
}

‎contrib/ltree/ltree_gist.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
* GiST support for ltree
33
* Teodor Sigaev <teodor@stack.net>
4-
* $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.14 2006/03/11 04:38:29 momjian Exp $
4+
* $PostgreSQL: pgsql/contrib/ltree/ltree_gist.c,v 1.15 2006/06/28 11:59:59 teodor Exp $
55
*/
66

77
#include"ltree.h"
@@ -81,7 +81,7 @@ ltree_compress(PG_FUNCTION_ARGS)
8181
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
8282
gistentryinit(*retval,PointerGetDatum(key),
8383
entry->rel,entry->page,
84-
entry->offset,key->len,FALSE);
84+
entry->offset, FALSE);
8585
}
8686
PG_RETURN_POINTER(retval);
8787
}
@@ -98,7 +98,7 @@ ltree_decompress(PG_FUNCTION_ARGS)
9898

9999
gistentryinit(*retval,PointerGetDatum(key),
100100
entry->rel,entry->page,
101-
entry->offset,key->len,FALSE);
101+
entry->offset, FALSE);
102102
PG_RETURN_POINTER(retval);
103103
}
104104
PG_RETURN_POINTER(entry);

‎contrib/pg_trgm/trgm_gist.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ gtrgm_compress(PG_FUNCTION_ARGS)
103103
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
104104
gistentryinit(*retval,PointerGetDatum(res),
105105
entry->rel,entry->page,
106-
entry->offset,res->len,FALSE);
106+
entry->offset, FALSE);
107107
}
108108
elseif (ISSIGNKEY(DatumGetPointer(entry->key))&&
109109
!ISALLTRUE(DatumGetPointer(entry->key)))
@@ -126,7 +126,7 @@ gtrgm_compress(PG_FUNCTION_ARGS)
126126
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
127127
gistentryinit(*retval,PointerGetDatum(res),
128128
entry->rel,entry->page,
129-
entry->offset,res->len,FALSE);
129+
entry->offset, FALSE);
130130
}
131131
PG_RETURN_POINTER(retval);
132132
}

‎contrib/seg/seg.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -316,8 +316,8 @@ gseg_picksplit(GistEntryVector *entryvec,
316316
floatsize_l,
317317
size_r;
318318
intnbytes;
319-
OffsetNumberseed_1=0,
320-
seed_2=0;
319+
OffsetNumberseed_1=1,
320+
seed_2=2;
321321
OffsetNumber*left,
322322
*right;
323323
OffsetNumbermaxoff;

‎contrib/tsearch2/gistidx.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $PostgreSQL: pgsql/contrib/tsearch2/gistidx.c,v 1.13 2006/03/11 04:38:30 momjian Exp $ */
1+
/* $PostgreSQL: pgsql/contrib/tsearch2/gistidx.c,v 1.14 2006/06/28 12:00:06 teodor Exp $ */
22

33
#include"postgres.h"
44

@@ -202,7 +202,7 @@ gtsvector_compress(PG_FUNCTION_ARGS)
202202
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
203203
gistentryinit(*retval,PointerGetDatum(res),
204204
entry->rel,entry->page,
205-
entry->offset,res->len,FALSE);
205+
entry->offset, FALSE);
206206
}
207207
elseif (ISSIGNKEY(DatumGetPointer(entry->key))&&
208208
!ISALLTRUE(DatumGetPointer(entry->key)))
@@ -225,7 +225,7 @@ gtsvector_compress(PG_FUNCTION_ARGS)
225225
retval= (GISTENTRY*)palloc(sizeof(GISTENTRY));
226226
gistentryinit(*retval,PointerGetDatum(res),
227227
entry->rel,entry->page,
228-
entry->offset,res->len,FALSE);
228+
entry->offset, FALSE);
229229
}
230230
PG_RETURN_POINTER(retval);
231231
}
@@ -242,7 +242,7 @@ gtsvector_decompress(PG_FUNCTION_ARGS)
242242

243243
gistentryinit(*retval,PointerGetDatum(key),
244244
entry->rel,entry->page,
245-
entry->offset,key->len,FALSE);
245+
entry->offset, FALSE);
246246

247247
PG_RETURN_POINTER(retval);
248248
}

‎contrib/tsearch2/query_gist.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ gtsq_compress(PG_FUNCTION_ARGS)
164164

165165
gistentryinit(*retval,PointerGetDatum(sign),
166166
entry->rel,entry->page,
167-
entry->offset,sizeof(TPQTGist),FALSE);
167+
entry->offset, FALSE);
168168
}
169169

170170
PG_RETURN_POINTER(retval);

‎src/backend/access/gist/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
# Makefile for access/gist
55
#
66
# IDENTIFICATION
7-
# $PostgreSQL: pgsql/src/backend/access/gist/Makefile,v 1.15 2005/07/01 19:19:02 tgl Exp $
7+
# $PostgreSQL: pgsql/src/backend/access/gist/Makefile,v 1.16 2006/06/28 12:00:13 teodor Exp $
88
#
99
#-------------------------------------------------------------------------
1010

@@ -13,7 +13,7 @@ top_builddir = ../../../..
1313
include$(top_builddir)/src/Makefile.global
1414

1515
OBJS = gist.o gistutil.o gistxlog.o gistvacuum.o gistget.o gistscan.o\
16-
gistproc.o
16+
gistproc.o gistsplit.o
1717

1818
all: SUBSYS.o
1919

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp