Обсуждение: Outdated example in documentation

Поиск
Список
Период
Сортировка

Outdated example in documentation

От
Peter Eisentraut
Дата:
User's Guide section 7.2, example 7-1, claims that

SELECT 2 ^ 3 AS "Exp";

will be equivalent, after type resolution, to

SELECT CAST(2 AS double precision) ^ CAST(3 AS double precision) AS "Exp";

(which is true) or

SELECT 2.0 ^ 3.0 AS "Exp";

which is not true, since 2.0 and 3.0 are nowadays of type numeric.  Rather
than deleting the third branch of this claim (which would also imply
deleting the subsequent Note), does anyone want to think of a new example?

Related observations:  The premise of the example is that the operator ^
only exists for double precision arguments.  ^ is implemented using SQL
function dpow, which is implemented using C function dpow.  There's also a
documented SQL function pow, which is implemented using C function dpow.
Wouldn't it be enough to have the documented SQL function pow and the
operator on top of that?

There's also a documented SQL function pow for "numeric", but no operator
for it.  Should that be added?

-- 
Peter Eisentraut   peter_e@gmx.net



Re: Outdated example in documentation

От
Tom Lane
Дата:
Peter Eisentraut <peter_e@gmx.net> writes:
> Related observations:  The premise of the example is that the operator ^
> only exists for double precision arguments.

Which is what makes it difficult to think of a future-proof example :-(

> ^ is implemented using SQL
> function dpow, which is implemented using C function dpow.  There's also a
> documented SQL function pow, which is implemented using C function dpow.
> Wouldn't it be enough to have the documented SQL function pow and the
> operator on top of that?

There's quite a bit of redundancy of this sort in pg_proc.  You will
find however that getting rid of it is easier said than done.  (Hint:
type regproc doesn't know about overloading, therefore references from
initdb-time entries in pg_operator to pg_proc had better refer to
uniquely named functions.)  Short of massive redesign of the initdb
process, the extra entries aren't going away.  Even if we wanted to
do the work, there's the certainty that some user applications are
referring to those functions by name.

> There's also a documented SQL function pow for "numeric", but no operator
> for it.  Should that be added?

Sure, but you'll find it has to go through numeric_power ...
        regards, tom lane