Add support for DuckDB functions named arguments with assignment operator (#1195)

Co-authored-by: Andrew Lamb <andrew@nerdnetworks.org>
This commit is contained in:
gstvg 2024-04-06 13:46:36 -03:00 committed by GitHub
parent e747c9c2af
commit 14b33ac493
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 56 additions and 6 deletions

View file

@ -117,8 +117,8 @@ pub enum Token {
Colon,
/// DoubleColon `::` (used for casting in PostgreSQL)
DoubleColon,
/// Assignment `:=` (used for keyword argument in DuckDB macros)
DuckAssignment,
/// Assignment `:=` (used for keyword argument in DuckDB macros and some functions, and for variable declarations in DuckDB and Snowflake)
Assignment,
/// SemiColon `;` used as separator for COPY and payload
SemiColon,
/// Backslash `\` used in terminating the COPY payload with `\.`
@ -239,7 +239,7 @@ impl fmt::Display for Token {
Token::Period => f.write_str("."),
Token::Colon => f.write_str(":"),
Token::DoubleColon => f.write_str("::"),
Token::DuckAssignment => f.write_str(":="),
Token::Assignment => f.write_str(":="),
Token::SemiColon => f.write_str(";"),
Token::Backslash => f.write_str("\\"),
Token::LBracket => f.write_str("["),
@ -959,7 +959,7 @@ impl<'a> Tokenizer<'a> {
chars.next();
match chars.peek() {
Some(':') => self.consume_and_return(chars, Token::DoubleColon),
Some('=') => self.consume_and_return(chars, Token::DuckAssignment),
Some('=') => self.consume_and_return(chars, Token::Assignment),
_ => Ok(Some(Token::Colon)),
}
}