| SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM |
| (VALUES (10::bigint), (1000::bigint), (1000000::bigint), |
| (1000000000::bigint), (1000000000000::bigint), |
| (1000000000000000::bigint)) x(size); |
| size | pg_size_pretty | pg_size_pretty |
| ------------------+----------------+---------------- |
| 10 | 10 bytes | -10 bytes |
| 1000 | 1000 bytes | -1000 bytes |
| 1000000 | 977 kB | -977 kB |
| 1000000000 | 954 MB | -954 MB |
| 1000000000000 | 931 GB | -931 GB |
| 1000000000000000 | 909 TB | -909 TB |
| (6 rows) |
| |
| SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM |
| (VALUES (10::numeric), (1000::numeric), (1000000::numeric), |
| (1000000000::numeric), (1000000000000::numeric), |
| (1000000000000000::numeric), |
| (10.5::numeric), (1000.5::numeric), (1000000.5::numeric), |
| (1000000000.5::numeric), (1000000000000.5::numeric), |
| (1000000000000000.5::numeric)) x(size); |
| size | pg_size_pretty | pg_size_pretty |
| --------------------+----------------+---------------- |
| 10 | 10 bytes | -10 bytes |
| 1000 | 1000 bytes | -1000 bytes |
| 1000000 | 977 kB | -977 kB |
| 1000000000 | 954 MB | -954 MB |
| 1000000000000 | 931 GB | -931 GB |
| 1000000000000000 | 909 TB | -909 TB |
| 10.5 | 10.5 bytes | -10.5 bytes |
| 1000.5 | 1000.5 bytes | -1000.5 bytes |
| 1000000.5 | 977 kB | -977 kB |
| 1000000000.5 | 954 MB | -954 MB |
| 1000000000000.5 | 931 GB | -931 GB |
| 1000000000000000.5 | 909 TB | -909 TB |
| (12 rows) |
| |
| -- test where units change up |
| SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM |
| (VALUES (10239::bigint), (10240::bigint), |
| (10485247::bigint), (10485248::bigint), |
| (10736893951::bigint), (10736893952::bigint), |
| (10994579406847::bigint), (10994579406848::bigint), |
| (11258449312612351::bigint), (11258449312612352::bigint)) x(size); |
| size | pg_size_pretty | pg_size_pretty |
| -------------------+----------------+---------------- |
| 10239 | 10239 bytes | -10239 bytes |
| 10240 | 10 kB | -10 kB |
| 10485247 | 10239 kB | -10239 kB |
| 10485248 | 10 MB | -10 MB |
| 10736893951 | 10239 MB | -10239 MB |
| 10736893952 | 10 GB | -10 GB |
| 10994579406847 | 10239 GB | -10239 GB |
| 10994579406848 | 10 TB | -10 TB |
| 11258449312612351 | 10239 TB | -10239 TB |
| 11258449312612352 | 10 PB | -10 PB |
| (10 rows) |
| |
| SELECT size, pg_size_pretty(size), pg_size_pretty(-1 * size) FROM |
| (VALUES (10239::numeric), (10240::numeric), |
| (10485247::numeric), (10485248::numeric), |
| (10736893951::numeric), (10736893952::numeric), |
| (10994579406847::numeric), (10994579406848::numeric), |
| (11258449312612351::numeric), (11258449312612352::numeric), |
| (11528652096115048447::numeric), (11528652096115048448::numeric)) x(size); |
| size | pg_size_pretty | pg_size_pretty |
| ----------------------+----------------+---------------- |
| 10239 | 10239 bytes | -10239 bytes |
| 10240 | 10 kB | -10 kB |
| 10485247 | 10239 kB | -10239 kB |
| 10485248 | 10 MB | -10 MB |
| 10736893951 | 10239 MB | -10239 MB |
| 10736893952 | 10 GB | -10 GB |
| 10994579406847 | 10239 GB | -10239 GB |
| 10994579406848 | 10 TB | -10 TB |
| 11258449312612351 | 10239 TB | -10239 TB |
| 11258449312612352 | 10 PB | -10 PB |
| 11528652096115048447 | 10239 PB | -10239 PB |
| 11528652096115048448 | 10240 PB | -10240 PB |
| (12 rows) |
| |
| -- Ensure we get the expected results when passing the extremities of bigint |
| SELECT pg_size_pretty('-9223372036854775808'::bigint), |
| pg_size_pretty('9223372036854775807'::bigint); |
| pg_size_pretty | pg_size_pretty |
| ----------------+---------------- |
| -8192 PB | 8192 PB |
| (1 row) |
| |
| -- pg_size_bytes() tests |
| SELECT size, pg_size_bytes(size) FROM |
| (VALUES ('1'), ('123bytes'), ('256 B'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '), |
| ('1TB'), ('3000 TB'), ('1e6 MB'), ('99 PB')) x(size); |
| size | pg_size_bytes |
| ----------+-------------------- |
| 1 | 1 |
| 123bytes | 123 |
| 256 B | 256 |
| 1kB | 1024 |
| 1MB | 1048576 |
| 1 GB | 1073741824 |
| 1.5 GB | 1610612736 |
| 1TB | 1099511627776 |
| 3000 TB | 3298534883328000 |
| 1e6 MB | 1048576000000 |
| 99 PB | 111464090777419776 |
| (11 rows) |
| |
| -- case-insensitive units are supported |
| SELECT size, pg_size_bytes(size) FROM |
| (VALUES ('1'), ('123bYteS'), ('1kb'), ('1mb'), (' 1 Gb'), ('1.5 gB '), |
| ('1tb'), ('3000 tb'), ('1e6 mb'), ('99 pb')) x(size); |
| size | pg_size_bytes |
| ----------+-------------------- |
| 1 | 1 |
| 123bYteS | 123 |
| 1kb | 1024 |
| 1mb | 1048576 |
| 1 Gb | 1073741824 |
| 1.5 gB | 1610612736 |
| 1tb | 1099511627776 |
| 3000 tb | 3298534883328000 |
| 1e6 mb | 1048576000000 |
| 99 pb | 111464090777419776 |
| (10 rows) |
| |
| -- negative numbers are supported |
| SELECT size, pg_size_bytes(size) FROM |
| (VALUES ('-1'), ('-123bytes'), ('-1kb'), ('-1mb'), (' -1 Gb'), ('-1.5 gB '), |
| ('-1tb'), ('-3000 TB'), ('-10e-1 MB'), ('-99 PB')) x(size); |
| size | pg_size_bytes |
| -----------+--------------------- |
| -1 | -1 |
| -123bytes | -123 |
| -1kb | -1024 |
| -1mb | -1048576 |
| -1 Gb | -1073741824 |
| -1.5 gB | -1610612736 |
| -1tb | -1099511627776 |
| -3000 TB | -3298534883328000 |
| -10e-1 MB | -1048576 |
| -99 PB | -111464090777419776 |
| (10 rows) |
| |
| -- different cases with allowed points |
| SELECT size, pg_size_bytes(size) FROM |
| (VALUES ('-1.'), ('-1.kb'), ('-1. kb'), ('-0. gb'), |
| ('-.1'), ('-.1kb'), ('-.1 kb'), ('-.0 gb')) x(size); |
| size | pg_size_bytes |
| --------+--------------- |
| -1. | -1 |
| -1.kb | -1024 |
| -1. kb | -1024 |
| -0. gb | 0 |
| -.1 | 0 |
| -.1kb | -102 |
| -.1 kb | -102 |
| -.0 gb | 0 |
| (8 rows) |
| |
| -- invalid inputs |
| SELECT pg_size_bytes('1 AB'); |
| ERROR: invalid size: "1 AB" |
| DETAIL: Invalid size unit: "AB". |
| HINT: Valid units are "bytes", "B", "kB", "MB", "GB", "TB", and "PB". |
| SELECT pg_size_bytes('1 AB A'); |
| ERROR: invalid size: "1 AB A" |
| DETAIL: Invalid size unit: "AB A". |
| HINT: Valid units are "bytes", "B", "kB", "MB", "GB", "TB", and "PB". |
| SELECT pg_size_bytes('1 AB A '); |
| ERROR: invalid size: "1 AB A " |
| DETAIL: Invalid size unit: "AB A". |
| HINT: Valid units are "bytes", "B", "kB", "MB", "GB", "TB", and "PB". |
| SELECT pg_size_bytes('9223372036854775807.9'); |
| ERROR: bigint out of range |
| SELECT pg_size_bytes('1e100'); |
| ERROR: bigint out of range |
| SELECT pg_size_bytes('1e1000000000000000000'); |
| ERROR: value overflows numeric format |
| SELECT pg_size_bytes('1 byte'); -- the singular "byte" is not supported |
| ERROR: invalid size: "1 byte" |
| DETAIL: Invalid size unit: "byte". |
| HINT: Valid units are "bytes", "B", "kB", "MB", "GB", "TB", and "PB". |
| SELECT pg_size_bytes(''); |
| ERROR: invalid size: "" |
| SELECT pg_size_bytes('kb'); |
| ERROR: invalid size: "kb" |
| SELECT pg_size_bytes('..'); |
| ERROR: invalid size: ".." |
| SELECT pg_size_bytes('-.'); |
| ERROR: invalid size: "-." |
| SELECT pg_size_bytes('-.kb'); |
| ERROR: invalid size: "-.kb" |
| SELECT pg_size_bytes('-. kb'); |
| ERROR: invalid size: "-. kb" |
| SELECT pg_size_bytes('.+912'); |
| ERROR: invalid size: ".+912" |
| SELECT pg_size_bytes('+912+ kB'); |
| ERROR: invalid size: "+912+ kB" |
| DETAIL: Invalid size unit: "+ kB". |
| HINT: Valid units are "bytes", "B", "kB", "MB", "GB", "TB", and "PB". |
| SELECT pg_size_bytes('++123 kB'); |
| ERROR: invalid size: "++123 kB" |