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 [EMAIL PROTECTED] |
- [BUGS] distance operator dont work bernard snyers
- Re: [BUGS] distance operator dont work Michael Fuhr
- Re: [BUGS] distance operator dont work Tom Lane