--On Samstag, Januar 17, 2009 02:01:15 +0200 Peter Eisentraut <pete...@gmx.net> wrote:

Here is my updated patch based on yours.

Outstanding issues, as far as I can see, are:

Critical:

* Updatability check must reject views where the select list references
the same column more than once.


checkTree() will recheck this against reused varattno's within the query tree and will reject such view definitions as non-updatable now.

* Various scenarios of REPLACE VIEW misbehave.  I have marked these as
FIXME in the regression test.  I think all this would behave better if
REPLACE VIEW dropped all automatic rules and reassembled them from
scratch for the new view.  The infrastructure for this is already there,
so it should be a small change.


DefineViewRules() will drop all implicit rules when REPLACE is used now.

Important:

* Array support should be clarified.  checkTree() appears to reject most
variants of array references, but other parts of the code try to handle
it.  Should be cleaned up.


I'm currently working on this.

* It is not clear how automatic rules and manual DO ALSO rules should
interact.  A manual DO ALSO rule will currently clear out an automatic
INSTEAD rule, which I find to be illogical.


What i've done so far is to replace implicit DO INSTEAD rules only, when the new explicit one is DO INSTEAD, too. An additional DO ALSO rule will be added to the view without dropping any automatic rules now.

Optional:

* The use of must_replace is create_update_rule() seems a bit useless.
You might as well just always pass replace = true.


Fixed

* You may want to consider writing the rule qualifications

WHERE ((CASE WHEN (old.a IS NOT NULL) THEN (old.a = vutestv20.x) ELSE
(vutestv20.x IS NULL) END))

more like

WHERE ((old.a = vutestv20.x) OR (old IS NULL AND vutestv20.x IS NULL))

for better optimizability.

Done.

Please note that i haven't fixed the regression test yet. Thanks very much for reviewing!



--
 Thanks

                   Bernd

Attachment: view_update_20090119.patch.bz2
Description: Binary data

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to