aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access')
-rw-r--r--src/backend/access/common/Makefile4
-rw-r--r--src/backend/access/common/indexvalid.c6
-rw-r--r--src/backend/access/common/scankey.c5
-rw-r--r--src/backend/access/gist/gist.c35
-rw-r--r--src/backend/access/gist/gistget.c4
-rw-r--r--src/backend/access/index/istrat.c13
-rw-r--r--src/backend/access/nbtree/nbtinsert.c5
-rw-r--r--src/backend/access/nbtree/nbtsearch.c5
-rw-r--r--src/backend/access/nbtree/nbtutils.c9
-rw-r--r--src/backend/access/rtree/rtree.c59
10 files changed, 65 insertions, 80 deletions
diff --git a/src/backend/access/common/Makefile b/src/backend/access/common/Makefile
index cf61311f553..594ec514db0 100644
--- a/src/backend/access/common/Makefile
+++ b/src/backend/access/common/Makefile
@@ -4,7 +4,7 @@
# Makefile for access/common
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/backend/access/common/Makefile,v 1.8 1997/12/20 00:22:11 scrappy Exp $
+# $Header: /cvsroot/pgsql/src/backend/access/common/Makefile,v 1.9 1998/01/15 19:41:42 pgsql Exp $
#
#-------------------------------------------------------------------------
@@ -23,7 +23,7 @@ all: SUBSYS.o
SUBSYS.o: $(OBJS)
$(LD) -r -o SUBSYS.o $(OBJS)
-heapvalid.o tupdesc.o: ../../fmgr.h
+heaptuple.o heapvalid.o tupdesc.o: ../../fmgr.h
../../fmgr.h:
$(MAKE) -C ../.. fmgr.h
diff --git a/src/backend/access/common/indexvalid.c b/src/backend/access/common/indexvalid.c
index 5a9f351568c..81240d2c443 100644
--- a/src/backend/access/common/indexvalid.c
+++ b/src/backend/access/common/indexvalid.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/Attic/indexvalid.c,v 1.16 1997/09/08 02:19:55 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/Attic/indexvalid.c,v 1.17 1998/01/15 19:41:44 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -66,13 +66,13 @@ index_keytest(IndexTuple tuple,
if (key[0].sk_flags & SK_COMMUTE)
{
- test = (*(key[0].sk_func))
+ test = (*(fmgr_faddr(&key[0].sk_func)))
(DatumGetPointer(key[0].sk_argument),
datum) ? 1 : 0;
}
else
{
- test = (*(key[0].sk_func))
+ test = (*(fmgr_faddr(&key[0].sk_func)))
(datum,
DatumGetPointer(key[0].sk_argument)) ? 1 : 0;
}
diff --git a/src/backend/access/common/scankey.c b/src/backend/access/common/scankey.c
index 9fbe264ae5c..130a80ae6d3 100644
--- a/src/backend/access/common/scankey.c
+++ b/src/backend/access/common/scankey.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/common/scankey.c,v 1.10 1997/09/07 04:37:39 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/common/scankey.c,v 1.11 1998/01/15 19:41:46 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -61,7 +61,8 @@ ScanKeyEntryInitialize(ScanKey entry,
entry->sk_attno = attributeNumber;
entry->sk_procedure = procedure;
entry->sk_argument = argument;
- fmgr_info(procedure, &entry->sk_func, &entry->sk_nargs);
+ fmgr_info(procedure, &entry->sk_func);
+ entry->sk_nargs = entry->sk_func.fn_nargs;
Assert(ScanKeyEntryIsLegal(entry));
}
diff --git a/src/backend/access/gist/gist.c b/src/backend/access/gist/gist.c
index b247a93ed39..a510dc8b203 100644
--- a/src/backend/access/gist/gist.c
+++ b/src/backend/access/gist/gist.c
@@ -565,10 +565,10 @@ gistAdjustKeys(Relation r,
ev1p = &((GISTENTRY *) VARDATA(evec))[1];
/* form union of decompressed entries */
- datum = (char *) (giststate->unionFn) (evec, &datumsize);
+ datum = (*fmgr_faddr(&giststate->unionFn)) (evec, &datumsize);
/* did union leave decompressed version of oldud unchanged? */
- (giststate->equalFn) (ev0p->pred, datum, &result);
+ (*fmgr_faddr(&giststate->equalFn)) (ev0p->pred, datum, &result);
if (!result)
{
TupleDesc td = RelationGetTupleDescriptor(r);
@@ -743,7 +743,7 @@ gistSplit(Relation r,
VARSIZE(entryvec) = (maxoff + 2) * sizeof(GISTENTRY) + VARHDRSZ;
/* now let the user-defined picksplit function set up the split vector */
- (giststate->picksplitFn) (entryvec, &v);
+ (*fmgr_faddr(&giststate->picksplitFn)) (entryvec, &v);
/* compress ldatum and rdatum */
gistcentryinit(giststate, &tmpentry, v.spl_ldatum, (Relation) NULL,
@@ -1072,7 +1072,7 @@ gistchoose(Relation r, Page p, IndexTuple it, /* it has compressed entry */
size = IndexTupleSize(datum) - sizeof(IndexTupleData);
datum += sizeof(IndexTupleData);
gistdentryinit(giststate, &entry, datum, r, p, i, size, FALSE);
- (giststate->penaltyFn) (&entry, &identry, &usize);
+ (*fmgr_faddr(&giststate->penaltyFn)) (&entry, &identry, &usize);
if (which_grow < 0 || usize < which_grow)
{
which = i;
@@ -1150,8 +1150,6 @@ initGISTstate(GISTSTATE *giststate, Relation index)
RegProcedure penalty_proc,
picksplit_proc,
equal_proc;
- func_ptr user_fn;
- int pronargs;
HeapTuple htup;
IndexTupleForm itupform;
@@ -1162,20 +1160,13 @@ initGISTstate(GISTSTATE *giststate, Relation index)
penalty_proc = index_getprocid(index, 1, GIST_PENALTY_PROC);
picksplit_proc = index_getprocid(index, 1, GIST_PICKSPLIT_PROC);
equal_proc = index_getprocid(index, 1, GIST_EQUAL_PROC);
- fmgr_info(consistent_proc, &user_fn, &pronargs);
- giststate->consistentFn = user_fn;
- fmgr_info(union_proc, &user_fn, &pronargs);
- giststate->unionFn = user_fn;
- fmgr_info(compress_proc, &user_fn, &pronargs);
- giststate->compressFn = user_fn;
- fmgr_info(decompress_proc, &user_fn, &pronargs);
- giststate->decompressFn = user_fn;
- fmgr_info(penalty_proc, &user_fn, &pronargs);
- giststate->penaltyFn = user_fn;
- fmgr_info(picksplit_proc, &user_fn, &pronargs);
- giststate->picksplitFn = user_fn;
- fmgr_info(equal_proc, &user_fn, &pronargs);
- giststate->equalFn = user_fn;
+ fmgr_info(consistent_proc, &giststate->consistentFn);
+ fmgr_info(union_proc, &giststate->unionFn);
+ fmgr_info(compress_proc, &giststate->compressFn);
+ fmgr_info(decompress_proc, &giststate->decompressFn);
+ fmgr_info(penalty_proc, &giststate->penaltyFn);
+ fmgr_info(picksplit_proc, &giststate->picksplitFn);
+ fmgr_info(equal_proc, &giststate->equalFn);
/* see if key type is different from type of attribute being indexed */
htup = SearchSysCacheTuple(INDEXRELID, ObjectIdGetDatum(index->rd_id),
@@ -1259,7 +1250,7 @@ gistdentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r,
gistentryinit(*e, pr, r, pg, o, b, l);
if (giststate->haskeytype)
{
- dep = (GISTENTRY *) ((giststate->decompressFn) (e));
+ dep = (GISTENTRY *) ((*fmgr_faddr(&giststate->decompressFn)) (e));
gistentryinit(*e, dep->pred, dep->rel, dep->page, dep->offset, dep->bytes,
dep->leafkey);
if (dep != e)
@@ -1280,7 +1271,7 @@ gistcentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r,
gistentryinit(*e, pr, r, pg, o, b, l);
if (giststate->haskeytype)
{
- cep = (GISTENTRY *) ((giststate->compressFn) (e));
+ cep = (GISTENTRY *) ((*fmgr_faddr(&giststate->compressFn)) (e));
gistentryinit(*e, cep->pred, cep->rel, cep->page, cep->offset, cep->bytes,
cep->leafkey);
if (cep != e)
diff --git a/src/backend/access/gist/gistget.c b/src/backend/access/gist/gistget.c
index 3e093745844..de250987755 100644
--- a/src/backend/access/gist/gistget.c
+++ b/src/backend/access/gist/gistget.c
@@ -283,13 +283,13 @@ gistindex_keytest(IndexTuple tuple,
if (key[0].sk_flags & SK_COMMUTE)
{
- test = (*(key[0].sk_func))
+ test = (*fmgr_faddr(&key[0].sk_func))
(DatumGetPointer(key[0].sk_argument),
&de, key[0].sk_procedure) ? 1 : 0;
}
else
{
- test = (*(key[0].sk_func))
+ test = (*fmgr_faddr(&key[0].sk_func))
(&de,
DatumGetPointer(key[0].sk_argument),
key[0].sk_procedure) ? 1 : 0;
diff --git a/src/backend/access/index/istrat.c b/src/backend/access/index/istrat.c
index 3fc972a09a1..01825cc6848 100644
--- a/src/backend/access/index/istrat.c
+++ b/src/backend/access/index/istrat.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.15 1998/01/07 21:01:45 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.16 1998/01/15 19:42:02 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -242,22 +242,22 @@ StrategyTermEvaluate(StrategyTerm term,
switch (operator->flags ^ entry->sk_flags)
{
case 0x0:
- tmpres = (long) FMGR_PTR2(entry->sk_func, entry->sk_procedure,
+ tmpres = (long) FMGR_PTR2(&entry->sk_func,
left, right);
break;
case SK_NEGATE:
- tmpres = (long) !FMGR_PTR2(entry->sk_func, entry->sk_procedure,
+ tmpres = (long) !FMGR_PTR2(&entry->sk_func,
left, right);
break;
case SK_COMMUTE:
- tmpres = (long) FMGR_PTR2(entry->sk_func, entry->sk_procedure,
+ tmpres = (long) FMGR_PTR2(&entry->sk_func,
right, left);
break;
case SK_NEGATE | SK_COMMUTE:
- tmpres = (long) !FMGR_PTR2(entry->sk_func, entry->sk_procedure,
+ tmpres = (long) !FMGR_PTR2(&entry->sk_func,
right, left);
break;
@@ -521,7 +521,8 @@ OperatorRelationFillScanKeyEntry(Relation operatorRelation,
entry->sk_flags = 0;
entry->sk_procedure =
((OperatorTupleForm) GETSTRUCT(tuple))->oprcode;
- fmgr_info(entry->sk_procedure, &entry->sk_func, &entry->sk_nargs);
+ fmgr_info(entry->sk_procedure, &entry->sk_func);
+ entry->sk_nargs = entry->sk_func.fn_nargs;
if (!RegProcedureIsValid(entry->sk_procedure))
{
diff --git a/src/backend/access/nbtree/nbtinsert.c b/src/backend/access/nbtree/nbtinsert.c
index c903c6fd34a..b00dae99a0c 100644
--- a/src/backend/access/nbtree/nbtinsert.c
+++ b/src/backend/access/nbtree/nbtinsert.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.24 1998/01/07 21:01:52 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtinsert.c,v 1.25 1998/01/15 19:42:10 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -1487,8 +1487,7 @@ _bt_isequal(TupleDesc itupdesc, Page page, OffsetNumber offnum,
if (entry->sk_flags & SK_ISNULL || null)
return (false);
- result = (long) FMGR_PTR2(entry->sk_func, entry->sk_procedure,
- entry->sk_argument, datum);
+ result = (long) FMGR_PTR2(&entry->sk_func, entry->sk_argument, datum);
if (result != 0)
return (false);
}
diff --git a/src/backend/access/nbtree/nbtsearch.c b/src/backend/access/nbtree/nbtsearch.c
index f763af2ee76..32bd77d8570 100644
--- a/src/backend/access/nbtree/nbtsearch.c
+++ b/src/backend/access/nbtree/nbtsearch.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.29 1998/01/07 21:01:56 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtsearch.c,v 1.30 1998/01/15 19:42:13 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -677,8 +677,7 @@ _bt_compare(Relation rel,
}
else
{
- tmpres = (long) FMGR_PTR2(entry->sk_func, entry->sk_procedure,
- entry->sk_argument, datum);
+ tmpres = (long) FMGR_PTR2(&entry->sk_func, entry->sk_argument, datum);
}
result = tmpres;
diff --git a/src/backend/access/nbtree/nbtutils.c b/src/backend/access/nbtree/nbtutils.c
index ce6b3449de2..b7adfe2179e 100644
--- a/src/backend/access/nbtree/nbtutils.c
+++ b/src/backend/access/nbtree/nbtutils.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtutils.c,v 1.17 1998/01/07 21:02:01 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/nbtree/nbtutils.c,v 1.18 1998/01/15 19:42:15 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -263,8 +263,7 @@ _bt_orderkeys(Relation relation, BTScanOpaque so)
{
/* yup, use the appropriate value */
test =
- (long) FMGR_PTR2(cur->sk_func, cur->sk_procedure,
- cur->sk_argument, xform[j].sk_argument);
+ (long) FMGR_PTR2(&cur->sk_func, cur->sk_argument, xform[j].sk_argument);
if (test)
xform[j].sk_argument = cur->sk_argument;
else if (j == (BTEqualStrategyNumber - 1))
@@ -381,13 +380,13 @@ _bt_checkkeys(IndexScanDesc scan, IndexTuple tuple, Size *keysok)
if (key[0].sk_flags & SK_COMMUTE)
{
- test = (int) (*(key[0].sk_func))
+ test = (int) (*fmgr_faddr(&key[0].sk_func))
(DatumGetPointer(key[0].sk_argument),
datum);
}
else
{
- test = (int) (*(key[0].sk_func))
+ test = (int) (*fmgr_faddr(&key[0].sk_func))
(datum,
DatumGetPointer(key[0].sk_argument));
}
diff --git a/src/backend/access/rtree/rtree.c b/src/backend/access/rtree/rtree.c
index ac39b4d99b6..af401accd68 100644
--- a/src/backend/access/rtree/rtree.c
+++ b/src/backend/access/rtree/rtree.c
@@ -7,7 +7,7 @@
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.21 1998/01/07 21:02:07 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/rtree/Attic/rtree.c,v 1.22 1998/01/15 19:42:19 pgsql Exp $
*
*-------------------------------------------------------------------------
*/
@@ -44,9 +44,9 @@ typedef struct SPLITVEC
typedef struct RTSTATE
{
- func_ptr unionFn; /* union function */
- func_ptr sizeFn; /* size function */
- func_ptr interFn; /* intersection function */
+ FmgrInfo unionFn; /* union function */
+ FmgrInfo sizeFn; /* size function */
+ FmgrInfo interFn; /* intersection function */
} RTSTATE;
/* non-export function prototypes */
@@ -430,10 +430,10 @@ rttighten(Relation r,
oldud = (char *) PageGetItem(p, PageGetItemId(p, stk->rts_child));
oldud += sizeof(IndexTupleData);
- (*rtstate->sizeFn) (oldud, &old_size);
- datum = (char *) (*rtstate->unionFn) (oldud, datum);
+ (*fmgr_faddr(&rtstate->sizeFn)) (oldud, &old_size);
+ datum = (char *) (*fmgr_faddr(&rtstate->unionFn)) (oldud, datum);
- (*rtstate->sizeFn) (datum, &newd_size);
+ (*fmgr_faddr(&rtstate->sizeFn)) (datum, &newd_size);
if (newd_size != old_size)
{
@@ -462,7 +462,7 @@ rttighten(Relation r,
* union proc, which is guaranteed to return a rectangle.
*/
- tdatum = (char *) (*rtstate->unionFn) (datum, datum);
+ tdatum = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum, datum);
rttighten(r, stk->rts_parent, tdatum, att_size, rtstate);
pfree(tdatum);
}
@@ -686,7 +686,7 @@ rtintinsert(Relation r,
WriteBuffer(b);
ldatum = (((char *) ltup) + sizeof(IndexTupleData));
rdatum = (((char *) rtup) + sizeof(IndexTupleData));
- newdatum = (char *) (*rtstate->unionFn) (ldatum, rdatum);
+ newdatum = (char *) (*fmgr_faddr(&rtstate->unionFn)) (ldatum, rdatum);
rttighten(r, stk->rts_parent, newdatum,
(IndexTupleSize(rtup) - sizeof(IndexTupleData)), rtstate);
@@ -765,10 +765,10 @@ picksplit(Relation r,
datum_beta = ((char *) item_2) + sizeof(IndexTupleData);
/* compute the wasted space by unioning these guys */
- union_d = (char *) (rtstate->unionFn) (datum_alpha, datum_beta);
- (rtstate->sizeFn) (union_d, &size_union);
- inter_d = (char *) (rtstate->interFn) (datum_alpha, datum_beta);
- (rtstate->sizeFn) (inter_d, &size_inter);
+ 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);
size_waste = size_union - size_inter;
pfree(union_d);
@@ -798,12 +798,12 @@ picksplit(Relation r,
item_1 = (IndexTuple) PageGetItem(page, PageGetItemId(page, seed_1));
datum_alpha = ((char *) item_1) + sizeof(IndexTupleData);
- datum_l = (char *) (*rtstate->unionFn) (datum_alpha, datum_alpha);
- (*rtstate->sizeFn) (datum_l, &size_l);
+ datum_l = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_alpha, datum_alpha);
+ (*fmgr_faddr(&rtstate->sizeFn)) (datum_l, &size_l);
item_2 = (IndexTuple) PageGetItem(page, PageGetItemId(page, seed_2));
datum_beta = ((char *) item_2) + sizeof(IndexTupleData);
- datum_r = (char *) (*rtstate->unionFn) (datum_beta, datum_beta);
- (*rtstate->sizeFn) (datum_r, &size_r);
+ datum_r = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum_beta, datum_beta);
+ (*fmgr_faddr(&rtstate->sizeFn)) (datum_r, &size_r);
/*
* Now split up the regions between the two seeds. An important
@@ -851,10 +851,10 @@ picksplit(Relation r,
}
datum_alpha = ((char *) item_1) + sizeof(IndexTupleData);
- union_dl = (char *) (*rtstate->unionFn) (datum_l, datum_alpha);
- union_dr = (char *) (*rtstate->unionFn) (datum_r, datum_alpha);
- (*rtstate->sizeFn) (union_dl, &size_alpha);
- (*rtstate->sizeFn) (union_dr, &size_beta);
+ 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);
/* pick which page to add it to */
if (size_alpha - size_l < size_beta - size_r)
@@ -921,9 +921,9 @@ choose(Relation r, Page p, IndexTuple it, RTSTATE *rtstate)
{
datum = (char *) PageGetItem(p, PageGetItemId(p, i));
datum += sizeof(IndexTupleData);
- (*rtstate->sizeFn) (datum, &dsize);
- ud = (char *) (*rtstate->unionFn) (datum, id);
- (*rtstate->sizeFn) (ud, &usize);
+ (*fmgr_faddr(&rtstate->sizeFn)) (datum, &dsize);
+ ud = (char *) (*fmgr_faddr(&rtstate->unionFn)) (datum, id);
+ (*fmgr_faddr(&rtstate->sizeFn)) (ud, &usize);
pfree(ud);
if (which_grow < 0 || usize - dsize < which_grow)
{
@@ -991,18 +991,13 @@ initRtstate(RTSTATE *rtstate, Relation index)
RegProcedure union_proc,
size_proc,
inter_proc;
- func_ptr user_fn;
- int pronargs;
union_proc = index_getprocid(index, 1, RT_UNION_PROC);
size_proc = index_getprocid(index, 1, RT_SIZE_PROC);
inter_proc = index_getprocid(index, 1, RT_INTER_PROC);
- fmgr_info(union_proc, &user_fn, &pronargs);
- rtstate->unionFn = user_fn;
- fmgr_info(size_proc, &user_fn, &pronargs);
- rtstate->sizeFn = user_fn;
- fmgr_info(inter_proc, &user_fn, &pronargs);
- rtstate->interFn = user_fn;
+ fmgr_info(union_proc, &rtstate->unionFn);
+ fmgr_info(size_proc, &rtstate->sizeFn);
+ fmgr_info(inter_proc, &rtstate->interFn);
return;
}