distance operator dont work

From: bernard snyers <bs(at)ionicsoft(dot)com>
To: pgsql-bugs(at)postgresql(dot)org
Subject: distance operator dont work
Date: 2006-08-12 06:52:48
Message-ID: 44DD7AC0.9020601@ionicsoft.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Dear all,

I have a table containing polygon and I try a distance operator which
fails. (select * from mytable order by point(10,10) <-> mycol)

Postgres responds that the operator <-> between a point and a polygon is
unknown.

I look in the pg_operator.h (in src/include/catalog) where I think all
builtin operators are defined and found these definitions

DATA(insert OID = 517 ( "<->" PGNSP PGUID b f 600 600 701 517
0 0 0 0 0 point_distance - - ));

DATA(insert OID = 613 ( "<->" PGNSP PGUID b f 600 628 701
0 0 0 0 0 0 dist_pl - - ));
DATA(insert OID = 614 ( "<->" PGNSP PGUID b f 600 601 701
0 0 0 0 0 0 dist_ps - - ));
DATA(insert OID = 615 ( "<->" PGNSP PGUID b f 600 603 701
0 0 0 0 0 0 dist_pb - - ));
DATA(insert OID = 616 ( "<->" PGNSP PGUID b f 601 628 701
0 0 0 0 0 0 dist_sl - - ));
DATA(insert OID = 617 ( "<->" PGNSP PGUID b f 601 603 701
0 0 0 0 0 0 dist_sb - - ));
DATA(insert OID = 618 ( "<->" PGNSP PGUID b f 600 602 701
0 0 0 0 0 0 dist_ppath - - ));

DATA(insert OID = 706 ( "<->" PGNSP PGUID b f 603 603 701 706
0 0 0 0 0 box_distance - - ));
DATA(insert OID = 707 ( "<->" PGNSP PGUID b f 602 602 701 707
0 0 0 0 0 path_distance - - ));
DATA(insert OID = 708 ( "<->" PGNSP PGUID b f 628 628 701 708
0 0 0 0 0 line_distance - - ));
DATA(insert OID = 709 ( "<->" PGNSP PGUID b f 601 601 701 709
0 0 0 0 0 lseg_distance - - ));
DATA(insert OID = 712 ( "<->" PGNSP PGUID b f 604 604 701 712
0 0 0 0 0 poly_distance - - ));

DATA(insert OID = 1522 ( "<->" PGNSP PGUID b f 600 718 701
0 0 0 0 0 0 dist_pc - - ));
DATA(insert OID = 1523 ( "<->" PGNSP PGUID b f 718 604 701
0 0 0 0 0 0 dist_cpoly - - ));
DATA(insert OID = 1520 ( "<->" PGNSP PGUID b f 718 718 701
1520 0 0 0 0 0 circle_distance - - ));
DATA(insert OID = 1524 ( "<->" PGNSP PGUID b f 628 603 701
0 0 0 0 0 0 dist_lb - - ));

and there is none between a point and a polygon. (600 604) (furthermore
the 628 type is defined in ptypes.h as not implemented.

I did the following test,
I patch the line
DATA(insert OID = 613 ( "<->" PGNSP PGUID b f 600 628 701
0 0 0 0 0 0 dist_pl - - ));

replacing 628 by 604 ,
compiling and reinstalling everything including the database
and It works (I didnt verify the result)

So I am wondering , if I miss something, do I have to convert my point
in a degenerated circle or polygon) or do you forget one definition ?

I have checked the source code in versions 7.4.2,7.4.3 , 8.1.0 & 8.1.4.

The version I patched is 8.1.4 and the lines above were extracted from 7.4.2

Thank you

Bernard SNYERS
Chief Architect
Ionic Software
bs(at)ionicsoft(dot)com

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Emil J. 2006-08-12 11:53:08 BUG #2572: ALTER TABLE ADD COLUMN
Previous Message Jie Liang 2006-08-11 16:47:11 Re: Restoring 7.4.2 pg_dumpall output in 8.1.4 fails