Skip to content

Commit e7438c1

Browse files
committed
Test coverage
1 parent 6bbe574 commit e7438c1

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

src/tokenizer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2047,7 +2047,7 @@ impl<'a> Tokenizer<'a> {
20472047
return self.tokenizer_error(
20482048
start_quote_loc,
20492049
format!(
2050-
"Invalid space, tab, newline, or EOF after '{}''.",
2050+
"Invalid space, tab, newline, or EOF after '{}''",
20512051
String::from_iter(literal_prefix)
20522052
),
20532053
);

tests/sqlparser_oracle.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
use pretty_assertions::assert_eq;
2222

2323
use sqlparser::{
24-
ast::{BinaryOperator, Expr, Ident, QuoteDelimitedString, Value, ValueWithSpan},
25-
dialect::OracleDialect,
26-
tokenizer::Span,
24+
ast::{BinaryOperator, Expr, Ident, QuoteDelimitedString, Value, ValueWithSpan}, dialect::OracleDialect, parser::ParserError, tokenizer::Span
2725
};
2826
use test_utils::{expr_from_projection, number, TestedDialects};
2927

@@ -184,6 +182,27 @@ fn parse_quote_delimited_string() {
184182
);
185183
}
186184

185+
#[test]
186+
fn parse_invalid_quote_delimited_strings() {
187+
// ~ invalid quote delimiter
188+
for q in [' ', '\t', '\r', '\n'] {
189+
assert_eq!(
190+
oracle().parse_sql_statements(&format!("SELECT Q'{q}abc{q}' FROM dual")),
191+
Err(ParserError::TokenizerError("Invalid space, tab, newline, or EOF after 'Q'' at Line: 1, Column: 10".into())),
192+
"with quote char {q:?}");
193+
}
194+
// ~ invalid eof after quote
195+
assert_eq!(
196+
oracle().parse_sql_statements("SELECT Q'"),
197+
Err(ParserError::TokenizerError("Invalid space, tab, newline, or EOF after 'Q'' at Line: 1, Column: 10".into())),
198+
"with EOF quote char");
199+
// ~ unterminated string
200+
assert_eq!(
201+
oracle().parse_sql_statements("SELECT Q'|asdfa...."),
202+
Err(ParserError::TokenizerError("Unterminated string literal at Line: 1, Column: 9".into())),
203+
"with EOF quote char");
204+
}
205+
187206
#[test]
188207
fn parse_quote_delimited_string_lowercase() {
189208
let sql = "select q'!a'b'c!d!' from dual";

0 commit comments

Comments
 (0)