Thread

Commits

  1. Remove obsolete IndexIs* macros

  1. still use IndexIsValid() etc. macros?

    Peter Eisentraut <peter.eisentraut@2ndquadrant.com> — 2018-12-18T21:49:17Z

    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
    
    
    
  2. Re: still use IndexIsValid() etc. macros?

    Tom Lane <tgl@sss.pgh.pa.us> — 2018-12-18T22:08:32Z

    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