Lines 137-567
Link Here
|
137 |
explain (costs off) |
137 |
explain (costs off) |
138 |
select (select max((select pa1.b from part_pa_test pa1 where pa1.a = pa2.a))) |
138 |
select (select max((select pa1.b from part_pa_test pa1 where pa1.a = pa2.a))) |
139 |
from part_pa_test pa2; |
139 |
from part_pa_test pa2; |
140 |
QUERY PLAN |
140 |
ERROR: could not load library "/var/tmp/portage/dev-db/postgresql-15.3/work/postgresql-15.3/tmp_install/usr/lib64/postgresql-15/lib64/llvmjit.so": /var/tmp/portage/dev-db/postgresql-15.3/work/postgresql-15.3/tmp_install/usr/lib64/postgresql-15/lib64/llvmjit.so: undefined symbol: LLVMBuildGEP |
141 |
-------------------------------------------------------------- |
|
|
142 |
Aggregate |
143 |
-> Gather |
144 |
Workers Planned: 3 |
145 |
-> Parallel Append |
146 |
-> Parallel Seq Scan on part_pa_test_p1 pa2_1 |
147 |
-> Parallel Seq Scan on part_pa_test_p2 pa2_2 |
148 |
SubPlan 2 |
149 |
-> Result |
150 |
SubPlan 1 |
151 |
-> Append |
152 |
-> Seq Scan on part_pa_test_p1 pa1_1 |
153 |
Filter: (a = pa2.a) |
154 |
-> Seq Scan on part_pa_test_p2 pa1_2 |
155 |
Filter: (a = pa2.a) |
156 |
(14 rows) |
157 |
|
158 |
drop table part_pa_test; |
141 |
drop table part_pa_test; |
|
|
142 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
159 |
-- test with leader participation disabled |
143 |
-- test with leader participation disabled |
160 |
set parallel_leader_participation = off; |
144 |
set parallel_leader_participation = off; |
|
|
145 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
161 |
explain (costs off) |
146 |
explain (costs off) |
162 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
147 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
163 |
QUERY PLAN |
148 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
164 |
--------------------------------------------------------- |
|
|
165 |
Finalize Aggregate |
166 |
-> Gather |
167 |
Workers Planned: 4 |
168 |
-> Partial Aggregate |
169 |
-> Parallel Seq Scan on tenk1 |
170 |
Filter: (stringu1 = 'GRAAAA'::name) |
171 |
(6 rows) |
172 |
|
173 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
149 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
174 |
count |
150 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
175 |
------- |
|
|
176 |
15 |
177 |
(1 row) |
178 |
|
179 |
-- test with leader participation disabled, but no workers available (so |
151 |
-- test with leader participation disabled, but no workers available (so |
180 |
-- the leader will have to run the plan despite the setting) |
152 |
-- the leader will have to run the plan despite the setting) |
181 |
set max_parallel_workers = 0; |
153 |
set max_parallel_workers = 0; |
|
|
154 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
182 |
explain (costs off) |
155 |
explain (costs off) |
183 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
156 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
184 |
QUERY PLAN |
157 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
185 |
--------------------------------------------------------- |
|
|
186 |
Finalize Aggregate |
187 |
-> Gather |
188 |
Workers Planned: 4 |
189 |
-> Partial Aggregate |
190 |
-> Parallel Seq Scan on tenk1 |
191 |
Filter: (stringu1 = 'GRAAAA'::name) |
192 |
(6 rows) |
193 |
|
194 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
158 |
select count(*) from tenk1 where stringu1 = 'GRAAAA'; |
195 |
count |
159 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
196 |
------- |
|
|
197 |
15 |
198 |
(1 row) |
199 |
|
200 |
reset max_parallel_workers; |
160 |
reset max_parallel_workers; |
|
|
161 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
201 |
reset parallel_leader_participation; |
162 |
reset parallel_leader_participation; |
|
|
163 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
202 |
-- test that parallel_restricted function doesn't run in worker |
164 |
-- test that parallel_restricted function doesn't run in worker |
203 |
alter table tenk1 set (parallel_workers = 4); |
165 |
alter table tenk1 set (parallel_workers = 4); |
|
|
166 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
204 |
explain (verbose, costs off) |
167 |
explain (verbose, costs off) |
205 |
select sp_parallel_restricted(unique1) from tenk1 |
168 |
select sp_parallel_restricted(unique1) from tenk1 |
206 |
where stringu1 = 'GRAAAA' order by 1; |
169 |
where stringu1 = 'GRAAAA' order by 1; |
207 |
QUERY PLAN |
170 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
208 |
--------------------------------------------------------- |
|
|
209 |
Sort |
210 |
Output: (sp_parallel_restricted(unique1)) |
211 |
Sort Key: (sp_parallel_restricted(tenk1.unique1)) |
212 |
-> Gather |
213 |
Output: sp_parallel_restricted(unique1) |
214 |
Workers Planned: 4 |
215 |
-> Parallel Seq Scan on public.tenk1 |
216 |
Output: unique1 |
217 |
Filter: (tenk1.stringu1 = 'GRAAAA'::name) |
218 |
(9 rows) |
219 |
|
220 |
-- test parallel plan when group by expression is in target list. |
171 |
-- test parallel plan when group by expression is in target list. |
221 |
explain (costs off) |
172 |
explain (costs off) |
222 |
select length(stringu1) from tenk1 group by length(stringu1); |
173 |
select length(stringu1) from tenk1 group by length(stringu1); |
223 |
QUERY PLAN |
174 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
224 |
--------------------------------------------------- |
|
|
225 |
Finalize HashAggregate |
226 |
Group Key: (length((stringu1)::text)) |
227 |
-> Gather |
228 |
Workers Planned: 4 |
229 |
-> Partial HashAggregate |
230 |
Group Key: length((stringu1)::text) |
231 |
-> Parallel Seq Scan on tenk1 |
232 |
(7 rows) |
233 |
|
234 |
select length(stringu1) from tenk1 group by length(stringu1); |
175 |
select length(stringu1) from tenk1 group by length(stringu1); |
235 |
length |
176 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
236 |
-------- |
|
|
237 |
6 |
238 |
(1 row) |
239 |
|
240 |
explain (costs off) |
177 |
explain (costs off) |
241 |
select stringu1, count(*) from tenk1 group by stringu1 order by stringu1; |
178 |
select stringu1, count(*) from tenk1 group by stringu1 order by stringu1; |
242 |
QUERY PLAN |
179 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
243 |
---------------------------------------------------- |
|
|
244 |
Sort |
245 |
Sort Key: stringu1 |
246 |
-> Finalize HashAggregate |
247 |
Group Key: stringu1 |
248 |
-> Gather |
249 |
Workers Planned: 4 |
250 |
-> Partial HashAggregate |
251 |
Group Key: stringu1 |
252 |
-> Parallel Seq Scan on tenk1 |
253 |
(9 rows) |
254 |
|
255 |
-- test that parallel plan for aggregates is not selected when |
180 |
-- test that parallel plan for aggregates is not selected when |
256 |
-- target list contains parallel restricted clause. |
181 |
-- target list contains parallel restricted clause. |
257 |
explain (costs off) |
182 |
explain (costs off) |
258 |
select sum(sp_parallel_restricted(unique1)) from tenk1 |
183 |
select sum(sp_parallel_restricted(unique1)) from tenk1 |
259 |
group by(sp_parallel_restricted(unique1)); |
184 |
group by(sp_parallel_restricted(unique1)); |
260 |
QUERY PLAN |
185 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
261 |
------------------------------------------------------------------- |
|
|
262 |
HashAggregate |
263 |
Group Key: sp_parallel_restricted(unique1) |
264 |
-> Gather |
265 |
Workers Planned: 4 |
266 |
-> Parallel Index Only Scan using tenk1_unique1 on tenk1 |
267 |
(5 rows) |
268 |
|
269 |
-- test prepared statement |
186 |
-- test prepared statement |
270 |
prepare tenk1_count(integer) As select count((unique1)) from tenk1 where hundred > $1; |
187 |
prepare tenk1_count(integer) As select count((unique1)) from tenk1 where hundred > $1; |
|
|
188 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
271 |
explain (costs off) execute tenk1_count(1); |
189 |
explain (costs off) execute tenk1_count(1); |
272 |
QUERY PLAN |
190 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
273 |
---------------------------------------------- |
|
|
274 |
Finalize Aggregate |
275 |
-> Gather |
276 |
Workers Planned: 4 |
277 |
-> Partial Aggregate |
278 |
-> Parallel Seq Scan on tenk1 |
279 |
Filter: (hundred > 1) |
280 |
(6 rows) |
281 |
|
282 |
execute tenk1_count(1); |
191 |
execute tenk1_count(1); |
283 |
count |
192 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
284 |
------- |
|
|
285 |
9800 |
286 |
(1 row) |
287 |
|
288 |
deallocate tenk1_count; |
193 |
deallocate tenk1_count; |
|
|
194 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
289 |
-- test parallel plans for queries containing un-correlated subplans. |
195 |
-- test parallel plans for queries containing un-correlated subplans. |
290 |
alter table tenk2 set (parallel_workers = 0); |
196 |
alter table tenk2 set (parallel_workers = 0); |
|
|
197 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
291 |
explain (costs off) |
198 |
explain (costs off) |
292 |
select count(*) from tenk1 where (two, four) not in |
199 |
select count(*) from tenk1 where (two, four) not in |
293 |
(select hundred, thousand from tenk2 where thousand > 100); |
200 |
(select hundred, thousand from tenk2 where thousand > 100); |
294 |
QUERY PLAN |
201 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
295 |
------------------------------------------------------ |
|
|
296 |
Finalize Aggregate |
297 |
-> Gather |
298 |
Workers Planned: 4 |
299 |
-> Partial Aggregate |
300 |
-> Parallel Seq Scan on tenk1 |
301 |
Filter: (NOT (hashed SubPlan 1)) |
302 |
SubPlan 1 |
303 |
-> Seq Scan on tenk2 |
304 |
Filter: (thousand > 100) |
305 |
(9 rows) |
306 |
|
307 |
select count(*) from tenk1 where (two, four) not in |
202 |
select count(*) from tenk1 where (two, four) not in |
308 |
(select hundred, thousand from tenk2 where thousand > 100); |
203 |
(select hundred, thousand from tenk2 where thousand > 100); |
309 |
count |
204 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
310 |
------- |
|
|
311 |
10000 |
312 |
(1 row) |
313 |
|
314 |
-- this is not parallel-safe due to use of random() within SubLink's testexpr: |
205 |
-- this is not parallel-safe due to use of random() within SubLink's testexpr: |
315 |
explain (costs off) |
206 |
explain (costs off) |
316 |
select * from tenk1 where (unique1 + random())::integer not in |
207 |
select * from tenk1 where (unique1 + random())::integer not in |
317 |
(select ten from tenk2); |
208 |
(select ten from tenk2); |
318 |
QUERY PLAN |
209 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
319 |
------------------------------------ |
|
|
320 |
Seq Scan on tenk1 |
321 |
Filter: (NOT (hashed SubPlan 1)) |
322 |
SubPlan 1 |
323 |
-> Seq Scan on tenk2 |
324 |
(4 rows) |
325 |
|
326 |
alter table tenk2 reset (parallel_workers); |
210 |
alter table tenk2 reset (parallel_workers); |
|
|
211 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
327 |
-- test parallel plan for a query containing initplan. |
212 |
-- test parallel plan for a query containing initplan. |
328 |
set enable_indexscan = off; |
213 |
set enable_indexscan = off; |
|
|
214 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
329 |
set enable_indexonlyscan = off; |
215 |
set enable_indexonlyscan = off; |
|
|
216 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
330 |
set enable_bitmapscan = off; |
217 |
set enable_bitmapscan = off; |
|
|
218 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
331 |
alter table tenk2 set (parallel_workers = 2); |
219 |
alter table tenk2 set (parallel_workers = 2); |
|
|
220 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
332 |
explain (costs off) |
221 |
explain (costs off) |
333 |
select count(*) from tenk1 |
222 |
select count(*) from tenk1 |
334 |
where tenk1.unique1 = (Select max(tenk2.unique1) from tenk2); |
223 |
where tenk1.unique1 = (Select max(tenk2.unique1) from tenk2); |
335 |
QUERY PLAN |
224 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
336 |
------------------------------------------------------ |
|
|
337 |
Aggregate |
338 |
InitPlan 1 (returns $2) |
339 |
-> Finalize Aggregate |
340 |
-> Gather |
341 |
Workers Planned: 2 |
342 |
-> Partial Aggregate |
343 |
-> Parallel Seq Scan on tenk2 |
344 |
-> Gather |
345 |
Workers Planned: 4 |
346 |
Params Evaluated: $2 |
347 |
-> Parallel Seq Scan on tenk1 |
348 |
Filter: (unique1 = $2) |
349 |
(12 rows) |
350 |
|
351 |
select count(*) from tenk1 |
225 |
select count(*) from tenk1 |
352 |
where tenk1.unique1 = (Select max(tenk2.unique1) from tenk2); |
226 |
where tenk1.unique1 = (Select max(tenk2.unique1) from tenk2); |
353 |
count |
227 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
354 |
------- |
|
|
355 |
1 |
356 |
(1 row) |
357 |
|
358 |
reset enable_indexscan; |
228 |
reset enable_indexscan; |
|
|
229 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
359 |
reset enable_indexonlyscan; |
230 |
reset enable_indexonlyscan; |
|
|
231 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
360 |
reset enable_bitmapscan; |
232 |
reset enable_bitmapscan; |
|
|
233 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
361 |
alter table tenk2 reset (parallel_workers); |
234 |
alter table tenk2 reset (parallel_workers); |
|
|
235 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
362 |
-- test parallel index scans. |
236 |
-- test parallel index scans. |
363 |
set enable_seqscan to off; |
237 |
set enable_seqscan to off; |
|
|
238 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
364 |
set enable_bitmapscan to off; |
239 |
set enable_bitmapscan to off; |
|
|
240 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
365 |
explain (costs off) |
241 |
explain (costs off) |
366 |
select count((unique1)) from tenk1 where hundred > 1; |
242 |
select count((unique1)) from tenk1 where hundred > 1; |
367 |
QUERY PLAN |
243 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
368 |
-------------------------------------------------------------------- |
|
|
369 |
Finalize Aggregate |
370 |
-> Gather |
371 |
Workers Planned: 4 |
372 |
-> Partial Aggregate |
373 |
-> Parallel Index Scan using tenk1_hundred on tenk1 |
374 |
Index Cond: (hundred > 1) |
375 |
(6 rows) |
376 |
|
377 |
select count((unique1)) from tenk1 where hundred > 1; |
244 |
select count((unique1)) from tenk1 where hundred > 1; |
378 |
count |
245 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
379 |
------- |
|
|
380 |
9800 |
381 |
(1 row) |
382 |
|
383 |
-- test parallel index-only scans. |
246 |
-- test parallel index-only scans. |
384 |
explain (costs off) |
247 |
explain (costs off) |
385 |
select count(*) from tenk1 where thousand > 95; |
248 |
select count(*) from tenk1 where thousand > 95; |
386 |
QUERY PLAN |
249 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
387 |
-------------------------------------------------------------------------------- |
|
|
388 |
Finalize Aggregate |
389 |
-> Gather |
390 |
Workers Planned: 4 |
391 |
-> Partial Aggregate |
392 |
-> Parallel Index Only Scan using tenk1_thous_tenthous on tenk1 |
393 |
Index Cond: (thousand > 95) |
394 |
(6 rows) |
395 |
|
396 |
select count(*) from tenk1 where thousand > 95; |
250 |
select count(*) from tenk1 where thousand > 95; |
397 |
count |
251 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
398 |
------- |
|
|
399 |
9040 |
400 |
(1 row) |
401 |
|
402 |
-- test rescan cases too |
252 |
-- test rescan cases too |
403 |
set enable_material = false; |
253 |
set enable_material = false; |
|
|
254 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
404 |
explain (costs off) |
255 |
explain (costs off) |
405 |
select * from |
256 |
select * from |
406 |
(select count(unique1) from tenk1 where hundred > 10) ss |
257 |
(select count(unique1) from tenk1 where hundred > 10) ss |
407 |
right join (values (1),(2),(3)) v(x) on true; |
258 |
right join (values (1),(2),(3)) v(x) on true; |
408 |
QUERY PLAN |
259 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
409 |
-------------------------------------------------------------------------- |
|
|
410 |
Nested Loop Left Join |
411 |
-> Values Scan on "*VALUES*" |
412 |
-> Finalize Aggregate |
413 |
-> Gather |
414 |
Workers Planned: 4 |
415 |
-> Partial Aggregate |
416 |
-> Parallel Index Scan using tenk1_hundred on tenk1 |
417 |
Index Cond: (hundred > 10) |
418 |
(8 rows) |
419 |
|
420 |
select * from |
260 |
select * from |
421 |
(select count(unique1) from tenk1 where hundred > 10) ss |
261 |
(select count(unique1) from tenk1 where hundred > 10) ss |
422 |
right join (values (1),(2),(3)) v(x) on true; |
262 |
right join (values (1),(2),(3)) v(x) on true; |
423 |
count | x |
263 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
424 |
-------+--- |
|
|
425 |
8900 | 1 |
426 |
8900 | 2 |
427 |
8900 | 3 |
428 |
(3 rows) |
429 |
|
430 |
explain (costs off) |
264 |
explain (costs off) |
431 |
select * from |
265 |
select * from |
432 |
(select count(*) from tenk1 where thousand > 99) ss |
266 |
(select count(*) from tenk1 where thousand > 99) ss |
433 |
right join (values (1),(2),(3)) v(x) on true; |
267 |
right join (values (1),(2),(3)) v(x) on true; |
434 |
QUERY PLAN |
268 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
435 |
-------------------------------------------------------------------------------------- |
|
|
436 |
Nested Loop Left Join |
437 |
-> Values Scan on "*VALUES*" |
438 |
-> Finalize Aggregate |
439 |
-> Gather |
440 |
Workers Planned: 4 |
441 |
-> Partial Aggregate |
442 |
-> Parallel Index Only Scan using tenk1_thous_tenthous on tenk1 |
443 |
Index Cond: (thousand > 99) |
444 |
(8 rows) |
445 |
|
446 |
select * from |
269 |
select * from |
447 |
(select count(*) from tenk1 where thousand > 99) ss |
270 |
(select count(*) from tenk1 where thousand > 99) ss |
448 |
right join (values (1),(2),(3)) v(x) on true; |
271 |
right join (values (1),(2),(3)) v(x) on true; |
449 |
count | x |
272 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
450 |
-------+--- |
|
|
451 |
9000 | 1 |
452 |
9000 | 2 |
453 |
9000 | 3 |
454 |
(3 rows) |
455 |
|
456 |
-- test rescans for a Limit node with a parallel node beneath it. |
273 |
-- test rescans for a Limit node with a parallel node beneath it. |
457 |
reset enable_seqscan; |
274 |
reset enable_seqscan; |
|
|
275 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
458 |
set enable_indexonlyscan to off; |
276 |
set enable_indexonlyscan to off; |
|
|
277 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
459 |
set enable_indexscan to off; |
278 |
set enable_indexscan to off; |
|
|
279 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
460 |
alter table tenk1 set (parallel_workers = 0); |
280 |
alter table tenk1 set (parallel_workers = 0); |
|
|
281 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
461 |
alter table tenk2 set (parallel_workers = 1); |
282 |
alter table tenk2 set (parallel_workers = 1); |
|
|
283 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
462 |
explain (costs off) |
284 |
explain (costs off) |
463 |
select count(*) from tenk1 |
285 |
select count(*) from tenk1 |
464 |
left join (select tenk2.unique1 from tenk2 order by 1 limit 1000) ss |
286 |
left join (select tenk2.unique1 from tenk2 order by 1 limit 1000) ss |
465 |
on tenk1.unique1 < ss.unique1 + 1 |
287 |
on tenk1.unique1 < ss.unique1 + 1 |
466 |
where tenk1.unique1 < 2; |
288 |
where tenk1.unique1 < 2; |
467 |
QUERY PLAN |
289 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
468 |
------------------------------------------------------------ |
|
|
469 |
Aggregate |
470 |
-> Nested Loop Left Join |
471 |
Join Filter: (tenk1.unique1 < (tenk2.unique1 + 1)) |
472 |
-> Seq Scan on tenk1 |
473 |
Filter: (unique1 < 2) |
474 |
-> Limit |
475 |
-> Gather Merge |
476 |
Workers Planned: 1 |
477 |
-> Sort |
478 |
Sort Key: tenk2.unique1 |
479 |
-> Parallel Seq Scan on tenk2 |
480 |
(11 rows) |
481 |
|
482 |
select count(*) from tenk1 |
290 |
select count(*) from tenk1 |
483 |
left join (select tenk2.unique1 from tenk2 order by 1 limit 1000) ss |
291 |
left join (select tenk2.unique1 from tenk2 order by 1 limit 1000) ss |
484 |
on tenk1.unique1 < ss.unique1 + 1 |
292 |
on tenk1.unique1 < ss.unique1 + 1 |
485 |
where tenk1.unique1 < 2; |
293 |
where tenk1.unique1 < 2; |
486 |
count |
294 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
487 |
------- |
|
|
488 |
1999 |
489 |
(1 row) |
490 |
|
491 |
--reset the value of workers for each table as it was before this test. |
295 |
--reset the value of workers for each table as it was before this test. |
492 |
alter table tenk1 set (parallel_workers = 4); |
296 |
alter table tenk1 set (parallel_workers = 4); |
|
|
297 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
493 |
alter table tenk2 reset (parallel_workers); |
298 |
alter table tenk2 reset (parallel_workers); |
|
|
299 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
494 |
reset enable_material; |
300 |
reset enable_material; |
|
|
301 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
495 |
reset enable_bitmapscan; |
302 |
reset enable_bitmapscan; |
|
|
303 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
496 |
reset enable_indexonlyscan; |
304 |
reset enable_indexonlyscan; |
|
|
305 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
497 |
reset enable_indexscan; |
306 |
reset enable_indexscan; |
|
|
307 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
498 |
-- test parallel bitmap heap scan. |
308 |
-- test parallel bitmap heap scan. |
499 |
set enable_seqscan to off; |
309 |
set enable_seqscan to off; |
|
|
310 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
500 |
set enable_indexscan to off; |
311 |
set enable_indexscan to off; |
|
|
312 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
501 |
set enable_hashjoin to off; |
313 |
set enable_hashjoin to off; |
|
|
314 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
502 |
set enable_mergejoin to off; |
315 |
set enable_mergejoin to off; |
|
|
316 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
503 |
set enable_material to off; |
317 |
set enable_material to off; |
|
|
318 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
504 |
-- test prefetching, if the platform allows it |
319 |
-- test prefetching, if the platform allows it |
505 |
DO $$ |
320 |
DO $$ |
506 |
BEGIN |
321 |
BEGIN |
507 |
SET effective_io_concurrency = 50; |
322 |
SET effective_io_concurrency = 50; |
508 |
EXCEPTION WHEN invalid_parameter_value THEN |
323 |
EXCEPTION WHEN invalid_parameter_value THEN |
509 |
END $$; |
324 |
END $$; |
|
|
325 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
510 |
set work_mem='64kB'; --set small work mem to force lossy pages |
326 |
set work_mem='64kB'; --set small work mem to force lossy pages |
|
|
327 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
511 |
explain (costs off) |
328 |
explain (costs off) |
512 |
select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; |
329 |
select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; |
513 |
QUERY PLAN |
330 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
514 |
------------------------------------------------------------ |
|
|
515 |
Aggregate |
516 |
-> Nested Loop |
517 |
-> Seq Scan on tenk2 |
518 |
Filter: (thousand = 0) |
519 |
-> Gather |
520 |
Workers Planned: 4 |
521 |
-> Parallel Bitmap Heap Scan on tenk1 |
522 |
Recheck Cond: (hundred > 1) |
523 |
-> Bitmap Index Scan on tenk1_hundred |
524 |
Index Cond: (hundred > 1) |
525 |
(10 rows) |
526 |
|
527 |
select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; |
331 |
select count(*) from tenk1, tenk2 where tenk1.hundred > 1 and tenk2.thousand=0; |
528 |
count |
332 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
529 |
------- |
|
|
530 |
98000 |
531 |
(1 row) |
532 |
|
533 |
create table bmscantest (a int, t text); |
333 |
create table bmscantest (a int, t text); |
|
|
334 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
534 |
insert into bmscantest select r, 'fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' FROM generate_series(1,100000) r; |
335 |
insert into bmscantest select r, 'fooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo' FROM generate_series(1,100000) r; |
|
|
336 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
535 |
create index i_bmtest ON bmscantest(a); |
337 |
create index i_bmtest ON bmscantest(a); |
|
|
338 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
536 |
select count(*) from bmscantest where a>1; |
339 |
select count(*) from bmscantest where a>1; |
537 |
count |
340 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
538 |
------- |
|
|
539 |
99999 |
540 |
(1 row) |
541 |
|
542 |
-- test accumulation of stats for parallel nodes |
341 |
-- test accumulation of stats for parallel nodes |
543 |
reset enable_seqscan; |
342 |
reset enable_seqscan; |
|
|
343 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
544 |
alter table tenk2 set (parallel_workers = 0); |
344 |
alter table tenk2 set (parallel_workers = 0); |
|
|
345 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
545 |
explain (analyze, timing off, summary off, costs off) |
346 |
explain (analyze, timing off, summary off, costs off) |
546 |
select count(*) from tenk1, tenk2 where tenk1.hundred > 1 |
347 |
select count(*) from tenk1, tenk2 where tenk1.hundred > 1 |
547 |
and tenk2.thousand=0; |
348 |
and tenk2.thousand=0; |
548 |
QUERY PLAN |
349 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
549 |
-------------------------------------------------------------------------- |
|
|
550 |
Aggregate (actual rows=1 loops=1) |
551 |
-> Nested Loop (actual rows=98000 loops=1) |
552 |
-> Seq Scan on tenk2 (actual rows=10 loops=1) |
553 |
Filter: (thousand = 0) |
554 |
Rows Removed by Filter: 9990 |
555 |
-> Gather (actual rows=9800 loops=10) |
556 |
Workers Planned: 4 |
557 |
Workers Launched: 4 |
558 |
-> Parallel Seq Scan on tenk1 (actual rows=1960 loops=50) |
559 |
Filter: (hundred > 1) |
560 |
Rows Removed by Filter: 40 |
561 |
(11 rows) |
562 |
|
563 |
alter table tenk2 reset (parallel_workers); |
350 |
alter table tenk2 reset (parallel_workers); |
|
|
351 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
564 |
reset work_mem; |
352 |
reset work_mem; |
|
|
353 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
565 |
create function explain_parallel_sort_stats() returns setof text |
354 |
create function explain_parallel_sort_stats() returns setof text |
566 |
language plpgsql as |
355 |
language plpgsql as |
567 |
$$ |
356 |
$$ |
Lines 578-676
Link Here
|
578 |
end loop; |
367 |
end loop; |
579 |
end; |
368 |
end; |
580 |
$$; |
369 |
$$; |
|
|
370 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
581 |
select * from explain_parallel_sort_stats(); |
371 |
select * from explain_parallel_sort_stats(); |
582 |
explain_parallel_sort_stats |
372 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
583 |
-------------------------------------------------------------------------- |
|
|
584 |
Nested Loop Left Join (actual rows=30000 loops=1) |
585 |
-> Values Scan on "*VALUES*" (actual rows=3 loops=1) |
586 |
-> Gather Merge (actual rows=10000 loops=3) |
587 |
Workers Planned: 4 |
588 |
Workers Launched: 4 |
589 |
-> Sort (actual rows=2000 loops=15) |
590 |
Sort Key: tenk1.ten |
591 |
Sort Method: quicksort Memory: xxx |
592 |
Worker 0: Sort Method: quicksort Memory: xxx |
593 |
Worker 1: Sort Method: quicksort Memory: xxx |
594 |
Worker 2: Sort Method: quicksort Memory: xxx |
595 |
Worker 3: Sort Method: quicksort Memory: xxx |
596 |
-> Parallel Seq Scan on tenk1 (actual rows=2000 loops=15) |
597 |
Filter: (ten < 100) |
598 |
(14 rows) |
599 |
|
600 |
reset enable_indexscan; |
373 |
reset enable_indexscan; |
|
|
374 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
601 |
reset enable_hashjoin; |
375 |
reset enable_hashjoin; |
|
|
376 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
602 |
reset enable_mergejoin; |
377 |
reset enable_mergejoin; |
|
|
378 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
603 |
reset enable_material; |
379 |
reset enable_material; |
|
|
380 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
604 |
reset effective_io_concurrency; |
381 |
reset effective_io_concurrency; |
|
|
382 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
605 |
drop table bmscantest; |
383 |
drop table bmscantest; |
|
|
384 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
606 |
drop function explain_parallel_sort_stats(); |
385 |
drop function explain_parallel_sort_stats(); |
|
|
386 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
607 |
-- test parallel merge join path. |
387 |
-- test parallel merge join path. |
608 |
set enable_hashjoin to off; |
388 |
set enable_hashjoin to off; |
|
|
389 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
609 |
set enable_nestloop to off; |
390 |
set enable_nestloop to off; |
|
|
391 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
610 |
explain (costs off) |
392 |
explain (costs off) |
611 |
select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; |
393 |
select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; |
612 |
QUERY PLAN |
394 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
613 |
------------------------------------------------------------------------------- |
|
|
614 |
Finalize Aggregate |
615 |
-> Gather |
616 |
Workers Planned: 4 |
617 |
-> Partial Aggregate |
618 |
-> Merge Join |
619 |
Merge Cond: (tenk1.unique1 = tenk2.unique1) |
620 |
-> Parallel Index Only Scan using tenk1_unique1 on tenk1 |
621 |
-> Index Only Scan using tenk2_unique1 on tenk2 |
622 |
(8 rows) |
623 |
|
624 |
select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; |
395 |
select count(*) from tenk1, tenk2 where tenk1.unique1 = tenk2.unique1; |
625 |
count |
396 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
626 |
------- |
|
|
627 |
10000 |
628 |
(1 row) |
629 |
|
630 |
reset enable_hashjoin; |
397 |
reset enable_hashjoin; |
|
|
398 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
631 |
reset enable_nestloop; |
399 |
reset enable_nestloop; |
|
|
400 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
632 |
-- test gather merge |
401 |
-- test gather merge |
633 |
set enable_hashagg = false; |
402 |
set enable_hashagg = false; |
|
|
403 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
634 |
explain (costs off) |
404 |
explain (costs off) |
635 |
select count(*) from tenk1 group by twenty; |
405 |
select count(*) from tenk1 group by twenty; |
636 |
QUERY PLAN |
406 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
637 |
---------------------------------------------------- |
|
|
638 |
Finalize GroupAggregate |
639 |
Group Key: twenty |
640 |
-> Gather Merge |
641 |
Workers Planned: 4 |
642 |
-> Partial GroupAggregate |
643 |
Group Key: twenty |
644 |
-> Sort |
645 |
Sort Key: twenty |
646 |
-> Parallel Seq Scan on tenk1 |
647 |
(9 rows) |
648 |
|
649 |
select count(*) from tenk1 group by twenty; |
407 |
select count(*) from tenk1 group by twenty; |
650 |
count |
408 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
651 |
------- |
|
|
652 |
500 |
653 |
500 |
654 |
500 |
655 |
500 |
656 |
500 |
657 |
500 |
658 |
500 |
659 |
500 |
660 |
500 |
661 |
500 |
662 |
500 |
663 |
500 |
664 |
500 |
665 |
500 |
666 |
500 |
667 |
500 |
668 |
500 |
669 |
500 |
670 |
500 |
671 |
500 |
672 |
(20 rows) |
673 |
|
674 |
--test expressions in targetlist are pushed down for gather merge |
409 |
--test expressions in targetlist are pushed down for gather merge |
675 |
create function sp_simple_func(var1 integer) returns integer |
410 |
create function sp_simple_func(var1 integer) returns integer |
676 |
as $$ |
411 |
as $$ |
Lines 678-956
Link Here
|
678 |
return var1 + 10; |
413 |
return var1 + 10; |
679 |
end; |
414 |
end; |
680 |
$$ language plpgsql PARALLEL SAFE; |
415 |
$$ language plpgsql PARALLEL SAFE; |
|
|
416 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
681 |
explain (costs off, verbose) |
417 |
explain (costs off, verbose) |
682 |
select ten, sp_simple_func(ten) from tenk1 where ten < 100 order by ten; |
418 |
select ten, sp_simple_func(ten) from tenk1 where ten < 100 order by ten; |
683 |
QUERY PLAN |
419 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
684 |
----------------------------------------------------- |
|
|
685 |
Gather Merge |
686 |
Output: ten, (sp_simple_func(ten)) |
687 |
Workers Planned: 4 |
688 |
-> Result |
689 |
Output: ten, sp_simple_func(ten) |
690 |
-> Sort |
691 |
Output: ten |
692 |
Sort Key: tenk1.ten |
693 |
-> Parallel Seq Scan on public.tenk1 |
694 |
Output: ten |
695 |
Filter: (tenk1.ten < 100) |
696 |
(11 rows) |
697 |
|
698 |
drop function sp_simple_func(integer); |
420 |
drop function sp_simple_func(integer); |
|
|
421 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
699 |
-- test handling of SRFs in targetlist (bug in 10.0) |
422 |
-- test handling of SRFs in targetlist (bug in 10.0) |
700 |
explain (costs off) |
423 |
explain (costs off) |
701 |
select count(*), generate_series(1,2) from tenk1 group by twenty; |
424 |
select count(*), generate_series(1,2) from tenk1 group by twenty; |
702 |
QUERY PLAN |
425 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
703 |
---------------------------------------------------------- |
|
|
704 |
ProjectSet |
705 |
-> Finalize GroupAggregate |
706 |
Group Key: twenty |
707 |
-> Gather Merge |
708 |
Workers Planned: 4 |
709 |
-> Partial GroupAggregate |
710 |
Group Key: twenty |
711 |
-> Sort |
712 |
Sort Key: twenty |
713 |
-> Parallel Seq Scan on tenk1 |
714 |
(10 rows) |
715 |
|
716 |
select count(*), generate_series(1,2) from tenk1 group by twenty; |
426 |
select count(*), generate_series(1,2) from tenk1 group by twenty; |
717 |
count | generate_series |
427 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
718 |
-------+----------------- |
|
|
719 |
500 | 1 |
720 |
500 | 2 |
721 |
500 | 1 |
722 |
500 | 2 |
723 |
500 | 1 |
724 |
500 | 2 |
725 |
500 | 1 |
726 |
500 | 2 |
727 |
500 | 1 |
728 |
500 | 2 |
729 |
500 | 1 |
730 |
500 | 2 |
731 |
500 | 1 |
732 |
500 | 2 |
733 |
500 | 1 |
734 |
500 | 2 |
735 |
500 | 1 |
736 |
500 | 2 |
737 |
500 | 1 |
738 |
500 | 2 |
739 |
500 | 1 |
740 |
500 | 2 |
741 |
500 | 1 |
742 |
500 | 2 |
743 |
500 | 1 |
744 |
500 | 2 |
745 |
500 | 1 |
746 |
500 | 2 |
747 |
500 | 1 |
748 |
500 | 2 |
749 |
500 | 1 |
750 |
500 | 2 |
751 |
500 | 1 |
752 |
500 | 2 |
753 |
500 | 1 |
754 |
500 | 2 |
755 |
500 | 1 |
756 |
500 | 2 |
757 |
500 | 1 |
758 |
500 | 2 |
759 |
(40 rows) |
760 |
|
761 |
-- test gather merge with parallel leader participation disabled |
428 |
-- test gather merge with parallel leader participation disabled |
762 |
set parallel_leader_participation = off; |
429 |
set parallel_leader_participation = off; |
|
|
430 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
763 |
explain (costs off) |
431 |
explain (costs off) |
764 |
select count(*) from tenk1 group by twenty; |
432 |
select count(*) from tenk1 group by twenty; |
765 |
QUERY PLAN |
433 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
766 |
---------------------------------------------------- |
|
|
767 |
Finalize GroupAggregate |
768 |
Group Key: twenty |
769 |
-> Gather Merge |
770 |
Workers Planned: 4 |
771 |
-> Partial GroupAggregate |
772 |
Group Key: twenty |
773 |
-> Sort |
774 |
Sort Key: twenty |
775 |
-> Parallel Seq Scan on tenk1 |
776 |
(9 rows) |
777 |
|
778 |
select count(*) from tenk1 group by twenty; |
434 |
select count(*) from tenk1 group by twenty; |
779 |
count |
435 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
780 |
------- |
|
|
781 |
500 |
782 |
500 |
783 |
500 |
784 |
500 |
785 |
500 |
786 |
500 |
787 |
500 |
788 |
500 |
789 |
500 |
790 |
500 |
791 |
500 |
792 |
500 |
793 |
500 |
794 |
500 |
795 |
500 |
796 |
500 |
797 |
500 |
798 |
500 |
799 |
500 |
800 |
500 |
801 |
(20 rows) |
802 |
|
803 |
reset parallel_leader_participation; |
436 |
reset parallel_leader_participation; |
|
|
437 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
804 |
--test rescan behavior of gather merge |
438 |
--test rescan behavior of gather merge |
805 |
set enable_material = false; |
439 |
set enable_material = false; |
|
|
440 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
806 |
explain (costs off) |
441 |
explain (costs off) |
807 |
select * from |
442 |
select * from |
808 |
(select string4, count(unique2) |
443 |
(select string4, count(unique2) |
809 |
from tenk1 group by string4 order by string4) ss |
444 |
from tenk1 group by string4 order by string4) ss |
810 |
right join (values (1),(2),(3)) v(x) on true; |
445 |
right join (values (1),(2),(3)) v(x) on true; |
811 |
QUERY PLAN |
446 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
812 |
---------------------------------------------------------- |
|
|
813 |
Nested Loop Left Join |
814 |
-> Values Scan on "*VALUES*" |
815 |
-> Finalize GroupAggregate |
816 |
Group Key: tenk1.string4 |
817 |
-> Gather Merge |
818 |
Workers Planned: 4 |
819 |
-> Partial GroupAggregate |
820 |
Group Key: tenk1.string4 |
821 |
-> Sort |
822 |
Sort Key: tenk1.string4 |
823 |
-> Parallel Seq Scan on tenk1 |
824 |
(11 rows) |
825 |
|
826 |
select * from |
447 |
select * from |
827 |
(select string4, count(unique2) |
448 |
(select string4, count(unique2) |
828 |
from tenk1 group by string4 order by string4) ss |
449 |
from tenk1 group by string4 order by string4) ss |
829 |
right join (values (1),(2),(3)) v(x) on true; |
450 |
right join (values (1),(2),(3)) v(x) on true; |
830 |
string4 | count | x |
451 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
831 |
---------+-------+--- |
|
|
832 |
AAAAxx | 2500 | 1 |
833 |
HHHHxx | 2500 | 1 |
834 |
OOOOxx | 2500 | 1 |
835 |
VVVVxx | 2500 | 1 |
836 |
AAAAxx | 2500 | 2 |
837 |
HHHHxx | 2500 | 2 |
838 |
OOOOxx | 2500 | 2 |
839 |
VVVVxx | 2500 | 2 |
840 |
AAAAxx | 2500 | 3 |
841 |
HHHHxx | 2500 | 3 |
842 |
OOOOxx | 2500 | 3 |
843 |
VVVVxx | 2500 | 3 |
844 |
(12 rows) |
845 |
|
846 |
reset enable_material; |
452 |
reset enable_material; |
|
|
453 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
847 |
reset enable_hashagg; |
454 |
reset enable_hashagg; |
|
|
455 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
848 |
-- check parallelized int8 aggregate (bug #14897) |
456 |
-- check parallelized int8 aggregate (bug #14897) |
849 |
explain (costs off) |
457 |
explain (costs off) |
850 |
select avg(unique1::int8) from tenk1; |
458 |
select avg(unique1::int8) from tenk1; |
851 |
QUERY PLAN |
459 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
852 |
------------------------------------------------------------------------- |
|
|
853 |
Finalize Aggregate |
854 |
-> Gather |
855 |
Workers Planned: 4 |
856 |
-> Partial Aggregate |
857 |
-> Parallel Index Only Scan using tenk1_unique1 on tenk1 |
858 |
(5 rows) |
859 |
|
860 |
select avg(unique1::int8) from tenk1; |
460 |
select avg(unique1::int8) from tenk1; |
861 |
avg |
461 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
862 |
----------------------- |
|
|
863 |
4999.5000000000000000 |
864 |
(1 row) |
865 |
|
866 |
-- gather merge test with a LIMIT |
462 |
-- gather merge test with a LIMIT |
867 |
explain (costs off) |
463 |
explain (costs off) |
868 |
select fivethous from tenk1 order by fivethous limit 4; |
464 |
select fivethous from tenk1 order by fivethous limit 4; |
869 |
QUERY PLAN |
465 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
870 |
---------------------------------------------- |
|
|
871 |
Limit |
872 |
-> Gather Merge |
873 |
Workers Planned: 4 |
874 |
-> Sort |
875 |
Sort Key: fivethous |
876 |
-> Parallel Seq Scan on tenk1 |
877 |
(6 rows) |
878 |
|
879 |
select fivethous from tenk1 order by fivethous limit 4; |
466 |
select fivethous from tenk1 order by fivethous limit 4; |
880 |
fivethous |
467 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
881 |
----------- |
|
|
882 |
0 |
883 |
0 |
884 |
1 |
885 |
1 |
886 |
(4 rows) |
887 |
|
888 |
-- gather merge test with 0 worker |
468 |
-- gather merge test with 0 worker |
889 |
set max_parallel_workers = 0; |
469 |
set max_parallel_workers = 0; |
|
|
470 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
890 |
explain (costs off) |
471 |
explain (costs off) |
891 |
select string4 from tenk1 order by string4 limit 5; |
472 |
select string4 from tenk1 order by string4 limit 5; |
892 |
QUERY PLAN |
473 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
893 |
---------------------------------------------- |
|
|
894 |
Limit |
895 |
-> Gather Merge |
896 |
Workers Planned: 4 |
897 |
-> Sort |
898 |
Sort Key: string4 |
899 |
-> Parallel Seq Scan on tenk1 |
900 |
(6 rows) |
901 |
|
902 |
select string4 from tenk1 order by string4 limit 5; |
474 |
select string4 from tenk1 order by string4 limit 5; |
903 |
string4 |
475 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
904 |
--------- |
|
|
905 |
AAAAxx |
906 |
AAAAxx |
907 |
AAAAxx |
908 |
AAAAxx |
909 |
AAAAxx |
910 |
(5 rows) |
911 |
|
912 |
-- gather merge test with 0 workers, with parallel leader |
476 |
-- gather merge test with 0 workers, with parallel leader |
913 |
-- participation disabled (the leader will have to run the plan |
477 |
-- participation disabled (the leader will have to run the plan |
914 |
-- despite the setting) |
478 |
-- despite the setting) |
915 |
set parallel_leader_participation = off; |
479 |
set parallel_leader_participation = off; |
|
|
480 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
916 |
explain (costs off) |
481 |
explain (costs off) |
917 |
select string4 from tenk1 order by string4 limit 5; |
482 |
select string4 from tenk1 order by string4 limit 5; |
918 |
QUERY PLAN |
483 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
919 |
---------------------------------------------- |
|
|
920 |
Limit |
921 |
-> Gather Merge |
922 |
Workers Planned: 4 |
923 |
-> Sort |
924 |
Sort Key: string4 |
925 |
-> Parallel Seq Scan on tenk1 |
926 |
(6 rows) |
927 |
|
928 |
select string4 from tenk1 order by string4 limit 5; |
484 |
select string4 from tenk1 order by string4 limit 5; |
929 |
string4 |
485 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
930 |
--------- |
|
|
931 |
AAAAxx |
932 |
AAAAxx |
933 |
AAAAxx |
934 |
AAAAxx |
935 |
AAAAxx |
936 |
(5 rows) |
937 |
|
938 |
reset parallel_leader_participation; |
486 |
reset parallel_leader_participation; |
|
|
487 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
939 |
reset max_parallel_workers; |
488 |
reset max_parallel_workers; |
|
|
489 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
940 |
SAVEPOINT settings; |
490 |
SAVEPOINT settings; |
|
|
491 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
941 |
SET LOCAL force_parallel_mode = 1; |
492 |
SET LOCAL force_parallel_mode = 1; |
|
|
493 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
942 |
explain (costs off) |
494 |
explain (costs off) |
943 |
select stringu1::int2 from tenk1 where unique1 = 1; |
495 |
select stringu1::int2 from tenk1 where unique1 = 1; |
944 |
QUERY PLAN |
496 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
945 |
----------------------------------------------- |
|
|
946 |
Gather |
947 |
Workers Planned: 1 |
948 |
Single Copy: true |
949 |
-> Index Scan using tenk1_unique1 on tenk1 |
950 |
Index Cond: (unique1 = 1) |
951 |
(5 rows) |
952 |
|
953 |
ROLLBACK TO SAVEPOINT settings; |
497 |
ROLLBACK TO SAVEPOINT settings; |
|
|
498 |
ERROR: savepoint "settings" does not exist |
954 |
-- exercise record typmod remapping between backends |
499 |
-- exercise record typmod remapping between backends |
955 |
CREATE FUNCTION make_record(n int) |
500 |
CREATE FUNCTION make_record(n int) |
956 |
RETURNS RECORD LANGUAGE plpgsql PARALLEL SAFE AS |
501 |
RETURNS RECORD LANGUAGE plpgsql PARALLEL SAFE AS |
Lines 965-1087
Link Here
|
965 |
END; |
510 |
END; |
966 |
END; |
511 |
END; |
967 |
$$; |
512 |
$$; |
|
|
513 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
968 |
SAVEPOINT settings; |
514 |
SAVEPOINT settings; |
|
|
515 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
969 |
SET LOCAL force_parallel_mode = 1; |
516 |
SET LOCAL force_parallel_mode = 1; |
|
|
517 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
970 |
SELECT make_record(x) FROM (SELECT generate_series(1, 5) x) ss ORDER BY x; |
518 |
SELECT make_record(x) FROM (SELECT generate_series(1, 5) x) ss ORDER BY x; |
971 |
make_record |
519 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
972 |
------------- |
|
|
973 |
(1) |
974 |
(1,2) |
975 |
(1,2,3) |
976 |
(1,2,3,4) |
977 |
(1,2,3,4,5) |
978 |
(5 rows) |
979 |
|
980 |
ROLLBACK TO SAVEPOINT settings; |
520 |
ROLLBACK TO SAVEPOINT settings; |
|
|
521 |
ERROR: savepoint "settings" does not exist |
981 |
DROP function make_record(n int); |
522 |
DROP function make_record(n int); |
|
|
523 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
982 |
-- test the sanity of parallel query after the active role is dropped. |
524 |
-- test the sanity of parallel query after the active role is dropped. |
983 |
drop role if exists regress_parallel_worker; |
525 |
drop role if exists regress_parallel_worker; |
984 |
NOTICE: role "regress_parallel_worker" does not exist, skipping |
526 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
985 |
create role regress_parallel_worker; |
527 |
create role regress_parallel_worker; |
|
|
528 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
986 |
set role regress_parallel_worker; |
529 |
set role regress_parallel_worker; |
|
|
530 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
987 |
reset session authorization; |
531 |
reset session authorization; |
|
|
532 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
988 |
drop role regress_parallel_worker; |
533 |
drop role regress_parallel_worker; |
|
|
534 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
989 |
set force_parallel_mode = 1; |
535 |
set force_parallel_mode = 1; |
|
|
536 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
990 |
select count(*) from tenk1; |
537 |
select count(*) from tenk1; |
991 |
count |
538 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
992 |
------- |
|
|
993 |
10000 |
994 |
(1 row) |
995 |
|
996 |
reset force_parallel_mode; |
539 |
reset force_parallel_mode; |
|
|
540 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
997 |
reset role; |
541 |
reset role; |
|
|
542 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
998 |
-- Window function calculation can't be pushed to workers. |
543 |
-- Window function calculation can't be pushed to workers. |
999 |
explain (costs off, verbose) |
544 |
explain (costs off, verbose) |
1000 |
select count(*) from tenk1 a where (unique1, two) in |
545 |
select count(*) from tenk1 a where (unique1, two) in |
1001 |
(select unique1, row_number() over() from tenk1 b); |
546 |
(select unique1, row_number() over() from tenk1 b); |
1002 |
QUERY PLAN |
547 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1003 |
---------------------------------------------------------------------------------------------- |
|
|
1004 |
Aggregate |
1005 |
Output: count(*) |
1006 |
-> Hash Semi Join |
1007 |
Hash Cond: ((a.unique1 = b.unique1) AND (a.two = (row_number() OVER (?)))) |
1008 |
-> Gather |
1009 |
Output: a.unique1, a.two |
1010 |
Workers Planned: 4 |
1011 |
-> Parallel Seq Scan on public.tenk1 a |
1012 |
Output: a.unique1, a.two |
1013 |
-> Hash |
1014 |
Output: b.unique1, (row_number() OVER (?)) |
1015 |
-> WindowAgg |
1016 |
Output: b.unique1, row_number() OVER (?) |
1017 |
-> Gather |
1018 |
Output: b.unique1 |
1019 |
Workers Planned: 4 |
1020 |
-> Parallel Index Only Scan using tenk1_unique1 on public.tenk1 b |
1021 |
Output: b.unique1 |
1022 |
(18 rows) |
1023 |
|
1024 |
-- LIMIT/OFFSET within sub-selects can't be pushed to workers. |
548 |
-- LIMIT/OFFSET within sub-selects can't be pushed to workers. |
1025 |
explain (costs off) |
549 |
explain (costs off) |
1026 |
select * from tenk1 a where two in |
550 |
select * from tenk1 a where two in |
1027 |
(select two from tenk1 b where stringu1 like '%AAAA' limit 3); |
551 |
(select two from tenk1 b where stringu1 like '%AAAA' limit 3); |
1028 |
QUERY PLAN |
552 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1029 |
--------------------------------------------------------------- |
|
|
1030 |
Hash Semi Join |
1031 |
Hash Cond: (a.two = b.two) |
1032 |
-> Gather |
1033 |
Workers Planned: 4 |
1034 |
-> Parallel Seq Scan on tenk1 a |
1035 |
-> Hash |
1036 |
-> Limit |
1037 |
-> Gather |
1038 |
Workers Planned: 4 |
1039 |
-> Parallel Seq Scan on tenk1 b |
1040 |
Filter: (stringu1 ~~ '%AAAA'::text) |
1041 |
(11 rows) |
1042 |
|
1043 |
-- to increase the parallel query test coverage |
553 |
-- to increase the parallel query test coverage |
1044 |
SAVEPOINT settings; |
554 |
SAVEPOINT settings; |
|
|
555 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1045 |
SET LOCAL force_parallel_mode = 1; |
556 |
SET LOCAL force_parallel_mode = 1; |
|
|
557 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1046 |
EXPLAIN (analyze, timing off, summary off, costs off) SELECT * FROM tenk1; |
558 |
EXPLAIN (analyze, timing off, summary off, costs off) SELECT * FROM tenk1; |
1047 |
QUERY PLAN |
559 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1048 |
------------------------------------------------------------- |
|
|
1049 |
Gather (actual rows=10000 loops=1) |
1050 |
Workers Planned: 4 |
1051 |
Workers Launched: 4 |
1052 |
-> Parallel Seq Scan on tenk1 (actual rows=2000 loops=5) |
1053 |
(4 rows) |
1054 |
|
1055 |
ROLLBACK TO SAVEPOINT settings; |
560 |
ROLLBACK TO SAVEPOINT settings; |
|
|
561 |
ERROR: savepoint "settings" does not exist |
1056 |
-- provoke error in worker |
562 |
-- provoke error in worker |
1057 |
-- (make the error message long enough to require multiple bufferloads) |
563 |
-- (make the error message long enough to require multiple bufferloads) |
1058 |
SAVEPOINT settings; |
564 |
SAVEPOINT settings; |
|
|
565 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1059 |
SET LOCAL force_parallel_mode = 1; |
566 |
SET LOCAL force_parallel_mode = 1; |
|
|
567 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1060 |
select (stringu1 || repeat('abcd', 5000))::int2 from tenk1 where unique1 = 1; |
568 |
select (stringu1 || repeat('abcd', 5000))::int2 from tenk1 where unique1 = 1; |
1061 |
ERROR: invalid input syntax for type smallint: "BAAAAAabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcdabcd" |
569 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1062 |
CONTEXT: parallel worker |
|
|
1063 |
ROLLBACK TO SAVEPOINT settings; |
570 |
ROLLBACK TO SAVEPOINT settings; |
|
|
571 |
ERROR: savepoint "settings" does not exist |
1064 |
-- test interaction with set-returning functions |
572 |
-- test interaction with set-returning functions |
1065 |
SAVEPOINT settings; |
573 |
SAVEPOINT settings; |
|
|
574 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1066 |
-- multiple subqueries under a single Gather node |
575 |
-- multiple subqueries under a single Gather node |
1067 |
-- must set parallel_setup_cost > 0 to discourage multiple Gather nodes |
576 |
-- must set parallel_setup_cost > 0 to discourage multiple Gather nodes |
1068 |
SET LOCAL parallel_setup_cost = 10; |
577 |
SET LOCAL parallel_setup_cost = 10; |
|
|
578 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1069 |
EXPLAIN (COSTS OFF) |
579 |
EXPLAIN (COSTS OFF) |
1070 |
SELECT unique1 FROM tenk1 WHERE fivethous = tenthous + 1 |
580 |
SELECT unique1 FROM tenk1 WHERE fivethous = tenthous + 1 |
1071 |
UNION ALL |
581 |
UNION ALL |
1072 |
SELECT unique1 FROM tenk1 WHERE fivethous = tenthous + 1; |
582 |
SELECT unique1 FROM tenk1 WHERE fivethous = tenthous + 1; |
1073 |
QUERY PLAN |
583 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1074 |
---------------------------------------------------- |
|
|
1075 |
Gather |
1076 |
Workers Planned: 4 |
1077 |
-> Parallel Append |
1078 |
-> Parallel Seq Scan on tenk1 |
1079 |
Filter: (fivethous = (tenthous + 1)) |
1080 |
-> Parallel Seq Scan on tenk1 tenk1_1 |
1081 |
Filter: (fivethous = (tenthous + 1)) |
1082 |
(7 rows) |
1083 |
|
1084 |
ROLLBACK TO SAVEPOINT settings; |
584 |
ROLLBACK TO SAVEPOINT settings; |
|
|
585 |
ERROR: savepoint "settings" does not exist |
1085 |
-- can't use multiple subqueries under a single Gather node due to initPlans |
586 |
-- can't use multiple subqueries under a single Gather node due to initPlans |
1086 |
EXPLAIN (COSTS OFF) |
587 |
EXPLAIN (COSTS OFF) |
1087 |
SELECT unique1 FROM tenk1 WHERE fivethous = |
588 |
SELECT unique1 FROM tenk1 WHERE fivethous = |
Lines 1090-1178
Link Here
|
1090 |
SELECT unique1 FROM tenk1 WHERE fivethous = |
591 |
SELECT unique1 FROM tenk1 WHERE fivethous = |
1091 |
(SELECT unique2 FROM tenk1 WHERE fivethous = 1 LIMIT 1) |
592 |
(SELECT unique2 FROM tenk1 WHERE fivethous = 1 LIMIT 1) |
1092 |
ORDER BY 1; |
593 |
ORDER BY 1; |
1093 |
QUERY PLAN |
594 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1094 |
-------------------------------------------------------------------- |
|
|
1095 |
Sort |
1096 |
Sort Key: tenk1.unique1 |
1097 |
-> Append |
1098 |
-> Gather |
1099 |
Workers Planned: 4 |
1100 |
Params Evaluated: $1 |
1101 |
InitPlan 1 (returns $1) |
1102 |
-> Limit |
1103 |
-> Gather |
1104 |
Workers Planned: 4 |
1105 |
-> Parallel Seq Scan on tenk1 tenk1_2 |
1106 |
Filter: (fivethous = 1) |
1107 |
-> Parallel Seq Scan on tenk1 |
1108 |
Filter: (fivethous = $1) |
1109 |
-> Gather |
1110 |
Workers Planned: 4 |
1111 |
Params Evaluated: $3 |
1112 |
InitPlan 2 (returns $3) |
1113 |
-> Limit |
1114 |
-> Gather |
1115 |
Workers Planned: 4 |
1116 |
-> Parallel Seq Scan on tenk1 tenk1_3 |
1117 |
Filter: (fivethous = 1) |
1118 |
-> Parallel Seq Scan on tenk1 tenk1_1 |
1119 |
Filter: (fivethous = $3) |
1120 |
(25 rows) |
1121 |
|
1122 |
-- test interaction with SRFs |
595 |
-- test interaction with SRFs |
1123 |
SELECT * FROM information_schema.foreign_data_wrapper_options |
596 |
SELECT * FROM information_schema.foreign_data_wrapper_options |
1124 |
ORDER BY 1, 2, 3; |
597 |
ORDER BY 1, 2, 3; |
1125 |
foreign_data_wrapper_catalog | foreign_data_wrapper_name | option_name | option_value |
598 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1126 |
------------------------------+---------------------------+-------------+-------------- |
|
|
1127 |
(0 rows) |
1128 |
|
1129 |
EXPLAIN (VERBOSE, COSTS OFF) |
599 |
EXPLAIN (VERBOSE, COSTS OFF) |
1130 |
SELECT generate_series(1, two), array(select generate_series(1, two)) |
600 |
SELECT generate_series(1, two), array(select generate_series(1, two)) |
1131 |
FROM tenk1 ORDER BY tenthous; |
601 |
FROM tenk1 ORDER BY tenthous; |
1132 |
QUERY PLAN |
602 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1133 |
---------------------------------------------------------------------- |
|
|
1134 |
ProjectSet |
1135 |
Output: generate_series(1, tenk1.two), (SubPlan 1), tenk1.tenthous |
1136 |
-> Gather Merge |
1137 |
Output: tenk1.two, tenk1.tenthous |
1138 |
Workers Planned: 4 |
1139 |
-> Result |
1140 |
Output: tenk1.two, tenk1.tenthous |
1141 |
-> Sort |
1142 |
Output: tenk1.tenthous, tenk1.two |
1143 |
Sort Key: tenk1.tenthous |
1144 |
-> Parallel Seq Scan on public.tenk1 |
1145 |
Output: tenk1.tenthous, tenk1.two |
1146 |
SubPlan 1 |
1147 |
-> ProjectSet |
1148 |
Output: generate_series(1, tenk1.two) |
1149 |
-> Result |
1150 |
(16 rows) |
1151 |
|
1152 |
-- must disallow pushing sort below gather when pathkey contains an SRF |
603 |
-- must disallow pushing sort below gather when pathkey contains an SRF |
1153 |
EXPLAIN (VERBOSE, COSTS OFF) |
604 |
EXPLAIN (VERBOSE, COSTS OFF) |
1154 |
SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey |
605 |
SELECT unnest(ARRAY[]::integer[]) + 1 AS pathkey |
1155 |
FROM tenk1 t1 JOIN tenk1 t2 ON TRUE |
606 |
FROM tenk1 t1 JOIN tenk1 t2 ON TRUE |
1156 |
ORDER BY pathkey; |
607 |
ORDER BY pathkey; |
1157 |
QUERY PLAN |
608 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1158 |
----------------------------------------------------------------------------------------------------- |
|
|
1159 |
Sort |
1160 |
Output: (((unnest('{}'::integer[])) + 1)) |
1161 |
Sort Key: (((unnest('{}'::integer[])) + 1)) |
1162 |
-> Result |
1163 |
Output: ((unnest('{}'::integer[])) + 1) |
1164 |
-> ProjectSet |
1165 |
Output: unnest('{}'::integer[]) |
1166 |
-> Nested Loop |
1167 |
-> Gather |
1168 |
Workers Planned: 4 |
1169 |
-> Parallel Index Only Scan using tenk1_hundred on public.tenk1 t1 |
1170 |
-> Materialize |
1171 |
-> Gather |
1172 |
Workers Planned: 4 |
1173 |
-> Parallel Index Only Scan using tenk1_hundred on public.tenk1 t2 |
1174 |
(15 rows) |
1175 |
|
1176 |
-- test passing expanded-value representations to workers |
609 |
-- test passing expanded-value representations to workers |
1177 |
CREATE FUNCTION make_some_array(int,int) returns int[] as |
610 |
CREATE FUNCTION make_some_array(int,int) returns int[] as |
1178 |
$$declare x int[]; |
611 |
$$declare x int[]; |
Lines 1181-1221
Link Here
|
1181 |
x[2] := $2; |
614 |
x[2] := $2; |
1182 |
return x; |
615 |
return x; |
1183 |
end$$ language plpgsql parallel safe; |
616 |
end$$ language plpgsql parallel safe; |
|
|
617 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1184 |
CREATE TABLE fooarr(f1 text, f2 int[], f3 text); |
618 |
CREATE TABLE fooarr(f1 text, f2 int[], f3 text); |
|
|
619 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1185 |
INSERT INTO fooarr VALUES('1', ARRAY[1,2], 'one'); |
620 |
INSERT INTO fooarr VALUES('1', ARRAY[1,2], 'one'); |
|
|
621 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1186 |
PREPARE pstmt(text, int[]) AS SELECT * FROM fooarr WHERE f1 = $1 AND f2 = $2; |
622 |
PREPARE pstmt(text, int[]) AS SELECT * FROM fooarr WHERE f1 = $1 AND f2 = $2; |
|
|
623 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1187 |
EXPLAIN (COSTS OFF) EXECUTE pstmt('1', make_some_array(1,2)); |
624 |
EXPLAIN (COSTS OFF) EXECUTE pstmt('1', make_some_array(1,2)); |
1188 |
QUERY PLAN |
625 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1189 |
------------------------------------------------------------------ |
|
|
1190 |
Gather |
1191 |
Workers Planned: 3 |
1192 |
-> Parallel Seq Scan on fooarr |
1193 |
Filter: ((f1 = '1'::text) AND (f2 = '{1,2}'::integer[])) |
1194 |
(4 rows) |
1195 |
|
1196 |
EXECUTE pstmt('1', make_some_array(1,2)); |
626 |
EXECUTE pstmt('1', make_some_array(1,2)); |
1197 |
f1 | f2 | f3 |
627 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1198 |
----+-------+----- |
|
|
1199 |
1 | {1,2} | one |
1200 |
(1 row) |
1201 |
|
1202 |
DEALLOCATE pstmt; |
628 |
DEALLOCATE pstmt; |
|
|
629 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1203 |
-- test interaction between subquery and partial_paths |
630 |
-- test interaction between subquery and partial_paths |
1204 |
CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1; |
631 |
CREATE VIEW tenk1_vw_sec WITH (security_barrier) AS SELECT * FROM tenk1; |
|
|
632 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1205 |
EXPLAIN (COSTS OFF) |
633 |
EXPLAIN (COSTS OFF) |
1206 |
SELECT 1 FROM tenk1_vw_sec |
634 |
SELECT 1 FROM tenk1_vw_sec |
1207 |
WHERE (SELECT sum(f1) FROM int4_tbl WHERE f1 < unique1) < 100; |
635 |
WHERE (SELECT sum(f1) FROM int4_tbl WHERE f1 < unique1) < 100; |
1208 |
QUERY PLAN |
636 |
ERROR: current transaction is aborted, commands ignored until end of transaction block |
1209 |
------------------------------------------------------------------- |
|
|
1210 |
Subquery Scan on tenk1_vw_sec |
1211 |
Filter: ((SubPlan 1) < 100) |
1212 |
-> Gather |
1213 |
Workers Planned: 4 |
1214 |
-> Parallel Index Only Scan using tenk1_unique1 on tenk1 |
1215 |
SubPlan 1 |
1216 |
-> Aggregate |
1217 |
-> Seq Scan on int4_tbl |
1218 |
Filter: (f1 < tenk1_vw_sec.unique1) |
1219 |
(9 rows) |
1220 |
|
1221 |
rollback; |
637 |
rollback; |