Skip to content

Commit bf03484

Browse files
committed
Fix bad alias recognition on SELECT…OVER statements.
1 parent 6a2b7ed commit bf03484

File tree

2 files changed

+5
-26
lines changed

2 files changed

+5
-26
lines changed

src/Components/Expression.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,8 @@ public static function parse(Parser $parser, TokensList $list, array $options =
367367
&& (($prev[1]->type === Token::TYPE_STRING)
368368
|| ($prev[1]->type === Token::TYPE_SYMBOL
369369
&& ! ($prev[1]->flags & Token::FLAG_SYMBOL_VARIABLE))
370-
|| ($prev[1]->type === Token::TYPE_NONE))
370+
|| ($prev[1]->type === Token::TYPE_NONE
371+
&& $prev[1]->token !== 'OVER'))
371372
) {
372373
if (! empty($ret->alias)) {
373374
$parser->error('An alias was previously found.', $token);

tests/data/parser/parseSelectAggregateWithPartitionAndAlias.out

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -275,8 +275,8 @@
275275
"database": null,
276276
"table": null,
277277
"column": null,
278-
"expr": "COUNT(*) (PARTITION BY `REGION`)",
279-
"alias": "OVER",
278+
"expr": "COUNT(*) OVER(PARTITION BY `REGION`)",
279+
"alias": "count(REGION)",
280280
"function": "COUNT",
281281
"subquery": null
282282
}
@@ -320,28 +320,6 @@
320320
},
321321
"errors": {
322322
"lexer": [],
323-
"parser": [
324-
[
325-
"An alias was previously found.",
326-
{
327-
"@type": "@21"
328-
},
329-
0
330-
],
331-
[
332-
"An alias was expected.",
333-
{
334-
"@type": "@20"
335-
},
336-
0
337-
],
338-
[
339-
"Unexpected token.",
340-
{
341-
"@type": "@21"
342-
},
343-
0
344-
]
345-
]
323+
"parser": []
346324
}
347325
}

0 commit comments

Comments
 (0)