Thread: pgsql: Add pow(), aka power(), function to pgbench.

pgsql: Add pow(), aka power(), function to pgbench.

From
Robert Haas
Date:
Add pow(), aka power(), function to pgbench.

Raúl Marín Rodríguez, reviewed by Fabien Coelho and Michael Paquier,
with a minor fix by me.

Discussion: http://postgr.es/m/CAM6_UM4XiA14y9HnDqu9kAAOtwMhHZxW--q_ZACZW9Hsrsf-tg@mail.gmail.com

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/7a727c180aa3c3baba12957d4cbec7b022ba4be5

Modified Files
--------------
doc/src/sgml/ref/pgbench.sgml                |  7 +++++++
src/bin/pgbench/exprparse.y                  |  6 ++++++
src/bin/pgbench/pgbench.c                    | 18 ++++++++++++++++++
src/bin/pgbench/pgbench.h                    |  3 ++-
src/bin/pgbench/t/001_pgbench_with_server.pl | 22 +++++++++++++++++++++-
5 files changed, 54 insertions(+), 2 deletions(-)


Re: pgsql: Add pow(), aka power(), function to pgbench.

From
Thomas Munro
Date:
On Thu, Dec 28, 2017 at 7:47 AM, Robert Haas <rhaas@postgresql.org> wrote:
> Add pow(), aka power(), function to pgbench.
>
> Raúl Marín Rodríguez, reviewed by Fabien Coelho and Michael Paquier,
> with a minor fix by me.
>
> Discussion: http://postgr.es/m/CAM6_UM4XiA14y9HnDqu9kAAOtwMhHZxW--q_ZACZW9Hsrsf-tg@mail.gmail.com
>
> Branch
> ------
> master
>
> Details
> -------
> https://git.postgresql.org/pg/commitdiff/7a727c180aa3c3baba12957d4cbec7b022ba4be5
>
> Modified Files
> --------------
> doc/src/sgml/ref/pgbench.sgml                |  7 +++++++
> src/bin/pgbench/exprparse.y                  |  6 ++++++
> src/bin/pgbench/pgbench.c                    | 18 ++++++++++++++++++
> src/bin/pgbench/pgbench.h                    |  3 ++-
> src/bin/pgbench/t/001_pgbench_with_server.pl | 22 +++++++++++++++++++++-
> 5 files changed, 54 insertions(+), 2 deletions(-)

This seems to have caused a couple of BF failures on Windows (sorry
for my role in hiding those, I've just been reviewing all failures to
atone):

https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=jacana&dt=2017-12-28%2013%3A00%3A27
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&dt=2017-12-28%2011%3A30%3A23

Excerpts:

# debug(script=0,command=31): double 8.50705917302346e+037
#     doesn't match '(?^:command=31.: double 8.50705917302346e\+37\b)'

# debug(script=0,command=32): double 1e+030
#     doesn't match '(?^:command=32.: double 1e\+30\b)'

The difference seems to be a leading zero before the exponent, so
perhaps the patterns need "0*" in there?

--
Thomas Munro
http://www.enterprisedb.com


Re: pgsql: Add pow(), aka power(), function to pgbench.

From
Fabien COELHO
Date:
> # debug(script=0,command=31): double 8.50705917302346e+037
> #     doesn't match '(?^:command=31.: double 8.50705917302346e\+37\b)'
>
> # debug(script=0,command=32): double 1e+030
> #     doesn't match '(?^:command=32.: double 1e\+30\b)'
>
> The difference seems to be a leading zero before the exponent, so
> perhaps the patterns need "0*" in there?

Probably "0?". Although an int with leading zeros is usually an octal 
number, so window's rational fails me.

-- 
Fabien.


Re: pgsql: Add pow(), aka power(), function to pgbench.

From
Raúl Marín Rodríguez
Date:
Probably "0?". Although an int with leading zeros is usually an octal number, so window's rational fails me.

You are right. From the C99 standard:
The exponent always contains at least two digits, and only as many more digits as necessary to represent the exponent. If the value is zero, the exponent is zero.

 Both solutions seem fine to me. Also, as these couple of tests were added to check for int overflow and we no longer do any int operations, removing them wouldn't be a big loss. 
--
Raúl Marín Rodríguez 
carto.com

Re: pgsql: Add pow(), aka power(), function to pgbench.

From
Andrew Dunstan
Date:

On 12/29/2017 08:04 AM, Raúl Marín Rodríguez wrote:
>
>     Probably "0?". Although an int with leading zeros is usually an
>     octal number, so window's rational fails me.
>
>
> You are right. From the C99 standard:
>
>     The exponent always contains at least two digits, and only as many
>     more digits as necessary to represent the exponent. If the value
>     is zero, the exponent is zero.
>
>
>  Both solutions seem fine to me. Also, as these couple of tests were
> added to check for int overflow and we no longer do any int
> operations, removing them wouldn't be a big loss. 
> -- 
> *Raúl Marín Rodríguez 
> *carto.com <http://carto.com/>
>


0? seems right. I have committed that.

cheers

andrew

-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services