Skip to content

Commit d72e84d

Browse files
committed
Rewrite named window search in functional style
1 parent 45c22a1 commit d72e84d

File tree

1 file changed

+9
-10
lines changed

1 file changed

+9
-10
lines changed

src/parser.rs

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5247,7 +5247,7 @@ impl<'a> Parser<'a> {
52475247
None
52485248
};
52495249

5250-
let named_window = if self.parse_keyword(Keyword::WINDOW) {
5250+
let named_windows = if self.parse_keyword(Keyword::WINDOW) {
52515251
self.parse_comma_separated(Parser::parse_named_window)?
52525252
} else {
52535253
vec![]
@@ -5259,16 +5259,15 @@ impl<'a> Parser<'a> {
52595259
} = proj
52605260
{
52615261
if let Some(WindowType::NamedWindow(ident)) = &f.over {
5262-
for (i, window) in named_window.clone().iter().enumerate() {
5263-
if *ident == window.0 {
5264-
break;
5265-
} else if i == named_window.len() - 1 {
5266-
return Err(ParserError::ParserError(format!(
5262+
named_windows
5263+
.iter()
5264+
.find(|IdentWindow(name, _)| ident == name)
5265+
.ok_or_else(|| {
5266+
ParserError::ParserError(format!(
52675267
"Window {} is not defined",
52685268
ident.value
5269-
)));
5270-
}
5271-
}
5269+
))
5270+
})?;
52725271
}
52735272
}
52745273
}
@@ -5292,7 +5291,7 @@ impl<'a> Parser<'a> {
52925291
distribute_by,
52935292
sort_by,
52945293
having,
5295-
named_window,
5294+
named_window: named_windows,
52965295
qualify,
52975296
})
52985297
}

0 commit comments

Comments
 (0)