• David Rowley's avatar
    Don't remove surplus columns from GROUP BY for inheritance parents · a5be4062
    David Rowley authored
    d4c3a156 added code to remove columns that were not part of a table's
    PRIMARY KEY constraint from the GROUP BY clause when all the primary key
    columns were present in the group by.  This is fine to do since we know
    that there will only be one row per group coming from this relation.
    However, the logic failed to consider inheritance parent relations.  These
    can have child relations without a primary key, but even if they did, they
    could duplicate one of the parent's rows or one from another child
    relation.  In this case, those additional GROUP BY columns are required.
    
    Fix this by disabling the optimization for inheritance parent tables.
    In v11 and beyond, partitioned tables are fine since partitions cannot
    overlap and before v11 partitioned tables could not have a primary key.
    
    Reported-by: Manuel Rigger
    Discussion: http://postgr.es/m/CA+u7OA7VLKf_vEr6kLF3MnWSA9LToJYncgpNX2tQ-oWzYCBQAw@mail.gmail.com
    Backpatch-through: 9.6
    a5be4062
planner.c 234 KB