ERROR: could not identify an equality operator for type box
Hi there,
create table qq (b box);
CREATE TABLE
select count(*), b from qq group by b;
ERROR: could not identify an equality operator for type box
LINE 1: select count(*), b from qq group by b;
but following select works fine
select ' (43.6038,48.8664536),(1.3620777,1.44327)'::box = ' (43.6038,48.8664536),(1.3620777,1.44327)'::box;
?column?
----------
t
(1 row)
^
What does it means ?
Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83
Ok, casting to ::text solves the problem, but still I think we
need to fix it in the right way
Oleg
On Sat, 4 Dec 2010, Oleg Bartunov wrote:
Hi there,
create table qq (b box);
CREATE TABLE
select count(*), b from qq group by b;
ERROR: could not identify an equality operator for type box
LINE 1: select count(*), b from qq group by b;but following select works fine
select ' (43.6038,48.8664536),(1.3620777,1.44327)'::box = '
(43.6038,48.8664536),(1.3620777,1.44327)'::box;
?column? ----------
t
(1 row)
^
What does it means ?Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83
Regards,
Oleg
_____________________________________________________________
Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
Sternberg Astronomical Institute, Moscow University, Russia
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(495)939-16-83, +007(495)939-23-83
On 03.12.2010 23:53, Oleg Bartunov wrote:
create table qq (b box);
CREATE TABLE
select count(*), b from qq group by b;
ERROR: could not identify an equality operator for type box
LINE 1: select count(*), b from qq group by b;but following select works fine
select ' (43.6038,48.8664536),(1.3620777,1.44327)'::box = '
(43.6038,48.8664536),(1.3620777,1.44327)'::box;
?column? ----------
t
(1 row)
^
What does it means ?
GROUP BY requires b-tree sort operators. Although there is a '='
operator for box, there is no b-tree opclass.
--
Heikki Linnakangas
EnterpriseDB http://www.enterprisedb.com
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes:
On 03.12.2010 23:53, Oleg Bartunov wrote:
create table qq (b box);
CREATE TABLE
select count(*), b from qq group by b;
ERROR: could not identify an equality operator for type box
What does it means ?
GROUP BY requires b-tree sort operators. Although there is a '='
operator for box, there is no b-tree opclass.
A hash opclass would do too, as of recent releases ... but box hasn't
got one of those either.
There are some semantic issues involved here, notably that box_eq is
actually equality-of-areas, and that both it and box_same use fuzzy
equality which does not work well with either hash or sort-based
semantics. So you'd need to look at redefining the operator behavior
before you could get far.
regards, tom lane