[PATCH] Allow SJE to recognize GiST-backed temporal primary keys
SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
From: SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com>
To: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Paul A Jungwirth <pj@illuminatedcomputing.com>
Date: 2026-04-21T19:18:37Z
Lists: pgsql-hackers
Attachments
- 0001-Allow-SJE-to-recognize-GiST-backed-temporal-primary-.patch (application/octet-stream) patch 0001
Hi Hackers, relation_has_unique_index_for() checks whether join clause equality operators belong to the index's opfamily via mergeopfamilies. Since mergeopfamilies only lists btree opfamilies, this check always fails for GiST-backed unique indexes such as those created by PRIMARY KEY with WITHOUT OVERLAPS, preventing self-join elimination. Fix by falling back to op_in_opfamily() when the mergeopfamilies check fails. The clause is already known to be a mergejoinable equality, so confirming the operator is registered in the index's opfamily is sufficient to prove that the index's uniqueness guarantee applies. Attached a patch to fix this and added corresponding tests. Thanks, Satya