Re: [HACKERS] pow support for pgbench

Fabien COELHO <coelho@cri.ensmp.fr>

From: Fabien COELHO <coelho@cri.ensmp.fr>
To: Robert Haas <robertmhaas@gmail.com>
Cc: Raúl Marín Rodríguez <rmrodriguez@carto.com>, Michael Paquier <michael.paquier@gmail.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, PostgreSQL mailing lists <pgsql-hackers@postgresql.org>
Date: 2017-12-01T22:23:37Z
Lists: pgsql-hackers
Hello Robert,

> The fact that the return type is not consistently of one type bothers
> me.  I'm not sure pgbench's expression language is a good place to
> runtime polymorphism -- SQL doesn't work that way.

Sure.

Pg has a NUMERIC adaptative precision version, which is cheating, because 
it can return kind of an "int" or a "float", depending on whether there 
are digits after the decimal point or not.

Pgbench does not have support for NUMERIC, just INT & DOUBLE, so the 
current version is an approximation of that.

Now it is always possible to just do DOUBLE version, but this won't match 
SQL behavior either.

> + /*
> +  * pow() for integer values with exp >= 0. Matches SQL pow() behaviour
> +  */
>
> What's the name of the backend function whose behavior this matches?

POW(numeric,numeric) -> numeric, which matches "numeric_power".

-- 
Fabien.


Commits

  1. Add pow(), aka power(), function to pgbench.

  2. pgbench: Support double constants and functions.