View Single Post

   
  #1 (permalink)  
Old 04-12-2008, 02:31 AM
Albe Laurenz
 
Posts: n/a
Default Re: group by points

Jaime Casanova wrote:
> suppose we have something like this:
>
> upd_views=# create table tabla1 (col1 point);


[...]

> then, this select will give an error:
>
> upd_views=# select col1, count(*) from tabla1 group by col1;
> ERROR: could not identify an ordering operator for type point
> HINT: Use an explicit ordering operator or modify the query.
> upd_views=#
>
> i guess this is related to:
> http://archives.postgresql.org/pgsql...8/msg00809.php
>
> so, what happened with this idea? there is another way to automagicaly
> identify an "equality operator" for datatypes like 'point'?


I don't think that there is a connection to the message you quote.

In order to (efficiently) process a GROUP BY clause, you need a
total ordering on the data type that you group by, i.e. an ordering
such that for any two data x and y you have either x < y or x > x
or x = y.

There is no reasonable total ordering on the real plain, so you will
have to roll your own. How about:

select point(col1[0], col1[1]), count(*) from tabla1 group by col1[0],
col1[1];

Yours,
Laurenz Albe

---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match

Reply With Quote