BUG #17363: 14 regression: "could not identify a hash function for type record" in a nested record in sublink

The Post Office <noreply@postgresql.org>

From: PG Bug reporting form <noreply@postgresql.org>
To: pgsql-bugs@lists.postgresql.org
Cc: elprans@gmail.com
Date: 2022-01-11T22:46:02Z
Lists: pgsql-bugs
The following bug has been logged on the website:

Bug reference:      17363
Logged by:          Elvis Pranskevichus
Email address:      elprans@gmail.com
PostgreSQL version: 14.0
Operating system:   Linux
Description:        

The following fails in PostgreSQL 14:

    postgres14=# SELECT ROW(ROW(ROW(1))) = ANY (SELECT
(ROW(ROW(ROW(1)))).*);
    ERROR:  could not identify a hash function for type record

whereas PostgreSQL 13 works fine:

    postgres13=# SELECT ROW(ROW(ROW(1))) = ANY (SELECT
(ROW(ROW(ROW(1)))).*);  
     ?column?
    ──────────
     t
    (1 row)

Interestingly, reducing the nesting level to two works in 14:

    postgres14=# SELECT ROW(ROW(1)) = ANY (SELECT (ROW(ROW(1))).*);
     ?column?
    ──────────
     t
    (1 row)

Commits

  1. Teach hash_ok_operator() that record_eq is only sometimes hashable.