Re: Does Type Have = Operator? - Mailing list pgsql-hackers

From David G. Johnston
Subject Re: Does Type Have = Operator?
Date
Msg-id CAKFQuwZ_CmD=z8XNQZ4_FY7PkBqTTBXx6Jya-so=+ngNGPh3Ag@mail.gmail.com
Whole thread Raw
In response to Re: Does Type Have = Operator?  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: Does Type Have = Operator?
List pgsql-hackers
On Wed, May 11, 2016 at 9:54 AM, Robert Haas <robertmhaas@gmail.com> wrote:
On Tue, May 10, 2016 at 9:16 PM, David G. Johnston
<david.g.johnston@gmail.com> wrote:
> Brute force: you'd have to query pg_amop and note the absence of a row with
> a btree (maybe hash too...) family strategy 3 (1 for hash) [equality] where
> the left and right types are the same and match the type in question.

The core system uses this kind of thing to find equality operators in
a number of cases.

We often assume that the operator which implements equality for the
type's default btree operator class is the canonical one for some
purpose.  Ditto for the default hash operator class.

​Yeah, the user-facing documentation covers it pretty deeply if not in one central location.

But apparently the core system also uses the fact that "=", if present, is an equality operator and, less so, that no other operator is expected​
 
​to be used for equality.

I suspect that such an expectation is not enforced though - e.g., someone could define "==" to mean equality ​if they so choose (the lesser property).  Its hard to imagine defining "=" to mean something different in logic, though, without intentionally trying to be cryptic.

David J.

pgsql-hackers by date:

Previous
From: Josh berkus
Date:
Subject: Re: Academic help for Postgres
Next
From: Kevin Grittner
Date:
Subject: Re: Does Type Have = Operator?