Thread

Commits

  1. Fix local-variable shadowing in pg_trgm's printSourceNFA().

  1. Compiler warning when using TRGM_REGEXP_DEBUG

    Sergei Kornilov <sk@zsrv.org> — 2026-03-02T19:07:16Z

    Hello!
    
    I was looking into how pg_trgm index support works with regular expressions. When building HEAD with the TRGM_REGEXP_DEBUG option, my compiler warns:
    
    ./configure CFLAGS="-DTRGM_REGEXP_DEBUG"
    cd contrib/pg_trgm/
    make -s
    
    trgm_regexp.c: In function ‘printSourceNFA’:
    trgm_regexp.c:2142:41: warning: declaration of ‘i’ shadows a previous local [-Wshadow=compatible-local]
     2142 |                 int                     i,
          |                                         ^
    trgm_regexp.c:2133:33: note: shadowed declaration is here
     2133 |         int                     i;
    
    I am using gcc (Debian 12.2.0-14+deb12u1) 12.2.0.
    
    Does it make sense to fix this warning? It is possible to either rename this variable or remove the second declaration (the variable is used in another loop after this code).
    
    --- a/contrib/pg_trgm/trgm_regexp.c
    +++ b/contrib/pg_trgm/trgm_regexp.c
    @@ -2139,8 +2139,7 @@ printSourceNFA(regex_t *regex, TrgmColorInfo *colors, int ncolors)
         for (state = 0; state < nstates; state++)
         {
             regex_arc_t *arcs;
    -        int         i,
    -                    arcsCount;
    +        int         arcsCount;
     
             appendStringInfo(&buf, "s%d", state);
             if (pg_reg_getfinalstate(regex) == state)
    
    regards, Sergei
    
    
    
    
  2. Re: Compiler warning when using TRGM_REGEXP_DEBUG

    Tom Lane <tgl@sss.pgh.pa.us> — 2026-03-02T19:23:32Z

    Sergei Kornilov <sk@zsrv.org> writes:
    > I was looking into how pg_trgm index support works with regular expressions. When building HEAD with the TRGM_REGEXP_DEBUG option, my compiler warns:
    
    > trgm_regexp.c: In function ‘printSourceNFA’:
    > trgm_regexp.c:2142:41: warning: declaration of ‘i’ shadows a previous local [-Wshadow=compatible-local]
    >  2142 |                 int                     i,
    >       |                                         ^
    > trgm_regexp.c:2133:33: note: shadowed declaration is here
    >  2133 |         int                     i;
    
    Ah, yeah, I see it too with -DTRGM_REGEXP_DEBUG.
    
    > Does it make sense to fix this warning? It is possible to either rename this variable or remove the second declaration (the variable is used in another loop after this code).
    
    I think if we need to touch it, we should modernize all the loops in
    this function to use loop-local variables.  Will see to it.
    
    			regards, tom lane