Re: BUG #17066: Cache lookup failed when null (unknown) is passed as anycompatiblemultirange
Alexander Korotkov <aekorotkov@gmail.com>
From: Alexander Korotkov <aekorotkov@gmail.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Neil Chen <carpenter.nail.cz@gmail.com>,
Alexander Law <exclusion@gmail.com>, PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>, Paul A Jungwirth <pj@illuminatedcomputing.com>
Date: 2021-06-23T22:41:42Z
Lists: pgsql-bugs
On Wed, Jun 23, 2021 at 6:31 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > On Tue, Jun 22, 2021 at 7:01 PM Alexander Korotkov <aekorotkov@gmail.com> wrote: > > On Tue, Jun 22, 2021 at 4:42 PM Alvaro Herrera <alvherre@2ndquadrant.com> wrote: > > > On 2021-Jun-22, Neil Chen wrote: > > > > > > > Greetings, > > > > > > > > I tried to investigate the bug, but the complicated logic here completely > > > > messed up my mind... > > > > > > > > Anyway, this patch can fix it and make the regress test happy. But I think > > > > it's better to get the author's advice - I copied this email to Alvaro, > > > > hope it doesn't offend him... > > > > > > Without looking too deeply, the patch seems sensible to me. However, > > > I'm CC'ing Alexander and Paul :-) > > > > Thank you for pointing this out. And thanks to Neil for the fix. > > > > Looks good at the first glance. I'm going to review this in the next > > couple of days. > > I've reviewed enforce_generic_type_consistency() more carefully. It > looks for me that this function requires more significant rework. For > instance, these two functions throw errors, but it seems that both of > them should work. > > create function multirange_func(r anycompatiblerange) > returns anycompatiblemultirange as 'select multirange($1);' language sql; > create function range_func(r anycompatiblemultirange) > returns anycompatiblerange as 'select multirange($1);' language sql; > > # select multirange_func(int4range(1,10)); > ERROR: could not identify anycompatiblemultirange type > > # select range_func(int4multirange(int4range(1,10))); > ERROR: could not determine polymorphic type anycompatiblerange > because input has type unknown > > So, I'm still investigating this. The second function was intended to be this to be a meaningful example. But anyway it fails with the same error. create function range_func(r anycompatiblemultirange) returns anycompatiblerange as 'select range_merge($1);' language sql; ------ Regards, Alexander Korotkov
Commits
-
Fix bugs in polymorphic-argument resolution for multiranges.
- b7ea0e8c41f1 14.0 landed
- 336ea6e6ff11 15.0 landed
-
Fixes for multirange selectivity estimation
- 322e82b77ef4 14.0 landed
- 178ec460db0a 15.0 landed