Please find attached a patch that implements SQL92-compatible updatable
views. The patch introduces new semantics into the rule system: implicit
and explicit rules. Implicit rules are created to implement updatable views:
_NOTHING_INSERT (unconditional DO INSTEAD NOTHING rule)
_NOTHING_DELETE (unconditional DO INSTEAD NOTHING rule)
_NOTHING_UPDATE (unconditional DO INSTEAD NOTHING rule)
These rules are marked 'implicit' in pg_rewrite, the rewriter is teached to
handle them different, depending on wether they are created with a rule
condition (a view's CHECK OPTION) or not. The CHECK OPTION itself is
implemented with a new system function and a conditional rule that
evaluates the view's WHERE condition (pg_view_update_error()).
The supported syntax is
CREATE VIEW foo AS SELECT ... [WITH [LOCAL | CASCADED] CHECK OPTION];
The LOCAL and CASCADED keywords are optional when a CHECK OPTION is
specified, the default is CASCADED (this syntax creates a shift/reduce
conflict in the grammar file i don't know how to fix).
If a user wants his own rules with CREATE RULE to be created, the implicit
rule gets dropped, depending what action the user selects.
The patch introduces support for pg_dump as well.
Please note that the patch isn't complete yet, but it seems it's necessary
to discuss its implementation on -hackers now.
pgsql-hackers by date
|Next:||From: Bernd Helmle||Date: 2006-03-10 10:22:36|
|Subject: Re: Proposal for SYNONYMS |
|Previous:||From: Martijn van Oosterhout||Date: 2006-03-10 10:02:29|
|Subject: Re: Coverity Open Source Defect Scan of PostgreSQL|