Skip to content

Commit d32df52

Browse files
authored
Accept &str in Parse::parse_sql (apache#182)
It is more generic to accept a `&str` than a `String` in an API, and avoids having to convert a string to a `String` when not needed, avoiding a copy.
1 parent b4699bd commit d32df52

File tree

6 files changed

+8
-8
lines changed

6 files changed

+8
-8
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ let sql = "SELECT a, b, 123, myfunc(b) \
2929

3030
let dialect = GenericDialect {}; // or AnsiDialect, or your own dialect ...
3131

32-
let ast = Parser::parse_sql(&dialect, sql.to_string()).unwrap();
32+
let ast = Parser::parse_sql(&dialect, sql).unwrap();
3333

3434
println!("AST: {:?}", ast);
3535
```
@@ -122,4 +122,4 @@ resources.
122122
[LocustDB]: https://github.com/cswinter/LocustDB
123123
[Pratt Parser]: https://tdop.github.io/
124124
[sql-2016-grammar]: https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html
125-
[sql-standard]: https://en.wikipedia.org/wiki/ISO/IEC_9075
125+
[sql-standard]: https://en.wikipedia.org/wiki/ISO/IEC_9075

examples/cli.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn main() {
4545
chars.next();
4646
chars.as_str()
4747
};
48-
let parse_result = Parser::parse_sql(&*dialect, without_bom.to_owned());
48+
let parse_result = Parser::parse_sql(&*dialect, without_bom);
4949
match parse_result {
5050
Ok(statements) => {
5151
println!(

examples/parse_select.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn main() {
2323

2424
let dialect = GenericDialect {};
2525

26-
let ast = Parser::parse_sql(&dialect, sql.to_string()).unwrap();
26+
let ast = Parser::parse_sql(&dialect, sql).unwrap();
2727

2828
println!("AST: {:?}", ast);
2929
}

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
//! WHERE a > b AND b < 100 \
2929
//! ORDER BY a DESC, b";
3030
//!
31-
//! let ast = Parser::parse_sql(&dialect, sql.to_string()).unwrap();
31+
//! let ast = Parser::parse_sql(&dialect, sql).unwrap();
3232
//!
3333
//! println!("AST: {:?}", ast);
3434
//! ```

src/parser.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ impl Parser {
8282
}
8383

8484
/// Parse a SQL statement and produce an Abstract Syntax Tree (AST)
85-
pub fn parse_sql(dialect: &dyn Dialect, sql: String) -> Result<Vec<Statement>, ParserError> {
85+
pub fn parse_sql(dialect: &dyn Dialect, sql: &str) -> Result<Vec<Statement>, ParserError> {
8686
let mut tokenizer = Tokenizer::new(dialect, &sql);
8787
let tokens = tokenizer.tokenize()?;
8888
let mut parser = Parser::new(tokens);

src/test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,9 @@ impl TestedDialects {
5858
}
5959

6060
pub fn parse_sql_statements(&self, sql: &str) -> Result<Vec<Statement>, ParserError> {
61-
self.one_of_identical_results(|dialect| Parser::parse_sql(dialect, sql.to_string()))
61+
self.one_of_identical_results(|dialect| Parser::parse_sql(dialect, &sql))
6262
// To fail the `ensure_multiple_dialects_are_tested` test:
63-
// Parser::parse_sql(&**self.dialects.first().unwrap(), sql.to_string())
63+
// Parser::parse_sql(&**self.dialects.first().unwrap(), sql)
6464
}
6565

6666
/// Ensures that `sql` parses as a single statement, optionally checking

0 commit comments

Comments
 (0)