1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
-- pg_size_bytes() tests
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: 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", "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"
|