Skip to content

Commit 10f8224

Browse files
committed
National strings: check if dialect supports backslash escape
1 parent 4741500 commit 10f8224

File tree

1 file changed

+15
-1
lines changed

1 file changed

+15
-1
lines changed

src/tokenizer.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -971,7 +971,8 @@ impl<'a> Tokenizer<'a> {
971971
match chars.peek() {
972972
Some('\'') => {
973973
// N'...' - a <national character string literal>
974-
let s = self.tokenize_single_quoted_string(chars, '\'', true)?;
974+
let backslash_escape = self.dialect.supports_string_literal_backslash_escape();
975+
let s = self.tokenize_single_quoted_string(chars, '\'', backslash_escape)?;
975976
Ok(Some(Token::NationalStringLiteral(s)))
976977
}
977978
_ => {
@@ -3543,4 +3544,17 @@ mod tests {
35433544
];
35443545
compare(expected, tokens);
35453546
}
3547+
3548+
#[test]
3549+
fn test_national_strings() {
3550+
let dialect = PostgreSqlDialect {};
3551+
let sql = "select n'''''\\'";
3552+
let tokens = Tokenizer::new(&dialect, sql).tokenize().unwrap();
3553+
let expected = vec![
3554+
Token::make_keyword("select"),
3555+
Token::Whitespace(Whitespace::Space),
3556+
Token::NationalStringLiteral("''\\".to_string()),
3557+
];
3558+
compare(expected, tokens);
3559+
}
35463560
}

0 commit comments

Comments
 (0)