Thread

  1. [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
    
  2. 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/