• Alvaro Herrera's avatar
    Make CREATE OR REPLACE VIEW internally more consistent · fbef4342
    Alvaro Herrera authored
    The way that columns are added to a view is by calling
    AlterTableInternal with special subtype AT_AddColumnToView; but that
    subtype is changed to AT_AddColumnRecurse by ATPrepAddColumn.  This has
    no visible effect in the current code, since views cannot have
    inheritance children (thus the recursion step is a no-op) and adding a
    column to a view is executed identically to doing it to a table; but it
    does make a difference for future event trigger code keeping track of
    commands, because the current situation leads to confusing the case with
    a normal ALTER TABLE ADD COLUMN.
    
    Fix the problem by passing a flag to ATPrepAddColumn to prevent it from
    changing the command subtype.  The event trigger code can then properly
    ignore the subcommand.  (We could remove the call to ATPrepAddColumn,
    since views are never typed, and there is never a need for recursion,
    which are the two conditions that are checked by ATPrepAddColumn; but it
    seems more future-proof to keep the call in place.)
    fbef4342
tablecmds.c 348 KB