public inbox for [email protected]  
help / color / mirror / Atom feed
From: Mark Dilger <[email protected]>
To: Peter Eisentraut <[email protected]>
Cc: [email protected]
Cc: Tom Lane <[email protected]>
Subject: Re: pgsql: Generalize hash and ordering support in amapi
Date: Tue, 4 Mar 2025 09:23:49 -0800
Message-ID: <CAHgHdKu0xiwifh=z0oecKR9+anyJZvjRwFkDiTENWS9tz8qm_A@mail.gmail.com> (raw)
In-Reply-To: <[email protected]>
References: <[email protected]>
	<[email protected]>
	<CAHgHdKuCQ3Dh8wt9QxWRmezgE62qzYW86T9Mv1n5s3fOJ4G2dQ@mail.gmail.com>
	<[email protected]>

On Tue, Mar 4, 2025 at 8:46 AM Peter Eisentraut <[email protected]>
wrote:

> On 27.02.25 23:17, Mark Dilger wrote:
> > The logic in equality_ops_are_compatible() was trusting that equality
> > operators found in an opfamily for btree or hash were ok, but not
> > trusting operators found in opfamilies of other AMs.  Now, after the
> > patch, other AMs can be marked as suitable.  That's really the core of
> > what the flag means:  "Can the system trust that equality operators
> > found in opfamilies of the AM are well-behaved", or something like
> > that.
>
> Yeah, what might be a good English identifier for that?
>
> >     I also object strongly to the fact that the comments for
> >     equality_ops_are_compatible and comparison_ops_are_compatible
> >     were not modified:
> >
> >       * This is trivially true if they are the same operator.  Otherwise,
> >       * we look to see if they can be found in the same btree or hash
> >     opfamily.
> >
> >       * This is trivially true if they are the same operator.  Otherwise,
> >       * we look to see if they can be found in the same btree opfamily.
> >
> > I agree these comments need updating.
>
> Mark, can you suggest updated wording for those?
>
>
Yes, happily, though I think I already did, in the v21 patch set.  Here is
the meat of that patch:

- * This is trivially true if they are the same operator.  Otherwise,
- * we look to see if they can be found in the same btree or hash opfamily.
- * Either finding allows us to assume that they have compatible notions
- * of equality.  (The reason we need to do these pushups is that one might
- * be a cross-type operator; for instance int24eq vs int4eq.)
+ * This is trivially true if they are the same operator.  Otherwise, we
look to
+ * see if they can be found in the same opfamily of an index AM which
+ * advertises amcancrosscompare.  Either finding allows us to assume that
they
+ * have compatible notions of equality.  (The reason we need to do these
+ * pushups is that one might be a cross-type operator; for instance
int24eq vs
+ * int4eq.)

and

- * This is trivially true if they are the same operator.  Otherwise,
- * we look to see if they can be found in the same btree opfamily.
- * For example, '<' and '>=' ops match if they belong to the same family.
+ * This is trivially true if they are the same operator.  Otherwise, we
look to
+ * see if they can be found in the same opfamily of an index AM that
advertises
+ * both amcancrosscompare and amcanorder.  For example, '<' and '>=' ops
match
+ * if they belong to the same family.
  *
- * (This is identical to equality_ops_are_compatible(), except that we
- * don't bother to examine hash opclasses.)
+ * (This is identical to equality_ops_are_compatible(), except that we
don't
+ * bother to examine opclasses for index AMs which cannot do ordering,
such as
+ * the hash index AM.)

See v21-0003-Update-syscache-code-comments.patch for the whole thing,
including a commit message about why this is needed.

-- 
—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company


view thread (10+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected], [email protected]
  Subject: Re: pgsql: Generalize hash and ordering support in amapi
  In-Reply-To: <CAHgHdKu0xiwifh=z0oecKR9+anyJZvjRwFkDiTENWS9tz8qm_A@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox