• Dean Rasheed's avatar
    Fix order of operations in CREATE OR REPLACE VIEW. · 58b13626
    Dean Rasheed authored
    When CREATE OR REPLACE VIEW acts on an existing view, don't update the
    view options until after the view query has been updated.
    
    This is necessary in the case where CREATE OR REPLACE VIEW is used on
    an existing view that is not updatable, and the new view is updatable
    and specifies the WITH CHECK OPTION. In this case, attempting to apply
    the new options to the view before updating its query fails, because
    the options are applied using the ALTER TABLE infrastructure which
    checks that WITH CHECK OPTION is only applied to an updatable view.
    
    If new columns are being added to the view, that is also done using
    the ALTER TABLE infrastructure, but it is important that that still be
    done before updating the view query, because the rules system checks
    that the query columns match those on the view relation. Added a
    comment to explain that, in case someone is tempted to move that to
    where the view options are now being set.
    
    Back-patch to 9.4 where WITH CHECK OPTION was added.
    
    Report: https://postgr.es/m/CAEZATCUp%3Dz%3Ds4SzZjr14bfct_bdJNwMPi-gFi3Xc5k1ntbsAgQ%40mail.gmail.com
    58b13626
updatable_views.out 87.4 KB