Skip to content

Commit 0f1e396

Browse files
committed
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 ...
1 parent a12a23f commit 0f1e396

File tree

35 files changed

+575
-448
lines changed

35 files changed

+575
-448
lines changed

src/backend/access/common/indexvalid.c

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/common/Attic/indexvalid.c,v 1.24 2000/01/26 05:55:53 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/common/Attic/indexvalid.c,v 1.25 2000/05/30 04:24:27 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -40,7 +40,7 @@ index_keytest(IndexTuple tuple,
4040
{
4141
bool isNull;
4242
Datum datum;
43-
int test;
43+
Datum test;
4444

4545
IncrIndexProcessed();
4646

@@ -62,18 +62,16 @@ index_keytest(IndexTuple tuple,
6262

6363
if (key[0].sk_flags & SK_COMMUTE)
6464
{
65-
test = (*(fmgr_faddr(&key[0].sk_func)))
66-
(DatumGetPointer(key[0].sk_argument),
67-
datum) ? 1 : 0;
65+
test = FunctionCall2(&key[0].sk_func,
66+
key[0].sk_argument, datum);
6867
}
6968
else
7069
{
71-
test = (*(fmgr_faddr(&key[0].sk_func)))
72-
(datum,
73-
DatumGetPointer(key[0].sk_argument)) ? 1 : 0;
70+
test = FunctionCall2(&key[0].sk_func,
71+
datum, key[0].sk_argument);
7472
}
7573

76-
if (!test == !(key[0].sk_flags & SK_NEGATE))
74+
if (DatumGetBool(test) == !!(key[0].sk_flags & SK_NEGATE))
7775
return false;
7876

7977
scanKeySize -= 1;

src/backend/access/common/printtup.c

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.52 2000/01/26 05:55:53 momjian Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/access/common/printtup.c,v 1.53 2000/05/30 04:24:27 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -206,8 +206,10 @@ printtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
206206
continue;
207207
if (OidIsValid(thisState->typoutput))
208208
{
209-
outputstr = (char *) (*fmgr_faddr(&thisState->finfo))
210-
(attr, thisState->typelem, typeinfo->attrs[i]->atttypmod);
209+
outputstr = DatumGetCString(FunctionCall3(&thisState->finfo,
210+
attr,
211+
ObjectIdGetDatum(thisState->typelem),
212+
Int32GetDatum(typeinfo->attrs[i]->atttypmod)));
211213
pq_sendcountedtext(&buf, outputstr, strlen(outputstr));
212214
pfree(outputstr);
213215
}
@@ -295,8 +297,10 @@ debugtup(HeapTuple tuple, TupleDesc typeinfo, DestReceiver *self)
295297
if (getTypeOutAndElem((Oid) typeinfo->attrs[i]->atttypid,
296298
&typoutput, &typelem))
297299
{
298-
value = fmgr(typoutput, attr, typelem,
299-
typeinfo->attrs[i]->atttypmod);
300+
value = DatumGetCString(OidFunctionCall3(typoutput,
301+
attr,
302+
ObjectIdGetDatum(typelem),
303+
Int32GetDatum(typeinfo->attrs[i]->atttypmod)));
300304
printatt((unsigned) i + 1, typeinfo->attrs[i], value);
301305
pfree(value);
302306
}

src/backend/access/gist/gist.c

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
*
77
*
88
* IDENTIFICATION
9-
* $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.54 2000/05/30 00:49:39 momjian Exp $
9+
* $Header: /cvsroot/pgsql/src/backend/access/gist/gist.c,v 1.55 2000/05/30 04:24:28 tgl Exp $
1010
*
1111
*-------------------------------------------------------------------------
1212
*/
@@ -551,10 +551,16 @@ gistAdjustKeys(Relation r,
551551
ev1p = &((GISTENTRY *) VARDATA(evec))[1];
552552

553553
/* form union of decompressed entries */
554-
datum = (*fmgr_faddr(&giststate->unionFn)) (evec, &datumsize);
554+
datum = (char *)
555+
DatumGetPointer(FunctionCall2(&giststate->unionFn,
556+
PointerGetDatum(evec),
557+
PointerGetDatum(&datumsize)));
555558

556559
/* did union leave decompressed version of oldud unchanged? */
557-
(*fmgr_faddr(&giststate->equalFn)) (ev0p->pred, datum, &result);
560+
FunctionCall3(&giststate->equalFn,
561+
PointerGetDatum(ev0p->pred),
562+
PointerGetDatum(datum),
563+
PointerGetDatum(&result));
558564
if (!result)
559565
{
560566
TupleDesc td = RelationGetDescr(r);
@@ -727,7 +733,9 @@ gistSplit(Relation r,
727733
VARSIZE(entryvec) = (maxoff + 2) * sizeof(GISTENTRY) + VARHDRSZ;
728734

729735
/* now let the user-defined picksplit function set up the split vector */
730-
(*fmgr_faddr(&giststate->picksplitFn)) (entryvec, &v);
736+
FunctionCall2(&giststate->picksplitFn,
737+
PointerGetDatum(entryvec),
738+
PointerGetDatum(&v));
731739

732740
/* compress ldatum and rdatum */
733741
gistcentryinit(giststate, &tmpentry, v.spl_ldatum, (Relation) NULL,
@@ -1054,7 +1062,10 @@ gistchoose(Relation r, Page p, IndexTuple it, /* it has compressed entry */
10541062
size = IndexTupleSize(datum) - sizeof(IndexTupleData);
10551063
datum += sizeof(IndexTupleData);
10561064
gistdentryinit(giststate, &entry, datum, r, p, i, size, FALSE);
1057-
(*fmgr_faddr(&giststate->penaltyFn)) (&entry, &identry, &usize);
1065+
FunctionCall3(&giststate->penaltyFn,
1066+
PointerGetDatum(&entry),
1067+
PointerGetDatum(&identry),
1068+
PointerGetDatum(&usize));
10581069
if (which_grow < 0 || usize < which_grow)
10591070
{
10601071
which = i;
@@ -1237,7 +1248,9 @@ gistdentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r,
12371248
gistentryinit(*e, pr, r, pg, o, b, l);
12381249
if (giststate->haskeytype)
12391250
{
1240-
dep = (GISTENTRY *) ((*fmgr_faddr(&giststate->decompressFn)) (e));
1251+
dep = (GISTENTRY *)
1252+
DatumGetPointer(FunctionCall1(&giststate->decompressFn,
1253+
PointerGetDatum(e)));
12411254
gistentryinit(*e, dep->pred, dep->rel, dep->page, dep->offset, dep->bytes,
12421255
dep->leafkey);
12431256
if (dep != e)
@@ -1258,7 +1271,9 @@ gistcentryinit(GISTSTATE *giststate, GISTENTRY *e, char *pr, Relation r,
12581271
gistentryinit(*e, pr, r, pg, o, b, l);
12591272
if (giststate->haskeytype)
12601273
{
1261-
cep = (GISTENTRY *) ((*fmgr_faddr(&giststate->compressFn)) (e));
1274+
cep = (GISTENTRY *)
1275+
DatumGetPointer(FunctionCall1(&giststate->compressFn,
1276+
PointerGetDatum(e)));
12621277
gistentryinit(*e, cep->pred, cep->rel, cep->page, cep->offset, cep->bytes,
12631278
cep->leafkey);
12641279
if (cep != e)

src/backend/access/gist/gistget.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ gistindex_keytest(IndexTuple tuple,
227227
{
228228
bool isNull;
229229
Datum datum;
230-
int test;
230+
Datum test;
231231
GISTENTRY de;
232232

233233
IncrIndexProcessed();
@@ -251,19 +251,20 @@ gistindex_keytest(IndexTuple tuple,
251251

252252
if (key[0].sk_flags & SK_COMMUTE)
253253
{
254-
test = (*fmgr_faddr(&key[0].sk_func))
255-
(DatumGetPointer(key[0].sk_argument),
256-
&de, key[0].sk_procedure) ? 1 : 0;
254+
test = FunctionCall3(&key[0].sk_func,
255+
key[0].sk_argument,
256+
PointerGetDatum(&de),
257+
ObjectIdGetDatum(key[0].sk_procedure));
257258
}
258259
else
259260
{
260-
test = (*fmgr_faddr(&key[0].sk_func))
261-
(&de,
262-
DatumGetPointer(key[0].sk_argument),
263-
key[0].sk_procedure) ? 1 : 0;
261+
test = FunctionCall3(&key[0].sk_func,
262+
PointerGetDatum(&de),
263+
key[0].sk_argument,
264+
ObjectIdGetDatum(key[0].sk_procedure));
264265
}
265266

266-
if (!test == !(key[0].sk_flags & SK_NEGATE))
267+
if (DatumGetBool(test) == !!(key[0].sk_flags & SK_NEGATE))
267268
return false;
268269

269270
scanKeySize -= 1;

src/backend/access/hash/hashutil.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/hash/hashutil.c,v 1.23 2000/01/26 05:55:55 momjian Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/hash/hashutil.c,v 1.24 2000/05/30 04:24:31 tgl Exp $
1212
*
1313
*-------------------------------------------------------------------------
1414
*/
@@ -91,10 +91,8 @@ _hash_call(Relation rel, HashMetaPage metap, Datum key)
9191
{
9292
uint32 n;
9393
Bucket bucket;
94-
RegProcedure proc;
9594

96-
proc = metap->hashm_procid;
97-
n = (uint32) fmgr(proc, key);
95+
n = DatumGetUInt32(OidFunctionCall1(metap->hashm_procid, key));
9896
bucket = n & metap->hashm_highmask;
9997
if (bucket > metap->hashm_maxbucket)
10098
bucket = bucket & metap->hashm_lowmask;

src/backend/access/index/indexam.c

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
*
99
*
1010
* IDENTIFICATION
11-
* $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.43 2000/05/28 17:55:52 tgl Exp $
11+
* $Header: /cvsroot/pgsql/src/backend/access/index/indexam.c,v 1.44 2000/05/30 04:24:32 tgl Exp $
1212
*
1313
* INTERFACE ROUTINES
1414
* index_open - open an index relation by relationId
@@ -195,7 +195,13 @@ index_insert(Relation relation,
195195
* ----------------
196196
*/
197197
specificResult = (InsertIndexResult)
198-
fmgr(procedure, relation, datum, nulls, heap_t_ctid, heapRel, NULL);
198+
DatumGetPointer(OidFunctionCall6(procedure,
199+
PointerGetDatum(relation),
200+
PointerGetDatum(datum),
201+
PointerGetDatum(nulls),
202+
PointerGetDatum(heap_t_ctid),
203+
PointerGetDatum(heapRel),
204+
PointerGetDatum(NULL)));
199205

200206
/* must be pfree'ed */
201207
return specificResult;
@@ -213,7 +219,9 @@ index_delete(Relation relation, ItemPointer indexItem)
213219
RELATION_CHECKS;
214220
GET_REL_PROCEDURE(delete, amdelete);
215221

216-
fmgr(procedure, relation, indexItem);
222+
OidFunctionCall2(procedure,
223+
PointerGetDatum(relation),
224+
PointerGetDatum(indexItem));
217225
}
218226

219227
/* ----------------
@@ -245,7 +253,11 @@ index_beginscan(Relation relation,
245253
LockRelation(relation, AccessShareLock);
246254

247255
scandesc = (IndexScanDesc)
248-
fmgr(procedure, relation, scanFromEnd, numberOfKeys, key);
256+
DatumGetPointer(OidFunctionCall4(procedure,
257+
PointerGetDatum(relation),
258+
BoolGetDatum(scanFromEnd),
259+
UInt16GetDatum(numberOfKeys),
260+
PointerGetDatum(key)));
249261

250262
return scandesc;
251263
}
@@ -262,7 +274,10 @@ index_rescan(IndexScanDesc scan, bool scanFromEnd, ScanKey key)
262274
SCAN_CHECKS;
263275
GET_SCAN_PROCEDURE(rescan, amrescan);
264276

265-
fmgr(procedure, scan, scanFromEnd, key);
277+
OidFunctionCall3(procedure,
278+
PointerGetDatum(scan),
279+
BoolGetDatum(scanFromEnd),
280+
PointerGetDatum(key));
266281
}
267282

268283
/* ----------------
@@ -277,7 +292,7 @@ index_endscan(IndexScanDesc scan)
277292
SCAN_CHECKS;
278293
GET_SCAN_PROCEDURE(endscan, amendscan);
279294

280-
fmgr(procedure, scan);
295+
OidFunctionCall1(procedure, PointerGetDatum(scan));
281296

282297
/* Release lock and refcount acquired by index_beginscan */
283298

@@ -301,7 +316,7 @@ index_markpos(IndexScanDesc scan)
301316
SCAN_CHECKS;
302317
GET_SCAN_PROCEDURE(markpos, ammarkpos);
303318

304-
fmgr(procedure, scan);
319+
OidFunctionCall1(procedure, PointerGetDatum(scan));
305320
}
306321

307322
/* ----------------
@@ -316,7 +331,7 @@ index_restrpos(IndexScanDesc scan)
316331
SCAN_CHECKS;
317332
GET_SCAN_PROCEDURE(restrpos, amrestrpos);
318333

319-
fmgr(procedure, scan);
334+
OidFunctionCall1(procedure, PointerGetDatum(scan));
320335
}
321336

322337
/* ----------------
@@ -350,7 +365,9 @@ index_getnext(IndexScanDesc scan,
350365
* ----------------
351366
*/
352367
result = (RetrieveIndexResult)
353-
(*fmgr_faddr(&scan->fn_getnext)) (scan, direction);
368+
DatumGetPointer(FunctionCall2(&scan->fn_getnext,
369+
PointerGetDatum(scan),
370+
Int32GetDatum(direction)));
354371

355372
return result;
356373
}

src/backend/access/index/istrat.c

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
*
1010
*
1111
* IDENTIFICATION
12-
* $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.43 2000/05/28 17:55:52 tgl Exp $
12+
* $Header: /cvsroot/pgsql/src/backend/access/index/Attic/istrat.c,v 1.44 2000/05/30 04:24:32 tgl Exp $
1313
*
1414
*-------------------------------------------------------------------------
1515
*/
@@ -217,15 +217,14 @@ StrategyTermEvaluate(StrategyTerm term,
217217
Datum left,
218218
Datum right)
219219
{
220+
bool result = false;
220221
Index index;
221-
long tmpres = 0;
222-
bool result = 0;
223222
StrategyOperator operator;
224-
ScanKey entry;
225223

226224
for (index = 0, operator = &term->operatorData[0];
227225
index < term->degree; index += 1, operator += 1)
228226
{
227+
ScanKey entry;
229228

230229
entry = &map->entry[operator->strategy - 1];
231230

@@ -234,31 +233,29 @@ StrategyTermEvaluate(StrategyTerm term,
234233
switch (operator->flags ^ entry->sk_flags)
235234
{
236235
case 0x0:
237-
tmpres = (long) FMGR_PTR2(&entry->sk_func,
238-
left, right);
236+
result = DatumGetBool(FunctionCall2(&entry->sk_func,
237+
left, right));
239238
break;
240239

241240
case SK_NEGATE:
242-
tmpres = (long) !FMGR_PTR2(&entry->sk_func,
243-
left, right);
241+
result = ! DatumGetBool(FunctionCall2(&entry->sk_func,
242+
left, right));
244243
break;
245244

246245
case SK_COMMUTE:
247-
tmpres = (long) FMGR_PTR2(&entry->sk_func,
248-
right, left);
246+
result = DatumGetBool(FunctionCall2(&entry->sk_func,
247+
right, left));
249248
break;
250249

251250
case SK_NEGATE | SK_COMMUTE:
252-
tmpres = (long) !FMGR_PTR2(&entry->sk_func,
253-
right, left);
251+
result = ! DatumGetBool(FunctionCall2(&entry->sk_func,
252+
right, left));
254253
break;
255254

256255
default:
257-
elog(FATAL, "StrategyTermEvaluate: impossible case %d",
256+
elog(ERROR, "StrategyTermEvaluate: impossible case %d",
258257
operator->flags ^ entry->sk_flags);
259258
}
260-
261-
result = (bool) tmpres;
262259
if (!result)
263260
return result;
264261
}

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy