Re: BUG #17633: Define rule on views which do insert to another relation trigger cache lookup failed error.
Richard Guo <guofenglinux@gmail.com>
From: Richard Guo <guofenglinux@gmail.com>
To: jiye_sw@126.com, pgsql-bugs@lists.postgresql.org
Date: 2022-10-11T12:09:30Z
Lists: pgsql-bugs
On Tue, Oct 11, 2022 at 6:05 PM Richard Guo <guofenglinux@gmail.com> wrote: > > On Tue, Oct 11, 2022 at 5:48 PM PG Bug reporting form < > noreply@postgresql.org> wrote: > >> -- must multi values. >> insert into v1 values (1,default),(2, default); >> => it will trigger cache lookup failed for type. > > > Thanks for the report! I can reproduce this issue. > > Apparently there is something wrong when we process the DEFAULT marker > in rewriteValuesRTE, because the contents inside att_tup are invalid. > > p /x att_tup->atttypid > $13 = 0x7f7f7f7f > 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. Thanks Richard
Commits
-
Yet further fixes for multi-row VALUES lists for updatable views.
- addde9bc6caf 11.18 landed
- abc510fa2a34 12.13 landed
- 23e2a06acf04 10.23 landed
- b8f2687fdc41 16.0 landed
- 3162bd95cad3 14.6 landed
- 21e042b0bd47 13.9 landed
- 07ce6769824c 15.1 landed