From 8fa393a6d739796d9f06a7fba91d7e1d0c354879 Mon Sep 17 00:00:00 2001 From: Heikki Linnakangas <heikki.linnakangas@iki.fi> Date: Thu, 26 Mar 2015 19:11:54 +0200 Subject: [PATCH] Minor cleanup of GiST code, for readability. Remove the gistcentryinit function, inlining the relevant part of it into the only caller. --- src/backend/access/gist/gistutil.c | 50 +++++++++--------------------- src/include/access/gist_private.h | 6 +--- 2 files changed, 16 insertions(+), 40 deletions(-) diff --git a/src/backend/access/gist/gistutil.c b/src/backend/access/gist/gistutil.c index 38af0e0cb0a..824c40eb203 100644 --- a/src/backend/access/gist/gistutil.c +++ b/src/backend/access/gist/gistutil.c @@ -558,53 +558,33 @@ gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, gistentryinit(*e, (Datum) 0, r, pg, o, l); } - -/* - * initialize a GiST entry with a compressed version of key - */ -void -gistcentryinit(GISTSTATE *giststate, int nkey, - GISTENTRY *e, Datum k, Relation r, - Page pg, OffsetNumber o, bool l, bool isNull) -{ - if (!isNull) - { - GISTENTRY *cep; - - gistentryinit(*e, k, r, pg, o, l); - cep = (GISTENTRY *) - DatumGetPointer(FunctionCall1Coll(&giststate->compressFn[nkey], - giststate->supportCollation[nkey], - PointerGetDatum(e))); - /* compressFn may just return the given pointer */ - if (cep != e) - gistentryinit(*e, cep->key, cep->rel, cep->page, cep->offset, - cep->leafkey); - } - else - gistentryinit(*e, (Datum) 0, r, pg, o, l); -} - IndexTuple gistFormTuple(GISTSTATE *giststate, Relation r, - Datum attdata[], bool isnull[], bool newValues) + Datum attdata[], bool isnull[], bool isleaf) { - GISTENTRY centry[INDEX_MAX_KEYS]; Datum compatt[INDEX_MAX_KEYS]; int i; IndexTuple res; + /* + * Call the compress method on each attribute. + */ for (i = 0; i < r->rd_att->natts; i++) { if (isnull[i]) compatt[i] = (Datum) 0; else { - gistcentryinit(giststate, i, ¢ry[i], attdata[i], - r, NULL, (OffsetNumber) 0, - newValues, - FALSE); - compatt[i] = centry[i].key; + GISTENTRY centry; + GISTENTRY *cep; + + gistentryinit(centry, attdata[i], r, NULL, (OffsetNumber) 0, + isleaf); + cep = (GISTENTRY *) + DatumGetPointer(FunctionCall1Coll(&giststate->compressFn[i], + giststate->supportCollation[i], + PointerGetDatum(¢ry))); + compatt[i] = cep->key; } } @@ -612,7 +592,7 @@ gistFormTuple(GISTSTATE *giststate, Relation r, /* * The offset number on tuples on internal pages is unused. For historical - * reasons, it is set 0xffff. + * reasons, it is set to 0xffff. */ ItemPointerSetOffsetNumber(&(res->t_tid), 0xffff); return res; diff --git a/src/include/access/gist_private.h b/src/include/access/gist_private.h index ce83042e177..95506879168 100644 --- a/src/include/access/gist_private.h +++ b/src/include/access/gist_private.h @@ -485,15 +485,11 @@ extern IndexTuple gistgetadjusted(Relation r, IndexTuple addtup, GISTSTATE *giststate); extern IndexTuple gistFormTuple(GISTSTATE *giststate, - Relation r, Datum *attdata, bool *isnull, bool newValues); + Relation r, Datum *attdata, bool *isnull, bool isleaf); extern OffsetNumber gistchoose(Relation r, Page p, IndexTuple it, GISTSTATE *giststate); -extern void gistcentryinit(GISTSTATE *giststate, int nkey, - GISTENTRY *e, Datum k, - Relation r, Page pg, - OffsetNumber o, bool l, bool isNull); extern void GISTInitBuffer(Buffer b, uint32 f); extern void gistdentryinit(GISTSTATE *giststate, int nkey, GISTENTRY *e, -- GitLab