Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitd36f7ef

Browse files
committed
Add minimal regression test for blessed record type transfer.
Test that blessed records can be transferred through a TupleQueue andcorrectly decoded by another backend. While touching the file, makesure that force_parallel_mode settings only cover relevant tests.Author: Thomas Munro, editorialized by Andres FreundReviewed-By: Andres FreundDiscussion:https://postgr.es/m/20170823054644.efuzftxjpfi6wwqs%40alap3.anarazel.de
1 parentd7694fc commitd36f7ef

File tree

2 files changed

+66
-3
lines changed

2 files changed

+66
-3
lines changed

‎src/test/regress/expected/select_parallel.out

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,8 @@ select string4 from tenk1 order by string4 limit 5;
326326

327327
reset max_parallel_workers;
328328
reset enable_hashagg;
329-
set force_parallel_mode=1;
329+
SAVEPOINT settings;
330+
SET LOCAL force_parallel_mode = 1;
330331
explain (costs off)
331332
select stringu1::int2 from tenk1 where unique1 = 1;
332333
QUERY PLAN
@@ -338,7 +339,38 @@ explain (costs off)
338339
Index Cond: (unique1 = 1)
339340
(5 rows)
340341

342+
ROLLBACK TO SAVEPOINT settings;
343+
-- exercise record typmod remapping between backends
344+
CREATE OR REPLACE FUNCTION make_record(n int)
345+
RETURNS RECORD LANGUAGE plpgsql PARALLEL SAFE AS
346+
$$
347+
BEGIN
348+
RETURN CASE n
349+
WHEN 1 THEN ROW(1)
350+
WHEN 2 THEN ROW(1, 2)
351+
WHEN 3 THEN ROW(1, 2, 3)
352+
WHEN 4 THEN ROW(1, 2, 3, 4)
353+
ELSE ROW(1, 2, 3, 4, 5)
354+
END;
355+
END;
356+
$$;
357+
SAVEPOINT settings;
358+
SET LOCAL force_parallel_mode = 1;
359+
SELECT make_record(x) FROM (SELECT generate_series(1, 5) x) ss ORDER BY x;
360+
make_record
361+
-------------
362+
(1)
363+
(1,2)
364+
(1,2,3)
365+
(1,2,3,4)
366+
(1,2,3,4,5)
367+
(5 rows)
368+
369+
ROLLBACK TO SAVEPOINT settings;
370+
DROP function make_record(n int);
341371
-- to increase the parallel query test coverage
372+
SAVEPOINT settings;
373+
SET LOCAL force_parallel_mode = 1;
342374
EXPLAIN (analyze, timing off, summary off, costs off) SELECT * FROM tenk1;
343375
QUERY PLAN
344376
-------------------------------------------------------------
@@ -348,8 +380,12 @@ EXPLAIN (analyze, timing off, summary off, costs off) SELECT * FROM tenk1;
348380
-> Parallel Seq Scan on tenk1 (actual rows=2000 loops=5)
349381
(4 rows)
350382

383+
ROLLBACK TO SAVEPOINT settings;
351384
-- provoke error in worker
385+
SAVEPOINT settings;
386+
SET LOCAL force_parallel_mode = 1;
352387
select stringu1::int2 from tenk1 where unique1 = 1;
353388
ERROR: invalid input syntax for integer: "BAAAAA"
354389
CONTEXT: parallel worker
390+
ROLLBACK TO SAVEPOINT settings;
355391
rollback;

‎src/test/regress/sql/select_parallel.sql

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,15 +126,42 @@ select string4 from tenk1 order by string4 limit 5;
126126
reset max_parallel_workers;
127127
reset enable_hashagg;
128128

129-
set force_parallel_mode=1;
130-
129+
SAVEPOINT settings;
130+
SET LOCAL force_parallel_mode=1;
131131
explain (costs off)
132132
select stringu1::int2from tenk1where unique1=1;
133+
ROLLBACK TO SAVEPOINT settings;
134+
135+
-- exercise record typmod remapping between backends
136+
CREATE OR REPLACEFUNCTIONmake_record(nint)
137+
RETURNS RECORD LANGUAGE plpgsql PARALLEL SAFEAS
138+
$$
139+
BEGIN
140+
RETURN CASE n
141+
WHEN1 THEN ROW(1)
142+
WHEN2 THEN ROW(1,2)
143+
WHEN3 THEN ROW(1,2,3)
144+
WHEN4 THEN ROW(1,2,3,4)
145+
ELSE ROW(1,2,3,4,5)
146+
END;
147+
END;
148+
$$;
149+
SAVEPOINT settings;
150+
SET LOCAL force_parallel_mode=1;
151+
SELECT make_record(x)FROM (SELECT generate_series(1,5) x) ssORDER BY x;
152+
ROLLBACK TO SAVEPOINT settings;
153+
DROPfunction make_record(nint);
133154

134155
-- to increase the parallel query test coverage
156+
SAVEPOINT settings;
157+
SET LOCAL force_parallel_mode=1;
135158
EXPLAIN (analyze, timing off, summary off, costs off)SELECT*FROM tenk1;
159+
ROLLBACK TO SAVEPOINT settings;
136160

137161
-- provoke error in worker
162+
SAVEPOINT settings;
163+
SET LOCAL force_parallel_mode=1;
138164
select stringu1::int2from tenk1where unique1=1;
165+
ROLLBACK TO SAVEPOINT settings;
139166

140167
rollback;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp