Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 545a719

Browse files
author
Nikita Glukhov
committed
TMP: Fix jsonb_toaster
1 parent d305ddd commit 545a719

File tree

2 files changed

+337
-428
lines changed

2 files changed

+337
-428
lines changed
+14-213
Original file line numberDiff line numberDiff line change
@@ -1,219 +1,20 @@
1-
CREATE EXTENSION bytea_toaster;
1+
CREATE EXTENSION jsonb_toaster;
22
CREATE TABLE tst_failed (
3-
t jsonb TOASTER bytea_toaster
3+
t json TOASTER jsonb_toaster
44
);
55
CREATE TABLE tst1 (
6-
t bytea TOASTER bytea_toaster
6+
t jsonb TOASTER jsonb_toaster
77
);
88
CREATE TABLE tst2 (
9-
t bytea
9+
t jsonb
1010
);
11-
ALTER TABLE tst2 ALTER COLUMN t SET TOASTER bytea_toaster;
12-
CREATE TABLE test_bytea_append (id int, a bytea STORAGE EXTERNAL);
13-
ALTER TABLE test_bytea_append ALTER a SET TOASTER bytea_toaster;
14-
INSERT INTO test_bytea_append SELECT i, repeat('a', 10000)::bytea FROM generate_series(1, 10) i;
15-
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
16-
SAVEPOINT p1;
17-
UPDATE test_bytea_append SET a = a || repeat('b', 3000)::bytea;
18-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20), 'UTF8') FROM test_bytea_append;
19-
id | convert_from
20-
----+---------------------------------
21-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
22-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
23-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
24-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
25-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
26-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
27-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
28-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
29-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
30-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
31-
(10 rows)
32-
33-
SAVEPOINT p2;
34-
UPDATE test_bytea_append SET a = a || repeat('c', 2000)::bytea;
35-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20) || substr(a, 14990, 20), 'UTF8') FROM test_bytea_append;
36-
id | convert_from
37-
----+-----------------------------------------------------
38-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
39-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
40-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
41-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
42-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
43-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
44-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
45-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
46-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
47-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
48-
(10 rows)
49-
50-
ROLLBACK TO SAVEPOINT p2;
51-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20), 'UTF8') FROM test_bytea_append;
52-
id | convert_from
53-
----+---------------------------------
54-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
55-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
56-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
57-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
58-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
59-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
60-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
61-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
62-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
63-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
64-
(10 rows)
65-
66-
UPDATE test_bytea_append SET a = a || repeat('d', 4000)::bytea;
67-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20) || substr(a, 16990, 20), 'UTF8') FROM test_bytea_append;
68-
id | convert_from
69-
----+-----------------------------------------------------
70-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
71-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
72-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
73-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
74-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
75-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
76-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
77-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
78-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
79-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbdddddddddddddddddddd
80-
(10 rows)
81-
82-
ROLLBACK TO SAVEPOINT p1;
83-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20), 'UTF8') FROM test_bytea_append;
84-
id | convert_from
85-
----+--------------
86-
1 | aaaaaaaaaaa
87-
2 | aaaaaaaaaaa
88-
3 | aaaaaaaaaaa
89-
4 | aaaaaaaaaaa
90-
5 | aaaaaaaaaaa
91-
6 | aaaaaaaaaaa
92-
7 | aaaaaaaaaaa
93-
8 | aaaaaaaaaaa
94-
9 | aaaaaaaaaaa
95-
10 | aaaaaaaaaaa
96-
(10 rows)
97-
98-
UPDATE test_bytea_append SET a = a || repeat('e', 5000)::bytea;
99-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 14990, 20), 'UTF8') FROM test_bytea_append;
100-
id | convert_from
101-
----+---------------------------------
102-
1 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
103-
2 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
104-
3 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
105-
4 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
106-
5 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
107-
6 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
108-
7 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
109-
8 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
110-
9 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
111-
10 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
112-
(10 rows)
113-
114-
COMMIT;
115-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 14990, 20), 'UTF8') FROM test_bytea_append;
116-
id | convert_from
117-
----+---------------------------------
118-
1 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
119-
2 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
120-
3 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
121-
4 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
122-
5 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
123-
6 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
124-
7 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
125-
8 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
126-
9 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
127-
10 | aaaaaaaaaaaeeeeeeeeeeeeeeeeeeee
128-
(10 rows)
129-
130-
TRUNCATE test_bytea_append;
131-
INSERT INTO test_bytea_append SELECT i, repeat('a', 10000)::bytea FROM generate_series(1, 10) i;
132-
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
133-
UPDATE test_bytea_append SET a = a || repeat('b', 3000)::bytea;
134-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20), 'UTF8') FROM test_bytea_append;
135-
id | convert_from
136-
----+---------------------------------
137-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
138-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
139-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
140-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
141-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
142-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
143-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
144-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
145-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
146-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
147-
(10 rows)
148-
149-
UPDATE test_bytea_append SET a = a || repeat('c', 2000)::bytea;
150-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20) || substr(a, 14990, 20), 'UTF8') FROM test_bytea_append;
151-
id | convert_from
152-
----+-----------------------------------------------------
153-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
154-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
155-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
156-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
157-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
158-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
159-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
160-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
161-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
162-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
163-
(10 rows)
164-
165-
UPDATE test_bytea_append SET a = a || repeat('d', 4000)::bytea;
166-
SELECT id, convert_from(substr(a, 9990, 20) || substr(a, 12990, 20) || substr(a, 14990, 20) || substr(a, 18990, 20), 'UTF8') FROM test_bytea_append;
167-
id | convert_from
168-
----+-------------------------------------------------------------------------
169-
1 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
170-
2 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
171-
3 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
172-
4 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
173-
5 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
174-
6 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
175-
7 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
176-
8 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
177-
9 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
178-
10 | aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
179-
(10 rows)
180-
181-
CREATE FUNCTION test_bytea_append_func() RETURNS void AS
182-
$$
183-
DECLARE
184-
a0 bytea;
185-
a1 bytea;
186-
a2 bytea;
187-
a3 bytea;
188-
BEGIN
189-
TRUNCATE test_bytea_append;
190-
INSERT INTO test_bytea_append SELECT i, repeat('a', 10000)::bytea FROM generate_series(1, 10) i;
191-
SELECT a INTO a0 FROM test_bytea_append LIMIT 1;
192-
193-
UPDATE test_bytea_append SET a = a || repeat('b', 3000)::bytea;
194-
SELECT a INTO a1 FROM test_bytea_append LIMIT 1;
195-
196-
UPDATE test_bytea_append SET a = a || repeat('c', 2000)::bytea;
197-
SELECT a INTO a2 FROM test_bytea_append LIMIT 1;
198-
199-
UPDATE test_bytea_append SET a = a || repeat('d', 4000)::bytea;
200-
SELECT a INTO a3 FROM test_bytea_append LIMIT 1;
201-
202-
RAISE NOTICE '%', convert_from(substr(a0, 9990, 20), 'UTF8');
203-
RAISE NOTICE '%', convert_from(substr(a1, 9990, 20) || substr(a1, 12990, 20), 'UTF8');
204-
RAISE NOTICE '%', convert_from(substr(a2, 9990, 20) || substr(a2, 12990, 20) || substr(a2, 14990, 20), 'UTF8');
205-
RAISE NOTICE '%', convert_from(substr(a3, 9990, 20) || substr(a3, 12990, 20) || substr(a3, 14990, 20) || substr(a3, 18990, 20), 'UTF8');
206-
END;
207-
$$ LANGUAGE plpgsql;
208-
SELECT test_bytea_append_func();
209-
NOTICE: aaaaaaaaaaa
210-
NOTICE: aaaaaaaaaaabbbbbbbbbbbbbbbbbbbb
211-
NOTICE: aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc
212-
NOTICE: aaaaaaaaaaabbbbbbbbbbbbbbbbbbbbccccccccccccccccccccdddddddddddddddddddd
213-
test_bytea_append_func
214-
------------------------
215-
216-
(1 row)
217-
218-
COMMIT;
219-
DROP TABLE test_bytea_append;
11+
ALTER TABLE tst2 ALTER COLUMN t SET TOASTER jsonb_toaster;
12+
CREATE TABLE test_jsonb_toaster (id int, jb jsonb);
13+
ALTER TABLE test_jsonb_toaster ALTER jb SET TOASTER jsonb_toaster;
14+
INSERT INTO test_jsonb_toaster
15+
SELECT i, (
16+
SELECT jsonb_object_agg('key' || j, jsonb_build_array(repeat('a', pow(2, i + j)::int)))
17+
FROM generate_series(1,10) j
18+
)
19+
FROM generate_series(1, 10) i;
20+
DROP TABLE test_jsonb_toaster;

0 commit comments

Comments
 (0)