diff --git a/parser.go b/parser.go index bd1cc1303..9788bdcfd 100644 --- a/parser.go +++ b/parser.go @@ -9898,8 +9898,8 @@ yynewstate: } if yyS[yypt-0].item != nil { if sw, ok := (yyS[yypt-0].item.(*ast.StreamWindowSpec)); ok { - } else { st.StreamWindowSpec = sw + } else { st.WindowSpecs = (yyS[yypt-0].item.([]ast.WindowSpec)) } } diff --git a/parser.y b/parser.y index 70c9c4177..bfc821344 100644 --- a/parser.y +++ b/parser.y @@ -4538,9 +4538,9 @@ SelectStmtFromTable: } if $7 != nil { if sw, ok := ($7.(*ast.StreamWindowSpec)); ok { + st.StreamWindowSpec = sw } else { - st.StreamWindowSpec = sw - st.WindowSpecs = ($7.([]ast.WindowSpec)) + st.WindowSpecs = ($7.([]ast.WindowSpec)) } } $$ = st diff --git a/parser_test.go b/parser_test.go index 71541e5a5..d3f9ef6bd 100644 --- a/parser_test.go +++ b/parser_test.go @@ -2557,6 +2557,7 @@ func (s *testParserSuite) TestWindowFunctions(c *C) { {`SELECT FIRST_VALUE(year) OVER (w ORDER BY year ASC) AS first FROM sales WINDOW w AS (PARTITION BY country);`, true}, {`SELECT RANK() OVER w1 FROM t WINDOW w1 AS (w2), w2 AS (), w3 AS (w1);`, true}, {`SELECT RANK() OVER w1 FROM t WINDOW w1 AS (w2), w2 AS (w3), w3 AS (w1);`, true}, + {`SELECT COUNT(*) FROM st group by a window tumbling ( size 5 SECOND);`, true}, } s.enableWindowFunc = true s.RunTest(c, table)