1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-13 07:41:39 +03:00

Third round of fmgr updates: eliminate calls using fmgr() and

fmgr_faddr() in favor of new-style calls.  Lots of cleanup of
sloppy casts to use XXXGetDatum and DatumGetXXX ...
This commit is contained in:
Tom Lane
2000-05-30 04:25:00 +00:00
parent a12a23f0d0
commit 0f1e39643d
35 changed files with 570 additions and 443 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.46 2000/05/30 00:49:41 momjian Exp $
* $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.47 2000/05/30 04:24:34 tgl Exp $
*
*-------------------------------------------------------------------------
*/
@ -415,10 +415,18 @@ rttighten(Relation r,
oldud = (char *) PageGetItem(p, PageGetItemId(p, stk->rts_child));
oldud += sizeof(IndexTupleData);
(*fmgr_faddr(&rtstate->sizeFn)) (oldud, &old_size);
datum = (char *) (*fmgr_faddr(&rtstate->unionFn)) (oldud, datum);
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(oldud),
PointerGetDatum(&old_size));
(*fmgr_faddr(&rtstate->sizeFn)) (datum, &newd_size);
datum = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(oldud),
PointerGetDatum(datum)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(datum),
PointerGetDatum(&newd_size));
if (newd_size != old_size)
{
@ -445,7 +453,10 @@ rttighten(Relation r,
* union proc, which is guaranteed to return a rectangle.
*/
tdatum = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum, datum);
tdatum = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum),
PointerGetDatum(datum)));
rttighten(r, stk->rts_parent, tdatum, att_size, rtstate);
pfree(tdatum);
}
@ -665,7 +676,10 @@ rtintinsert(Relation r,
WriteBuffer(b);
ldatum = (((char *) ltup) + sizeof(IndexTupleData));
rdatum = (((char *) rtup) + sizeof(IndexTupleData));
newdatum = (char *) (*fmgr_faddr(&rtstate->unionFn)) (ldatum, rdatum);
newdatum = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(ldatum),
PointerGetDatum(rdatum)));
rttighten(r, stk->rts_parent, newdatum,
(IndexTupleSize(rtup) - sizeof(IndexTupleData)), rtstate);
@ -744,10 +758,20 @@ picksplit(Relation r,
datum_beta = ((char *) item_2) + sizeof(IndexTupleData);
/* compute the wasted space by unioning these guys */
union_d = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_alpha, datum_beta);
(*fmgr_faddr(&rtstate->sizeFn)) (union_d, &size_union);
inter_d = (char *) (*fmgr_faddr(&rtstate->interFn)) (datum_alpha, datum_beta);
(*fmgr_faddr(&rtstate->sizeFn)) (inter_d, &size_inter);
union_d = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum_alpha),
PointerGetDatum(datum_beta)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(union_d),
PointerGetDatum(&size_union));
inter_d = (char *)
DatumGetPointer(FunctionCall2(&rtstate->interFn,
PointerGetDatum(datum_alpha),
PointerGetDatum(datum_beta)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(inter_d),
PointerGetDatum(&size_inter));
size_waste = size_union - size_inter;
pfree(union_d);
@ -777,12 +801,22 @@ picksplit(Relation r,
item_1 = (IndexTuple) PageGetItem(page, PageGetItemId(page, seed_1));
datum_alpha = ((char *) item_1) + sizeof(IndexTupleData);
datum_l = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_alpha, datum_alpha);
(*fmgr_faddr(&rtstate->sizeFn)) (datum_l, &size_l);
datum_l = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum_alpha),
PointerGetDatum(datum_alpha)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(datum_l),
PointerGetDatum(&size_l));
item_2 = (IndexTuple) PageGetItem(page, PageGetItemId(page, seed_2));
datum_beta = ((char *) item_2) + sizeof(IndexTupleData);
datum_r = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_beta, datum_beta);
(*fmgr_faddr(&rtstate->sizeFn)) (datum_r, &size_r);
datum_r = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum_beta),
PointerGetDatum(datum_beta)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(datum_r),
PointerGetDatum(&size_r));
/*
* Now split up the regions between the two seeds. An important
@ -826,10 +860,20 @@ picksplit(Relation r,
item_1 = (IndexTuple) PageGetItem(page, PageGetItemId(page, i));
datum_alpha = ((char *) item_1) + sizeof(IndexTupleData);
union_dl = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_l, datum_alpha);
union_dr = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_r, datum_alpha);
(*fmgr_faddr(&rtstate->sizeFn)) (union_dl, &size_alpha);
(*fmgr_faddr(&rtstate->sizeFn)) (union_dr, &size_beta);
union_dl = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum_l),
PointerGetDatum(datum_alpha)));
union_dr = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum_r),
PointerGetDatum(datum_alpha)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(union_dl),
PointerGetDatum(&size_alpha));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(union_dr),
PointerGetDatum(&size_beta));
/* pick which page to add it to */
if (size_alpha - size_l < size_beta - size_r)
@ -896,9 +940,16 @@ choose(Relation r, Page p, IndexTuple it, RTSTATE *rtstate)
{
datum = (char *) PageGetItem(p, PageGetItemId(p, i));
datum += sizeof(IndexTupleData);
(*fmgr_faddr(&rtstate->sizeFn)) (datum, &dsize);
ud = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum, id);
(*fmgr_faddr(&rtstate->sizeFn)) (ud, &usize);
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(datum),
PointerGetDatum(&dsize));
ud = (char *)
DatumGetPointer(FunctionCall2(&rtstate->unionFn,
PointerGetDatum(datum),
PointerGetDatum(id)));
FunctionCall2(&rtstate->sizeFn,
PointerGetDatum(ud),
PointerGetDatum(&usize));
pfree(ud);
if (which_grow < 0 || usize - dsize < which_grow)
{