0002-Test-rescans-when-parallel-node-is-beneath-Limit-nod.patch
application/octet-stream
Filename: 0002-Test-rescans-when-parallel-node-is-beneath-Limit-nod.patch
Type: application/octet-stream
Part: 1
Message:
Re: SegFault on 9.6.14
Patch
Format: format-patch
Series: patch 0002
Subject: Test rescans when parallel node is beneath Limit node.
| File | + | − |
|---|---|---|
| src/test/regress/expected/select_parallel.out | 33 | 1 |
| src/test/regress/sql/select_parallel.sql | 16 | 1 |
From 294b2715aee208f1eb70a4bfa28ca8afab6d6829 Mon Sep 17 00:00:00 2001 From: Amit Kapila <akapila@postgresql.org> Date: Mon, 2 Sep 2019 13:04:26 +0530 Subject: [PATCH 2/2] Test rescans when parallel node is beneath Limit node. --- src/test/regress/expected/select_parallel.out | 34 ++++++++++++++++++++++++++- src/test/regress/sql/select_parallel.sql | 17 +++++++++++++- 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/test/regress/expected/select_parallel.out b/src/test/regress/expected/select_parallel.out index 04aecef..b8d7f67 100644 --- a/src/test/regress/expected/select_parallel.out +++ b/src/test/regress/expected/select_parallel.out @@ -469,9 +469,41 @@ select * from 9000 | 3 (3 rows) -reset enable_material; +-- test rescans for a Limit node with a parallel node beneath it. reset enable_seqscan; +set enable_indexonlyscan to off; +alter table tenk2 set (parallel_workers = 1); +explain (costs off) +select count(*) from tenk1 + left join (select tenk2.unique1 from tenk2 limit 1000) ss + on tenk1.unique1 < ss.unique1 + 1 + where tenk1.unique1 < 2; + QUERY PLAN +------------------------------------------------------------ + Aggregate + -> Nested Loop Left Join + Join Filter: (tenk1.unique1 < (tenk2.unique1 + 1)) + -> Index Scan using tenk1_unique1 on tenk1 + Index Cond: (unique1 < 2) + -> Limit + -> Gather + Workers Planned: 1 + -> Parallel Seq Scan on tenk2 +(9 rows) + +select count(*) from tenk1 + left join (select tenk2.unique1 from tenk2 limit 1000) ss + on tenk1.unique1 < ss.unique1 + 1 + where tenk1.unique1 < 2; + count +------- + 2000 +(1 row) + +alter table tenk2 reset (parallel_workers); +reset enable_material; reset enable_bitmapscan; +reset enable_indexonlyscan; -- test parallel bitmap heap scan. set enable_seqscan to off; set enable_indexscan to off; diff --git a/src/test/regress/sql/select_parallel.sql b/src/test/regress/sql/select_parallel.sql index 2c05661..6965c69 100644 --- a/src/test/regress/sql/select_parallel.sql +++ b/src/test/regress/sql/select_parallel.sql @@ -173,9 +173,24 @@ select * from (select count(*) from tenk1 where thousand > 99) ss right join (values (1),(2),(3)) v(x) on true; -reset enable_material; +-- test rescans for a Limit node with a parallel node beneath it. reset enable_seqscan; +set enable_indexonlyscan to off; +alter table tenk2 set (parallel_workers = 1); +explain (costs off) +select count(*) from tenk1 + left join (select tenk2.unique1 from tenk2 limit 1000) ss + on tenk1.unique1 < ss.unique1 + 1 + where tenk1.unique1 < 2; +select count(*) from tenk1 + left join (select tenk2.unique1 from tenk2 limit 1000) ss + on tenk1.unique1 < ss.unique1 + 1 + where tenk1.unique1 < 2; +alter table tenk2 reset (parallel_workers); + +reset enable_material; reset enable_bitmapscan; +reset enable_indexonlyscan; -- test parallel bitmap heap scan. set enable_seqscan to off; -- 1.8.3.1