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

Started by Robert Haasover 8 years ago5 messagescomitters
Jump to latest
#1Robert Haas
robertmhaas@gmail.com

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: /messages/by-id/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(-)

#2Thomas Munro
thomas.munro@gmail.com
In reply to: Robert Haas (#1)
Re: pgsql: Add pow(), aka power(), function to pgbench.

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: /messages/by-id/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&amp;dt=2017-12-28%2013%3A00%3A27
https://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=bowerbird&amp;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

#3Fabien COELHO
coelho@cri.ensmp.fr
In reply to: Thomas Munro (#2)
Re: pgsql: Add pow(), aka power(), function to pgbench.

# 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.

#4Raúl Marín Rodríguez
rmrodriguez@carto.com
In reply to: Fabien COELHO (#3)
Re: pgsql: Add pow(), aka power(), function to pgbench.

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

#5Andrew Dunstan
andrew@dunslane.net
In reply to: Raúl Marín Rodríguez (#4)
Re: pgsql: Add pow(), aka power(), function to pgbench.

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/&gt;

0? seems right. I have committed that.

cheers

andrew

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