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) SELECT size, pg_size_bytes(size) FROM (VALUES ('1'), ('123bytes'), ('1kB'), ('1MB'), (' 1 GB'), ('1.5 GB '), ('1TB'), ('3000 TB'), ('1e6 MB')) 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 (9 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')) 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 (9 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')) 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 (9 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", "kB", "MB", "GB", and "TB". SELECT pg_size_bytes('1 AB A'); ERROR: invalid size: "1 AB A" DETAIL: Invalid size unit: "AB A". HINT: Valid units are "bytes", "kB", "MB", "GB", and "TB". SELECT pg_size_bytes('1 AB A '); ERROR: invalid size: "1 AB A " DETAIL: Invalid size unit: "AB A". HINT: Valid units are "bytes", "kB", "MB", "GB", and "TB". 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: invalid size: "1e1000000000000000000" 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", "kB", "MB", "GB", and "TB". 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", "kB", "MB", "GB", and "TB". SELECT pg_size_bytes('++123 kB'); ERROR: invalid size: "++123 kB"