mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-08 01:15:00 +00:00
Accept &str in Parse::parse_sql
(#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.
This commit is contained in:
parent
b4699bd4a7
commit
d32df527e6
6 changed files with 8 additions and 8 deletions
|
@ -29,7 +29,7 @@ let sql = "SELECT a, b, 123, myfunc(b) \
|
||||||
|
|
||||||
let dialect = GenericDialect {}; // or AnsiDialect, or your own dialect ...
|
let dialect = GenericDialect {}; // or AnsiDialect, or your own dialect ...
|
||||||
|
|
||||||
let ast = Parser::parse_sql(&dialect, sql.to_string()).unwrap();
|
let ast = Parser::parse_sql(&dialect, sql).unwrap();
|
||||||
|
|
||||||
println!("AST: {:?}", ast);
|
println!("AST: {:?}", ast);
|
||||||
```
|
```
|
||||||
|
@ -122,4 +122,4 @@ resources.
|
||||||
[LocustDB]: https://github.com/cswinter/LocustDB
|
[LocustDB]: https://github.com/cswinter/LocustDB
|
||||||
[Pratt Parser]: https://tdop.github.io/
|
[Pratt Parser]: https://tdop.github.io/
|
||||||
[sql-2016-grammar]: https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html
|
[sql-2016-grammar]: https://jakewheat.github.io/sql-overview/sql-2016-foundation-grammar.html
|
||||||
[sql-standard]: https://en.wikipedia.org/wiki/ISO/IEC_9075
|
[sql-standard]: https://en.wikipedia.org/wiki/ISO/IEC_9075
|
||||||
|
|
|
@ -45,7 +45,7 @@ fn main() {
|
||||||
chars.next();
|
chars.next();
|
||||||
chars.as_str()
|
chars.as_str()
|
||||||
};
|
};
|
||||||
let parse_result = Parser::parse_sql(&*dialect, without_bom.to_owned());
|
let parse_result = Parser::parse_sql(&*dialect, without_bom);
|
||||||
match parse_result {
|
match parse_result {
|
||||||
Ok(statements) => {
|
Ok(statements) => {
|
||||||
println!(
|
println!(
|
||||||
|
|
|
@ -23,7 +23,7 @@ fn main() {
|
||||||
|
|
||||||
let dialect = GenericDialect {};
|
let dialect = GenericDialect {};
|
||||||
|
|
||||||
let ast = Parser::parse_sql(&dialect, sql.to_string()).unwrap();
|
let ast = Parser::parse_sql(&dialect, sql).unwrap();
|
||||||
|
|
||||||
println!("AST: {:?}", ast);
|
println!("AST: {:?}", ast);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
//! WHERE a > b AND b < 100 \
|
//! WHERE a > b AND b < 100 \
|
||||||
//! ORDER BY a DESC, b";
|
//! ORDER BY a DESC, b";
|
||||||
//!
|
//!
|
||||||
//! let ast = Parser::parse_sql(&dialect, sql.to_string()).unwrap();
|
//! let ast = Parser::parse_sql(&dialect, sql).unwrap();
|
||||||
//!
|
//!
|
||||||
//! println!("AST: {:?}", ast);
|
//! println!("AST: {:?}", ast);
|
||||||
//! ```
|
//! ```
|
||||||
|
|
|
@ -82,7 +82,7 @@ impl Parser {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a SQL statement and produce an Abstract Syntax Tree (AST)
|
/// Parse a SQL statement and produce an Abstract Syntax Tree (AST)
|
||||||
pub fn parse_sql(dialect: &dyn Dialect, sql: String) -> Result<Vec<Statement>, ParserError> {
|
pub fn parse_sql(dialect: &dyn Dialect, sql: &str) -> Result<Vec<Statement>, ParserError> {
|
||||||
let mut tokenizer = Tokenizer::new(dialect, &sql);
|
let mut tokenizer = Tokenizer::new(dialect, &sql);
|
||||||
let tokens = tokenizer.tokenize()?;
|
let tokens = tokenizer.tokenize()?;
|
||||||
let mut parser = Parser::new(tokens);
|
let mut parser = Parser::new(tokens);
|
||||||
|
|
|
@ -58,9 +58,9 @@ impl TestedDialects {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_sql_statements(&self, sql: &str) -> Result<Vec<Statement>, ParserError> {
|
pub fn parse_sql_statements(&self, sql: &str) -> Result<Vec<Statement>, ParserError> {
|
||||||
self.one_of_identical_results(|dialect| Parser::parse_sql(dialect, sql.to_string()))
|
self.one_of_identical_results(|dialect| Parser::parse_sql(dialect, &sql))
|
||||||
// To fail the `ensure_multiple_dialects_are_tested` test:
|
// To fail the `ensure_multiple_dialects_are_tested` test:
|
||||||
// Parser::parse_sql(&**self.dialects.first().unwrap(), sql.to_string())
|
// Parser::parse_sql(&**self.dialects.first().unwrap(), sql)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Ensures that `sql` parses as a single statement, optionally checking
|
/// Ensures that `sql` parses as a single statement, optionally checking
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue