• A
    Enable CHECK constraints to be declared NOT VALID · 89779524
    Alvaro Herrera 提交于
    This means that they can initially be added to a large existing table
    without checking its initial contents, but new tuples must comply to
    them; a separate pass invoked by ALTER TABLE / VALIDATE can verify
    existing data and ensure it complies with the constraint, at which point
    it is marked validated and becomes a normal part of the table ecosystem.
    
    An non-validated CHECK constraint is ignored in the planner for
    constraint_exclusion purposes; when validated, cached plans are
    recomputed so that partitioning starts working right away.
    
    This patch also enables domains to have unvalidated CHECK constraints
    attached to them as well by way of ALTER DOMAIN / ADD CONSTRAINT / NOT
    VALID, which can later be validated with ALTER DOMAIN / VALIDATE
    CONSTRAINT.
    
    Thanks to Thom Brown, Dean Rasheed and Jaime Casanova for the various
    reviews, and Robert Hass for documentation wording improvement
    suggestions.
    
    This patch was sponsored by Enova Financial.
    89779524
tablecmds.c 283.4 KB