pgsql: Add pg_size_bytes() to parse human-readable size strings.

Started by Dean Rasheedover 10 years ago9 messagescomitters
Jump to latest
#1Dean Rasheed
dean.a.rasheed@gmail.com

Add pg_size_bytes() to parse human-readable size strings.

This will parse strings in the format produced by pg_size_pretty() and
return sizes in bytes. This allows queries to be written with clauses
like "pg_total_relation_size(oid) > pg_size_bytes('10 GB')".

Author: Pavel Stehule with various improvements by Vitaly Burovoy
Discussion: /messages/by-id/CAFj8pRD-tGoDKnxdYgECzA4On01_uRqPrwF-8LdkSE-6bDHp0w@mail.gmail.com
Reviewed-by: Vitaly Burovoy, Oleksandr Shulgin, Kyotaro Horiguchi,
Michael Paquier and Robert Haas

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/53874c5228fe16589a4d01b3e1fab3678e0fd8e3

Modified Files
--------------
doc/src/sgml/func.sgml | 32 +++++++-
src/backend/utils/adt/dbsize.c | 149 +++++++++++++++++++++++++++++++++++
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_proc.h | 2 +
src/include/utils/builtins.h | 1 +
src/test/regress/expected/dbsize.out | 109 +++++++++++++++++++++++++
src/test/regress/sql/dbsize.sql | 39 +++++++++
7 files changed, 331 insertions(+), 3 deletions(-)

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#2Michael Paquier
michael@paquier.xyz
In reply to: Dean Rasheed (#1)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On Sat, Feb 20, 2016 at 7:07 PM, Dean Rasheed <dean.a.rasheed@gmail.com> wrote:

Add pg_size_bytes() to parse human-readable size strings.

This will parse strings in the format produced by pg_size_pretty() and
return sizes in bytes. This allows queries to be written with clauses
like "pg_total_relation_size(oid) > pg_size_bytes('10 GB')".

Author: Pavel Stehule with various improvements by Vitaly Burovoy
Discussion: /messages/by-id/CAFj8pRD-tGoDKnxdYgECzA4On01_uRqPrwF-8LdkSE-6bDHp0w@mail.gmail.com
Reviewed-by: Vitaly Burovoy, Oleksandr Shulgin, Kyotaro Horiguchi,
Michael Paquier and Robert Haas

Happy first commit.
--
Michael

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#3Michael Paquier
michael@paquier.xyz
In reply to: Michael Paquier (#2)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On Sat, Feb 20, 2016 at 7:12 PM, Michael Paquier
<michael.paquier@gmail.com> wrote:

On Sat, Feb 20, 2016 at 7:07 PM, Dean Rasheed <dean.a.rasheed@gmail.com> wrote:

Add pg_size_bytes() to parse human-readable size strings.

This will parse strings in the format produced by pg_size_pretty() and
return sizes in bytes. This allows queries to be written with clauses
like "pg_total_relation_size(oid) > pg_size_bytes('10 GB')".

Author: Pavel Stehule with various improvements by Vitaly Burovoy
Discussion: /messages/by-id/CAFj8pRD-tGoDKnxdYgECzA4On01_uRqPrwF-8LdkSE-6bDHp0w@mail.gmail.com
Reviewed-by: Vitaly Burovoy, Oleksandr Shulgin, Kyotaro Horiguchi,
Michael Paquier and Robert Haas

Happy first commit.

And happy first buildfarm breakage :)
http://buildfarm.postgresql.org/cgi-bin/show_log.pl?nm=termite&amp;dt=2016-02-20%2010%3A10%3A07
--
Michael

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#4Dean Rasheed
dean.a.rasheed@gmail.com
In reply to: Michael Paquier (#2)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On 20 February 2016 at 10:12, Michael Paquier <michael.paquier@gmail.com> wrote:

Happy first commit.

Arg. Not so much.

Looks like I broke something -- looking into it now :-(

Regards,
Dean

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#5Vik Fearing
vik@postgresfriends.org
In reply to: Dean Rasheed (#4)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On 02/20/2016 11:17 AM, Dean Rasheed wrote:

On 20 February 2016 at 10:12, Michael Paquier <michael.paquier@gmail.com> wrote:

Happy first commit.

Arg. Not so much.

Looks like I broke something -- looking into it now :-(

Happy first commit anyway!
--
Vik Fearing +33 6 46 75 15 36
http://2ndQuadrant.fr PostgreSQL : Expertise, Formation et Support

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#6Michael Paquier
michael@paquier.xyz
In reply to: Dean Rasheed (#4)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On Sat, Feb 20, 2016 at 7:17 PM, Dean Rasheed <dean.a.rasheed@gmail.com> wrote:

On 20 February 2016 at 10:12, Michael Paquier <michael.paquier@gmail.com> wrote:

Happy first commit.

Arg. Not so much.

Looks like I broke something -- looking into it now :-(

The terabyte conversion is at fault:
Expected:
! -1tb | -1099511627776
Result:
! -1tb | -1

+       else if (pg_strcasecmp(strptr, "gb") == 0)
+           multiplier = 1024 * 1024 * 1024;
+       else if (pg_strcasecmp(strptr, "tb") == 0)
+           multiplier = 1024 * 1024 * 1024 * 1024L;
Why adding an 'L' here?
-- 
Michael

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#7Dean Rasheed
dean.a.rasheed@gmail.com
In reply to: Michael Paquier (#6)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On 20 February 2016 at 10:33, Michael Paquier <michael.paquier@gmail.com> wrote:

On Sat, Feb 20, 2016 at 7:17 PM, Dean Rasheed <dean.a.rasheed@gmail.com> wrote:

On 20 February 2016 at 10:12, Michael Paquier <michael.paquier@gmail.com> wrote:

Happy first commit.

Arg. Not so much.

Looks like I broke something -- looking into it now :-(

The terabyte conversion is at fault:
Expected:
! -1tb | -1099511627776
Result:
! -1tb | -1

+       else if (pg_strcasecmp(strptr, "gb") == 0)
+           multiplier = 1024 * 1024 * 1024;
+       else if (pg_strcasecmp(strptr, "tb") == 0)
+           multiplier = 1024 * 1024 * 1024 * 1024L;
Why adding an 'L' here?

Ah, looks like it needs to be 'LL' because it needs to be a 64-bit literal.

Regards,
Dean

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#8Pavel Stehule
pavel.stehule@gmail.com
In reply to: Dean Rasheed (#1)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

2016-02-20 11:07 GMT+01:00 Dean Rasheed <dean.a.rasheed@gmail.com>:

Add pg_size_bytes() to parse human-readable size strings.

This will parse strings in the format produced by pg_size_pretty() and
return sizes in bytes. This allows queries to be written with clauses
like "pg_total_relation_size(oid) > pg_size_bytes('10 GB')".

Author: Pavel Stehule with various improvements by Vitaly Burovoy
Discussion:
/messages/by-id/CAFj8pRD-tGoDKnxdYgECzA4On01_uRqPrwF-8LdkSE-6bDHp0w@mail.gmail.com
Reviewed-by: Vitaly Burovoy, Oleksandr Shulgin, Kyotaro Horiguchi,
Michael Paquier and Robert Haas

Branch
------
master

Details
-------

http://git.postgresql.org/pg/commitdiff/53874c5228fe16589a4d01b3e1fab3678e0fd8e3

Modified Files
--------------
doc/src/sgml/func.sgml | 32 +++++++-
src/backend/utils/adt/dbsize.c | 149
+++++++++++++++++++++++++++++++++++
src/include/catalog/catversion.h | 2 +-
src/include/catalog/pg_proc.h | 2 +
src/include/utils/builtins.h | 1 +
src/test/regress/expected/dbsize.out | 109 +++++++++++++++++++++++++
src/test/regress/sql/dbsize.sql | 39 +++++++++
7 files changed, 331 insertions(+), 3 deletions(-)

great :)

Thank you very much

Regards

Pavel

Show quoted text

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#9Joe Conway
mail@joeconway.com
In reply to: Vik Fearing (#5)
Re: pgsql: Add pg_size_bytes() to parse human-readable size strings.

On 02/20/2016 02:32 AM, Vik Fearing wrote:

On 02/20/2016 11:17 AM, Dean Rasheed wrote:

On 20 February 2016 at 10:12, Michael Paquier <michael.paquier@gmail.com> wrote:

Happy first commit.

Arg. Not so much.

Looks like I broke something -- looking into it now :-(

Happy first commit anyway!

+1

--
Crunchy Data - http://crunchydata.com
PostgreSQL Support for Secure Enterprises
Consulting, Training, & Open Source Development