BUG #17066: Cache lookup failed when null (unknown) is passed as anycompatiblemultirange

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: exclusion@gmail.com
Date: 2021-06-20T21:00:01Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      17066
Logged by:          Alexander Lakhin
Email address:      exclusion@gmail.com
PostgreSQL version: 14beta1
Operating system:   Ubuntu 20.04
Description:        

When calling the simple test function:
create function multirange_test(a anycompatiblemultirange)
  returns anycompatible as 'select lower($1);' language sql;

with the NULL argument:
SELECT multirange_test(null);

I get a somewhat unusual error:
ERROR:  cache lookup failed for type 0

The variation with the anycompatiblerange (without multi):
create function range_test(a anycompatiblerange)
  returns anycompatible as 'select lower($1);' language sql;
SELECT range_test(null);

produces:
ERROR:  could not determine polymorphic type anycompatiblerange because
input has type unknown

Commits

  1. Fix bugs in polymorphic-argument resolution for multiranges.

  2. Fixes for multirange selectivity estimation