Skip site navigation (1) Skip section navigation (2)

Re: Rules with Conditions: Bug, or Misunderstanding

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jan Wieck <janwieck(at)Yahoo(dot)com>
Cc: Joel Burton <jburton(at)scw(dot)org>, pgsql-hackers(at)postgresql(dot)org, pgsql-sql(at)postgresql(dot)org
Subject: Re: Rules with Conditions: Bug, or Misunderstanding
Date: 2000-12-04 00:04:36
Message-ID: (view raw, whole thread or download thread mbox)
Lists: pgsql-hackerspgsql-sql
Jan Wieck <janwieck(at)Yahoo(dot)com> writes:
> Tom Lane wrote:
>> Hm.  Perhaps the "cannot update view" test is too strict --- it's not
>> bright enough to realize that the two rules together cover all cases,
>> so it complains that you *might* be trying to update the view.  As the
>> code stands, you must provide an unconditional DO INSTEAD rule to
>> implement insertion or update of a view.

>     Disagree.

>     A  conditional rule splits the command into two, one with the
>     rules action and  the  condition  added,  one  which  is  the
>     original  statement  plus the negated condition. So there are
>     cases left where an INSERT can happen to  the  view  relation
>     and it's the job of this test to prevent it.

Well, in that case the present code is broken, because it's going to
spit up if any part of the rewritten query shows the view as result
relation (cf. QueryRewrite() ... note that this logic no longer looks
much like it did the last time you touched it ;-)).  You'd have to
convert the existing rewrite-time test into a runtime test in order to
see whether the query actually tries to insert any tuples into the view.

While that is maybe reasonable for insertions, it's totally silly
for update and delete queries.  Since the view itself can never contain
any tuples to be updated or deleted, a runtime test that errors out
when one attempts to update or delete such a tuple could never fire.
I don't think that means that we shouldn't complain about an update
or delete on a view.

I think the test is best left as-is...

			regards, tom lane

In response to


pgsql-hackers by date

Next:From: Peter BiermanDate: 2000-12-04 00:26:38
Subject: Re: beta testing version
Previous:From: Tom LaneDate: 2000-12-03 23:55:03
Subject: Re: beta testing version

pgsql-sql by date

Next:From: Dan WilsonDate: 2000-12-04 07:56:56
Subject: Re: Re: [PHP-DB] Re: [SQL] a script that queries database periodically
Previous:From: Jan WieckDate: 2000-12-03 23:17:48
Subject: Re: Rules with Conditions: Bug, or Misunderstanding

Privacy Policy | About PostgreSQL
Copyright © 1996-2018 The PostgreSQL Global Development Group