summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/regress/expected/window.out43
-rw-r--r--src/test/regress/sql/window.sql17
2 files changed, 42 insertions, 18 deletions
diff --git a/src/test/regress/expected/window.out b/src/test/regress/expected/window.out
index 747608e3c14..1d4b78b9b27 100644
--- a/src/test/regress/expected/window.out
+++ b/src/test/regress/expected/window.out
@@ -3844,29 +3844,44 @@ WHERE 3 <= c;
-> Seq Scan on empsalary
(6 rows)
--- Ensure we don't pushdown when there are multiple window clauses to evaluate
+-- Ensure we don't use a run condition when there's a volatile function in the
+-- WindowFunc
EXPLAIN (COSTS OFF)
SELECT * FROM
(SELECT empno,
salary,
- count(*) OVER (ORDER BY empno DESC) c,
- dense_rank() OVER (ORDER BY salary DESC) dr
+ count(random()) OVER (ORDER BY empno DESC) c
FROM empsalary) emp
-WHERE dr = 1;
- QUERY PLAN
------------------------------------------------------------------
+WHERE c = 1;
+ QUERY PLAN
+----------------------------------------------
Subquery Scan on emp
- Filter: (emp.dr = 1)
+ Filter: (emp.c = 1)
-> WindowAgg
- Filter: ((dense_rank() OVER (?)) <= 1)
-> Sort
Sort Key: empsalary.empno DESC
- -> WindowAgg
- Run Condition: (dense_rank() OVER (?) <= 1)
- -> Sort
- Sort Key: empsalary.salary DESC
- -> Seq Scan on empsalary
-(11 rows)
+ -> Seq Scan on empsalary
+(6 rows)
+
+-- Ensure we don't use a run condition when the WindowFunc contains subplans
+EXPLAIN (COSTS OFF)
+SELECT * FROM
+ (SELECT empno,
+ salary,
+ count((SELECT 1)) OVER (ORDER BY empno DESC) c
+ FROM empsalary) emp
+WHERE c = 1;
+ QUERY PLAN
+----------------------------------------------
+ Subquery Scan on emp
+ Filter: (emp.c = 1)
+ -> WindowAgg
+ InitPlan 1 (returns $0)
+ -> Result
+ -> Sort
+ Sort Key: empsalary.empno DESC
+ -> Seq Scan on empsalary
+(8 rows)
-- Test Sort node collapsing
EXPLAIN (COSTS OFF)
diff --git a/src/test/regress/sql/window.sql b/src/test/regress/sql/window.sql
index 1009b438def..3ab6ac715d0 100644
--- a/src/test/regress/sql/window.sql
+++ b/src/test/regress/sql/window.sql
@@ -1259,15 +1259,24 @@ SELECT * FROM
FROM empsalary) emp
WHERE 3 <= c;
--- Ensure we don't pushdown when there are multiple window clauses to evaluate
+-- Ensure we don't use a run condition when there's a volatile function in the
+-- WindowFunc
EXPLAIN (COSTS OFF)
SELECT * FROM
(SELECT empno,
salary,
- count(*) OVER (ORDER BY empno DESC) c,
- dense_rank() OVER (ORDER BY salary DESC) dr
+ count(random()) OVER (ORDER BY empno DESC) c
FROM empsalary) emp
-WHERE dr = 1;
+WHERE c = 1;
+
+-- Ensure we don't use a run condition when the WindowFunc contains subplans
+EXPLAIN (COSTS OFF)
+SELECT * FROM
+ (SELECT empno,
+ salary,
+ count((SELECT 1)) OVER (ORDER BY empno DESC) c
+ FROM empsalary) emp
+WHERE c = 1;
-- Test Sort node collapsing
EXPLAIN (COSTS OFF)