pgsql: Make CREATE OR REPLACE VIEW internally more consistent - Mailing list pgsql-committers

From Alvaro Herrera
Subject pgsql: Make CREATE OR REPLACE VIEW internally more consistent
Date
Msg-id E1YRTFx-0004vG-BN@gemulon.postgresql.org
Whole thread Raw
List pgsql-committers
Make CREATE OR REPLACE VIEW internally more consistent

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.)

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/fbef4342a86522c98cd605891ad8c1145a61d191

Modified Files
--------------
src/backend/commands/tablecmds.c |   14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)


pgsql-committers by date:

Previous
From: Tom Lane
Date:
Subject: pgsql: Invent a memory context reset/delete callback mechanism.
Next
From: Tom Lane
Date:
Subject: Re: pgsql: Fix a couple of trivial issues in jsonb.c