Thread

  1. BUG #18835: spgist index fails to accept point with NaN

    The Post Office <noreply@postgresql.org> — 2025-03-07T18:00:01Z

    The following bug has been logged on the website:
    
    Bug reference:      18835
    Logged by:          Alexander Lakhin
    Email address:      exclusion@gmail.com
    PostgreSQL version: 17.4
    Operating system:   Ubuntu 24.04
    Description:        
    
    The following script:
    CREATE TABLE t(p point);
    INSERT INTO t SELECT point(g, g) FROM generate_series(1, 1000) g;
    INSERT INTO t VALUES ('(0,NaN)'::point);
    
    CREATE INDEX spgist_idx ON t USING spgist(p);
    triggers:
    ERROR:  XX000: getQuadrant: impossible case
    LOCATION:  getQuadrant, spgquadtreeproc.c:77
    
    Reproduced starting from 8daeb5ddd.
    
    This anomaly is discovered with SQLsmith.
    
    
  2. Re: BUG #18835: spgist index fails to accept point with NaN

    Tom Lane <tgl@sss.pgh.pa.us> — 2025-03-07T20:08:20Z

    PG Bug reporting form <noreply@postgresql.org> writes:
    > The following script:
    > CREATE TABLE t(p point);
    > INSERT INTO t SELECT point(g, g) FROM generate_series(1, 1000) g;
    > INSERT INTO t VALUES ('(0,NaN)'::point);
    
    > CREATE INDEX spgist_idx ON t USING spgist(p);
    > triggers:
    > ERROR:  XX000: getQuadrant: impossible case
    
    Yeah.  There's been some past attempts to clean up our behavior
    for NaNs in geometric values, but it's such a mess that not
    much progress has been made.  So I can't get excited about
    worrying about this case in particular (especially since I don't
    see any easy fix).  I wonder if we shouldn't just ban NaNs in
    the geometric types.
    
    			regards, tom lane