Re: BUG #17633: Define rule on views which do insert to another relation trigger cache lookup failed error.

From: Richard Guo <guofenglinux(at)gmail(dot)com>
To: Japin Li <japinli(at)hotmail(dot)com>
Cc: jiye_sw(at)126(dot)com, pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: Re: BUG #17633: Define rule on views which do insert to another relation trigger cache lookup failed error.
Date: 2022-10-11 13:16:54
Message-ID: CAMbWs491JOKxnc3f3XGj1oYAzi=OJP6=YjUZnQ=hAUxo3BF+hQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On Tue, Oct 11, 2022 at 8:29 PM Japin Li <japinli(at)hotmail(dot)com> wrote:

>
> On Tue, 11 Oct 2022 at 20:09, Richard Guo <guofenglinux(at)gmail(dot)com> wrote:
> >
> > I think the problem exists for auto-updatable view, as we leave the
> > DEFAULT items untouched because we expect to apply the underlying base
> > rel's default.
> >
> > In this case there is a rewrite rule on the view. Applying the rule
> > we'd get a product query whose target entries referring to the VALUES
> > RTE have attribute 3 and 4 while the relation has only two attributes.
> > Then we proceed to replacing the remaining DEFAULT items with NULLs.
> > And when we try to access the relation's 3rd and 4th attributes, we are
> > accessing illegal memory areas.
> >
>
> Yeah, I also notice this, attch a patch to fix it.

+1 for the idea. We need to identify the right target relation for each
product query and rt_entry_relation is not the right one.

A minor comment is can we know the product query is not CMD_SELECT?
If so I suggest we add an assertion before fetching the target relation,
something like:

Assert(pt->resultRelation != 0);

Thanks
Richard

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message PG Bug reporting form 2022-10-11 13:32:03 BUG #17634: Inconsistent view_definition in information_schema.views
Previous Message Japin Li 2022-10-11 12:29:16 Re: BUG #17633: Define rule on views which do insert to another relation trigger cache lookup failed error.