• Dean Rasheed's avatar
    Make rewriter prevent auto-updates on views with conditional INSTEAD rules. · d751ba52
    Dean Rasheed authored
    A view with conditional INSTEAD rules and no unconditional INSTEAD
    rules or INSTEAD OF triggers is not auto-updatable. Previously we
    relied on a check in the executor to catch this, but that's
    problematic since the planner may fail to properly handle such a query
    and thus return a particularly unhelpful error to the user, before
    reaching the executor check.
    
    Instead, trap this in the rewriter and report the correct error there.
    Doing so also allows us to include more useful error detail than the
    executor check can provide. This doesn't change the existing behaviour
    of updatable views; it merely ensures that useful error messages are
    reported when a view isn't updatable.
    
    Per report from Pengzhou Tang, though not adopting that suggested fix.
    Back-patch to all supported branches.
    
    Discussion: https://postgr.es/m/CAG4reAQn+4xB6xHJqWdtE0ve_WqJkdyCV4P=trYr4Kn8_3_PEA@mail.gmail.com
    d751ba52
execMain.c 88 KB