Thread

Commits

  1. Remove use of rindex() function

  2. strnlen() is now required

  3. Add pg_strnlen() a portable implementation of strlen.

  1. more POSIX 2008 cleanup: strnlen(), rindex()

    Peter Eisentraut <peter@eisentraut.org> — 2026-01-03T09:51:53Z

    It has previously been established that POSIX 2008 is the baseline for 
    PostgreSQL code (modulo Windows).  Looking through the POSIX 2008 
    changes, I found a few more things we can clean up with respect to that.
    
    The first patch removes the configure checks for strnlen(), since that 
    is now required, and I see that all buildfarm members support.  There 
    was some discussion in the commit messages that added these checks 
    (e.g., commit 8a241792f96) that suggests it was once required, but I did 
    not find any information about which platforms were affected then.  But 
    that's 8 years ago now, so I think it might be obsolete.
    
    The second patch replaces the single remaining use of rindex() with the 
    equivalent strrchr().  rindex() has been removed from POSIX.
  2. Re: more POSIX 2008 cleanup: strnlen(), rindex()

    Jelte Fennema-Nio <postgres@jeltef.nl> — 2026-01-03T09:58:14Z

    On Sat, 3 Jan 2026 at 10:52, Peter Eisentraut <peter@eisentraut.org> wrote:
    > It has previously been established that POSIX 2008 is the baseline for
    > PostgreSQL code (modulo Windows).  Looking through the POSIX 2008
    > changes, I found a few more things we can clean up with respect to that.
    
    Both changes look sensible to me
    
    
    
    
  3. Re: more POSIX 2008 cleanup: strnlen(), rindex()

    Tom Lane <tgl@sss.pgh.pa.us> — 2026-01-03T17:42:55Z

    Jelte Fennema-Nio <postgres@jeltef.nl> writes:
    > On Sat, 3 Jan 2026 at 10:52, Peter Eisentraut <peter@eisentraut.org> wrote:
    >> It has previously been established that POSIX 2008 is the baseline for
    >> PostgreSQL code (modulo Windows).  Looking through the POSIX 2008
    >> changes, I found a few more things we can clean up with respect to that.
    
    > Both changes look sensible to me
    
    +1.  I also checked the buildfarm and confirm that no animals report
    not having strnlen().
    
    I'm a little disturbed by the rindex bit, because that's not hoary old
    code: it came in with JIT in v11, only about 8 years ago.  How can we
    prevent similar mistakes in future?
    
    			regards, tom lane
    
    
    
    
  4. Re: more POSIX 2008 cleanup: strnlen(), rindex()

    Peter Eisentraut <peter@eisentraut.org> — 2026-01-08T08:38:16Z

    On 03.01.26 18:42, Tom Lane wrote:
    > Jelte Fennema-Nio <postgres@jeltef.nl> writes:
    >> On Sat, 3 Jan 2026 at 10:52, Peter Eisentraut <peter@eisentraut.org> wrote:
    >>> It has previously been established that POSIX 2008 is the baseline for
    >>> PostgreSQL code (modulo Windows).  Looking through the POSIX 2008
    >>> changes, I found a few more things we can clean up with respect to that.
    > 
    >> Both changes look sensible to me
    > 
    > +1.  I also checked the buildfarm and confirm that no animals report
    > not having strnlen().
    
    committed
    
    > I'm a little disturbed by the rindex bit, because that's not hoary old
    > code: it came in with JIT in v11, only about 8 years ago.  How can we
    > prevent similar mistakes in future?
    
    AFAICT, rindex() doesn't exist on Windows, so we only got away with it 
    because the JIT code is not compiled under Windows.  So in general this 
    should regulate itself.