mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-23 07:24:10 +00:00
Rename parse_tablename -> parse_object_name (4.2/4.4)
...to match the name of the recently introduced `SQLObjectName` struct and to avoid any reservations about using it with multi-part names of objects other than tables (as in the `type_name` case).
This commit is contained in:
parent
523f086be7
commit
39e98cb11a
2 changed files with 11 additions and 9 deletions
|
@ -545,7 +545,7 @@ impl Parser {
|
||||||
/// Parse a SQL CREATE statement
|
/// Parse a SQL CREATE statement
|
||||||
pub fn parse_create(&mut self) -> Result<SQLStatement, ParserError> {
|
pub fn parse_create(&mut self) -> Result<SQLStatement, ParserError> {
|
||||||
if self.parse_keywords(vec!["TABLE"]) {
|
if self.parse_keywords(vec!["TABLE"]) {
|
||||||
let table_name = self.parse_tablename()?;
|
let table_name = self.parse_object_name()?;
|
||||||
// parse optional column list (schema)
|
// parse optional column list (schema)
|
||||||
let mut columns = vec![];
|
let mut columns = vec![];
|
||||||
if self.consume_token(&Token::LParen) {
|
if self.consume_token(&Token::LParen) {
|
||||||
|
@ -639,7 +639,7 @@ impl Parser {
|
||||||
Ok(TableKey::UniqueKey(key))
|
Ok(TableKey::UniqueKey(key))
|
||||||
} else if is_foreign_key {
|
} else if is_foreign_key {
|
||||||
self.expect_keyword("REFERENCES")?;
|
self.expect_keyword("REFERENCES")?;
|
||||||
let foreign_table = self.parse_tablename()?;
|
let foreign_table = self.parse_object_name()?;
|
||||||
self.expect_token(&Token::LParen)?;
|
self.expect_token(&Token::LParen)?;
|
||||||
let referred_columns = self.parse_column_names()?;
|
let referred_columns = self.parse_column_names()?;
|
||||||
self.expect_token(&Token::RParen)?;
|
self.expect_token(&Token::RParen)?;
|
||||||
|
@ -659,7 +659,7 @@ impl Parser {
|
||||||
pub fn parse_alter(&mut self) -> Result<SQLStatement, ParserError> {
|
pub fn parse_alter(&mut self) -> Result<SQLStatement, ParserError> {
|
||||||
self.expect_keyword("TABLE")?;
|
self.expect_keyword("TABLE")?;
|
||||||
let _ = self.parse_keyword("ONLY");
|
let _ = self.parse_keyword("ONLY");
|
||||||
let table_name = self.parse_tablename()?;
|
let table_name = self.parse_object_name()?;
|
||||||
let operation: Result<AlterOperation, ParserError> =
|
let operation: Result<AlterOperation, ParserError> =
|
||||||
if self.parse_keywords(vec!["ADD", "CONSTRAINT"]) {
|
if self.parse_keywords(vec!["ADD", "CONSTRAINT"]) {
|
||||||
match self.next_token() {
|
match self.next_token() {
|
||||||
|
@ -688,7 +688,7 @@ impl Parser {
|
||||||
|
|
||||||
/// Parse a copy statement
|
/// Parse a copy statement
|
||||||
pub fn parse_copy(&mut self) -> Result<SQLStatement, ParserError> {
|
pub fn parse_copy(&mut self) -> Result<SQLStatement, ParserError> {
|
||||||
let table_name = self.parse_tablename()?;
|
let table_name = self.parse_object_name()?;
|
||||||
let columns = if self.consume_token(&Token::LParen) {
|
let columns = if self.consume_token(&Token::LParen) {
|
||||||
let column_names = self.parse_column_names()?;
|
let column_names = self.parse_column_names()?;
|
||||||
self.expect_token(&Token::RParen)?;
|
self.expect_token(&Token::RParen)?;
|
||||||
|
@ -986,7 +986,7 @@ impl Parser {
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
self.prev_token();
|
self.prev_token();
|
||||||
let type_name = self.parse_tablename()?; // TODO: this actually reads a possibly schema-qualified name of a (custom) type
|
let type_name = self.parse_object_name()?;
|
||||||
Ok(SQLType::Custom(type_name))
|
Ok(SQLType::Custom(type_name))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1060,7 +1060,9 @@ impl Parser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn parse_tablename(&mut self) -> Result<SQLObjectName, ParserError> {
|
/// Parse a possibly qualified, possibly quoted identifier, e.g.
|
||||||
|
/// `foo` or `myschema."table"`
|
||||||
|
pub fn parse_object_name(&mut self) -> Result<SQLObjectName, ParserError> {
|
||||||
let identifier = self.parse_compound_identifier(&Token::Period)?;
|
let identifier = self.parse_compound_identifier(&Token::Period)?;
|
||||||
match identifier {
|
match identifier {
|
||||||
// TODO: should store the compound identifier itself
|
// TODO: should store the compound identifier itself
|
||||||
|
@ -1323,7 +1325,7 @@ impl Parser {
|
||||||
/// Parse an INSERT statement
|
/// Parse an INSERT statement
|
||||||
pub fn parse_insert(&mut self) -> Result<SQLStatement, ParserError> {
|
pub fn parse_insert(&mut self) -> Result<SQLStatement, ParserError> {
|
||||||
self.expect_keyword("INTO")?;
|
self.expect_keyword("INTO")?;
|
||||||
let table_name = self.parse_tablename()?;
|
let table_name = self.parse_object_name()?;
|
||||||
let columns = if self.consume_token(&Token::LParen) {
|
let columns = if self.consume_token(&Token::LParen) {
|
||||||
let column_names = self.parse_column_names()?;
|
let column_names = self.parse_column_names()?;
|
||||||
self.expect_token(&Token::RParen)?;
|
self.expect_token(&Token::RParen)?;
|
||||||
|
|
|
@ -99,14 +99,14 @@ fn parse_complex_insert() {
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_invalid_table_name() {
|
fn parse_invalid_table_name() {
|
||||||
let mut parser = parser("db.public..customer");
|
let mut parser = parser("db.public..customer");
|
||||||
let ast = parser.parse_tablename();
|
let ast = parser.parse_object_name();
|
||||||
assert!(ast.is_err());
|
assert!(ast.is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn parse_no_table_name() {
|
fn parse_no_table_name() {
|
||||||
let mut parser = parser("");
|
let mut parser = parser("");
|
||||||
let ast = parser.parse_tablename();
|
let ast = parser.parse_object_name();
|
||||||
assert!(ast.is_err());
|
assert!(ast.is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue