• Tom Lane's avatar
    Clamp total-tuples estimates for foreign tables to ensure planner sanity. · ca5e93f7
    Tom Lane authored
    After running GetForeignRelSize for a foreign table, adjust rel->tuples
    to be at least as large as rel->rows.  This prevents bizarre behavior
    in estimate_num_groups() and perhaps other places, especially in the
    scenario where rel->tuples is zero because pg_class.reltuples is
    (suggesting that ANALYZE has never been run for the table).  As things
    stood, we'd end up estimating one group out of any GROUP BY on such a
    table, whereas the default group-count estimate is more likely to result
    in a sane plan.
    
    Also, clarify in the documentation that GetForeignRelSize has the option
    to override the rel->tuples value if it has a better idea of what to use
    than what is in pg_class.reltuples.
    
    Per report from Jeff Janes.  Back-patch to all supported branches.
    
    Patch by me; thanks to Etsuro Fujita for review
    
    Discussion: https://postgr.es/m/CAMkU=1xNo9cnan+Npxgz0eK7394xmjmKg-QEm8wYG9P5-CcaqQ@mail.gmail.com
    ca5e93f7
allpaths.c 130 KB