Re: Shouldn't "WHEN (OLD.* IS DISTINCT FROM NEW.*)" clause be independent from data type? - Mailing list pgsql-general

From Tom Lane
Subject Re: Shouldn't "WHEN (OLD.* IS DISTINCT FROM NEW.*)" clause be independent from data type?
Date
Msg-id 15617.1442512920@sss.pgh.pa.us
Whole thread Raw
In response to Re: Shouldn't "WHEN (OLD.* IS DISTINCT FROM NEW.*)" clause be independent from data type?  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: Shouldn't "WHEN (OLD.* IS DISTINCT FROM NEW.*)" clause be independent from data type?
List pgsql-general
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> Tom Lane wrote:
>> Since type record *does* have btree/hash opclasses, it is not negotiable
>> that the component column types obey btree or at least hash semantics.
>> The only way to fix this would be to provide such opclasses for point.
>> Btree has the probably-fatal obstacle that there's no plausible linear
>> sort order for 2-D points.  It would be possible to make hash work, if
>> it weren't that point_eq() is fuzzy equality not exact equality.

> This comment made me remember something I mentioned some months ago,
> regarding fuzzy comparisons for other datatypes;
> http://www.postgresql.org/message-id/20150512181307.GJ2523@alvh.no-ip.org
> It seems that currently box_contains_pt() uses exact floating point
> operators rather than fuzzy; we were pushing for having some of these
> operators be changed to use the fuzzy definitions, and introduce a few
> more fuzzy operators, to be used in BRIN opclasses.

> I wonder if it would make sense to introduce a hash opclass for point
> and other floating-point-based datatypes that uses strict equality, so
> that IS [NOT] DISTINCT FROM works on them.  Since there cannot be a
> btree opclass for point, there shouldn't be any definitional problem in
> doing so; but for datatypes that do have a linear sort order, maybe this
> (having different equality operators for btree and hash) would be a
> problem.

The other line of attack would be to deprecate all the fuzzy comparison
behavior in the geometric types, and just make it exact.  Don't know how
much pain that would add, but surely it would also subtract some.

            regards, tom lane


pgsql-general by date:

Previous
From: Alvaro Herrera
Date:
Subject: Re: Shouldn't "WHEN (OLD.* IS DISTINCT FROM NEW.*)" clause be independent from data type?
Next
From: Adrian Klaver
Date:
Subject: Re: Import Problem