Thread
-
[PATCH] Allow SJE to recognize GiST-backed temporal primary keys
SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> — 2026-04-21T19:18:37Z
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
-
Re: [PATCH] Allow SJE to recognize GiST-backed temporal primary keys
David Rowley <dgrowleyml@gmail.com> — 2026-04-22T01:54:33Z
On Wed, 22 Apr 2026 at 07:18, SATYANARAYANA NARLAPURAM <satyanarlapuram@gmail.com> wrote: > 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. Please add to the 20-1 CF [1]. David [1] https://commitfest.postgresql.org/59/