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
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 |