Thread

  1. BUG #19066: postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86: Array index check in wrong place ?

    PG Bug reporting form <noreply@postgresql.org> — 2025-09-26T09:51:09Z

    The following bug has been logged on the website:
    
    Bug reference:      19066
    Logged by:          David Binderman
    Email address:      dcb314@hotmail.com
    PostgreSQL version: 18.0
    Operating system:   fedora 42
    Description:        
    
    Static analyser cppcheck says:
    
    postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86:22: style: Array
    index 'j' is used before limits check. [arrayIndexThenCheck]
    
    Source code is
    
      while ((city_table[j].select_list == -1) && (j < num_gene))
    
    Suggest new source code
    
      while ((j < num_gene) && (city_table[j].select_list == -1))
    
    
  2. Re: BUG #19066: postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86: Array index check in wrong place ?

    Tom Lane <tgl@sss.pgh.pa.us> — 2025-09-26T14:53:26Z

    PG Bug reporting form <noreply@postgresql.org> writes:
    > Static analyser cppcheck says:
    
    > postgresql-18.0/src/backend/optimizer/geqo/geqo_ox2.c:86:22: style: Array
    > index 'j' is used before limits check. [arrayIndexThenCheck]
    
    Did your static analyzer not notice that this dead code is
    not even compiled?  I don't have a lot of faith in analyzers
    that ignore #ifdefs.
    
    (It's fair to ask why we haven't removed this code altogether
    ... laziness I guess, or waiting for something better than
    GEQO to come along.  But expending effort on fixing it
    is definitely not in the cards.)
    
    			regards, tom lane