Обсуждение: still use IndexIsValid() etc. macros?

Поиск
Список
Период
Сортировка

still use IndexIsValid() etc. macros?

От
Peter Eisentraut
Дата:
In another patch discussion it was brought up why the patch doesn't use
the IndexIsValid() etc. macros.

They are defined thus:

/*
 * Use of these macros is recommended over direct examination of the state
 * flag columns where possible; this allows source code compatibility with
 * the hacky representation used in 9.2.
 */
#define IndexIsValid(indexForm) ((indexForm)->indisvalid)
#define IndexIsReady(indexForm) ((indexForm)->indisready)
#define IndexIsLive(indexForm)  ((indexForm)->indislive)

I don't see them used consistently.  Obviously, some low-level code
needs to bypass them, but it's hard to see where to draw the line.  Is
it worth keeping these?  Is there still code that maintains
compatibility with 9.2 from a single source?

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Re: still use IndexIsValid() etc. macros?

От
Tom Lane
Дата:
Peter Eisentraut <peter.eisentraut@2ndquadrant.com> writes:
> In another patch discussion it was brought up why the patch doesn't use
> the IndexIsValid() etc. macros.

> They are defined thus:

> /*
>  * Use of these macros is recommended over direct examination of the state
>  * flag columns where possible; this allows source code compatibility with
>  * the hacky representation used in 9.2.
>  */
> #define IndexIsValid(indexForm) ((indexForm)->indisvalid)
> #define IndexIsReady(indexForm) ((indexForm)->indisready)
> #define IndexIsLive(indexForm)  ((indexForm)->indislive)

> I don't see them used consistently.  Obviously, some low-level code
> needs to bypass them, but it's hard to see where to draw the line.  Is
> it worth keeping these?  Is there still code that maintains
> compatibility with 9.2 from a single source?

We have a general problem with people ignoring accessor macros;
it's hardly limited to these.  The relcache accessor macros such as
RelationGetDescr, for instance, tend to get bypassed.  I'm not sure
how worthwhile it is to be picky about that.

I agree that now that 9.2 is a year out of support, there's not
too much value in the original cross-branch-compatibility argument
for these particular macros.

            regards, tom lane