postgres-github.git / summary / log / commit / refs

commit    6cf49e804c9b4ac24046a48541810d1fed33fec3
Author:   Andrew Dunstan <andrew@dunslane.net>
Date:     Thu Apr 30 15:04:57 2026 +0000

    Fix attnum remapping in generateClonedExtStatsStmt()
    
    When cloning extended statistics via CREATE TABLE ... LIKE ... INCLUDING
    STATISTICS, stxkeys holds attribute numbers from the source (parent)
    table, but get_attname() was being called with the child relation's
    OID.  If the parent has dropped columns, the child's attribute numbers
    are renumbered sequentially and no longer match, so the lookup either
    returns the wrong column name (silent corruption) or errors out when
    the attnum does not exist in the child.
    
    Fix it by remapping the parent attnum through attmap before the lookup,
    consistent with how expression statistics are already handled a few
    lines below.
    
    Add a regression test covering both manifestations: a 3-column parent
    where the stale attnum refers to no child column (cache-lookup error),
    and a 4-column parent where the stale attnum silently refers to the
    wrong child column.
    
    Author: Julien Tachoires <julmon@gmail.com>
    Reviewed-by: Srinath Reddy Sadipiralla <srinath2133@gmail.com>
    Discussion: https://postgr.es/m/20260415105718.tomuncfbmlt67oel@poseidon.home.virt
    Backpatch-through: 14

[parent: 5642a0367c2f]