Bug #87780 Unwarranted error indicating window name not defined
Submitted: 15 Sep 2017 21:25 Modified: 5 Oct 2017 16:36
Reporter: Dag Wanvik Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Optimizer Severity:S3 (Non-critical)
Version:8.0.3 OS:Any
Assigned to: CPU Architecture:Any

[15 Sep 2017 21:25] Dag Wanvik
Description:
SELECT MONTH(date), SUM(sale), 
       AVG(SUM(sale)) OVER w AS sliding_avg FROM sales GROUP BY MONTH(date)
WINDOW w AS (ORDER BY MONTH(date) RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING)
ORDER BY AVG(SUM(sale)) OVER (ORDER BY MONTH(date) RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING);

gives the following weird error:

ERROR 3579 (HY000): Window name 'w' is not defined.

This is wrong, w is indeed defined.

Modifying it to:

SELECT MONTH(date), SUM(sale), 
       AVG(SUM(sale)) OVER w AS sliding_avg FROM sales GROUP BY MONTH(date)
WINDOW w AS (ORDER BY MONTH(date) RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING)
ORDER BY AVG(SUM(sale)) OVER w;

makes it work.

How to repeat:
CREATE TABLE sales(id INT AUTO_INCREMENT PRIMARY KEY, `date` DATE, sale INT);

SELECT MONTH(date), SUM(sale), 
       AVG(SUM(sale)) OVER w AS sliding_avg FROM sales GROUP BY MONTH(date)
WINDOW w AS (ORDER BY MONTH(date) RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING)
ORDER BY AVG(SUM(sale)) OVER (ORDER BY MONTH(date) RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING);
[5 Oct 2017 16:36] Paul DuBois
Posted by developer:
 
Fixed in 8.0.4.

For window functions, an error could be produced that a window was
not defined, when it was defined.