Thread

  1. BUG #19114: ORDER BY ASC is tampering result when calculating distance btw vectors

    PG Bug reporting form <noreply@postgresql.org> — 2025-11-17T06:08:30Z

    The following bug has been logged on the website:
    
    Bug reference:      19114
    Logged by:          Naveen Krishna S
    Email address:      naveenkrishna.s@sky.uk
    PostgreSQL version: 14.13
    Operating system:   Mac OS
    Description:        
    
    In a table with vector column,
    SELECT embedding <=> CAST('[0.01, 0.23, -0.1,..]' as vector)
    AS distance
    FROM my_table
    WHERE TRUE
    order by distance desc
    LIMIT 100;
    
    is giving 100 records whereas
    
    SELECT embedding <=> CAST('[0.01, 0.23, -0.1,..]' as vector)
    AS distance
    FROM my_table
    WHERE TRUE
    order by distance asc
    LIMIT 100;
    
    is giving 40 records for a specific embedding and always less than the limit
    for any query embedding. Why is this?
    I have also noticed if I use NULLS FIRST or COALESCE(distance, 99999999999)
    it is returning the requested limit. But when I tried to list the records
    with distance as null, there were none.