On 18.01.2012 23:14, kenan...@gmail.com wrote:
The following bug has been logged on the website:

Bug reference:      6401
Logged by:          Kenaniah Cerny
Email address:      kenan...@gmail.com
PostgreSQL version: 9.1.2
Operating system:   Centos 6 x86_64
Description:

----
SELECT point(2, 3) IS DISTINCT FROM point(2, 3);
----
ERROR:  operator does not exist: point = point
LINE 1: SELECT point(2, 3) IS DISTINCT FROM point(2, 3)
                            ^
HINT:  No operator matches the given name and argument type(s). You might
need to add explicit type casts.
----

According to the docs
(http://www.postgresql.org/docs/current/static/functions-geometry.html#FUNCTIONS-GEOMETRY),
the "same as" operator is the ~= operator,  not the = operator.

Yeah, unfortunately the code to transform IS DISTINCT FROM into the corresponding operator doesn't know about that. In fact, you might expect it to complain about missing "<>" operator, as "IS DISTINCT FROM" is really more like inequality, but the planner in fact implements it using the = operator, negating the result. That's because it's more common for datatypes to have a = operator than <>. Curiously, that's not the case with point datatype - it has a <> operator but not =.

Frankly that's such a rare corner case that I'm not very enthusiastic about fixing it. One idea would be to look up the type's b-tree sort operators, and pick the equality operator from there. But point datatype doesn't have b-tree sort operators, either, so it wouldn't help in this case.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

Reply via email to