Re: operator @@ is not supported by path; doc says otherwise

2021-12-06 Thread Tom Lane
Anton Voloshin  writes:
> The documentation for 13 and 14 says in "Geometric Functions and
> Operators" https://www.postgresql.org/docs/14/functions-geometry.html:
>>> @@ geometric_type → point
>>> Computes the center point. Available for box, lseg, path, polygon, circle.
>>> @@ box '(2,2),(0,0)' → (1,1)

> However, apparently, this operator does not work for path:
>>> postgres=# SELECT @@ path '[(0,0),(0,1)]';
>>> ERROR:  function "path_center" not implemented

The fact that this operator is documented is probably my fault
--- when I went through the operator tables not long ago,
I made sure there was an entry for every operator listed in
the system catalogs.  It didn't enter my mind that some of
them might be pointing at useless stubs :-(.

Looking through geo_ops.c, I see that not only path_center
but also dist_lb, dist_bl, close_sl, close_lb, poly_distance
error out with "not implemented".

Given that that code has sat there for more than 20 years
with nobody coming to finish the job, I think we should
just rip those functions and catalog entries out altogether.
It's misleading and probably a small waste of cycles to
have useless entries in pg_proc and pg_operator.

regards, tom lane




operator @@ is not supported by path; doc says otherwise

2021-12-06 Thread PG Doc comments form
The following documentation comment has been logged on the website:

Page: https://www.postgresql.org/docs/14/functions-geometry.html
Description:

Hello,

The documentation for 13 and 14 says in "Geometric Functions and
Operators":

> @@ geometric_type → point
> Computes the center point. Available for box, lseg, path, polygon,
circle.
> @@ box '(2,2),(0,0)' → (1,1)

However, apparently, this operator doesn't work for path:

> $ psql
> psql (14.1)
> Type "help" for help.
>
> postgres=# SELECT @@ path '[(0,0),(0,1)]';
> ERROR:  function "path_center" not implemented
> postgres=#

Same for a closed path:
> postgres=# SELECT @@ path '((0,0),(0,1))';
> ERROR:  function "path_center" not implemented

Quick tests show that other types listed (box, lseg, polygon, circle) are
supported, so only the path is extra.

This sentence in the documentation came from commit 791090bd775b (included
in REL_13_STABLE and later). What slightly confuses me is that path_center
has been listed in src/include/catalog/pg_operator.dat and pg_proc.dat (and
pg_operator.h/pg_proc.h before that) since 3c2d74d2a (1997!), but since
a3d284485 (2018) we have a regression test ensuring "function "path_center"
not implemented".

The easiest fix is, obviously, removing 'path' from the list. Or, if that
would be an actual improvement, I could submit a patch to support a
path_center as well. Not sure if there is any actual need for that, though:
I found this by just goofing around, not because I actually needed to
calculate the center for some path, and converting to polygon might be a
workaround for those who might need that.

Anton Voloshin
Postgres Professional, The Russian Postgres Company
https://postgrespro.ru


operator @@ is not supported by path; doc says otherwise

2021-12-06 Thread Anton Voloshin

Hello,

The documentation for 13 and 14 says in "Geometric Functions and
Operators" https://www.postgresql.org/docs/14/functions-geometry.html:

> @@ geometric_type → point
> Computes the center point. Available for box, lseg, path, polygon,
circle.
> @@ box '(2,2),(0,0)' → (1,1)

However, apparently, this operator does not work for path:

> $ psql
> psql (14.1)
> Type "help" for help.
>
> postgres=# SELECT @@ path '[(0,0),(0,1)]';
> ERROR:  function "path_center" not implemented
> postgres=#

Same for a closed path:
> postgres=# SELECT @@ path '((0,0),(0,1))';
> ERROR:  function "path_center" not implemented

Quick tests show that other types listed (box, lseg, polygon, circle) 
are supported, so only the path is extra.


This sentence in the documentation came from 791090bd775b (REL_13_STABLE 
and later). What slightly confuses me is that path_center has been 
listed in src/include/catalog/pg_operator.dat and pg_proc.dat (and 
pg_operator.h/pg_proc.h before that) since 3c2d74d2a (1997!), but since 
a3d284485 (2018) we have a regression test ensuring that "function 
"path_center" not implemented".


The easiest fix is, obviously, removing 'path' from the list in the 
documentation. Or, if that would be an actual improvement, I could 
submit a patch to support a path_center as well. Not sure if there is 
any actual need for that, though: I found this by just goofing around, 
not because I actually needed to calculate the center for some path. 
Also, converting to polygon might be a workaround for those who might 
need that feature. Please let me know if implementing path_center would 
be a useful addition.


P.S. I've sent a report though a submit web form on a documentation web 
site two days ago, but, apparently, that email was not delivered to this 
list.


Anton Voloshin
Postgres Professional, The Russian Postgres Company
https://postgrespro.ru