mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-08-22 15:04:04 +00:00
Enhance object name path segments (#1539)
This commit is contained in:
parent
fd6c98e933
commit
211b15e790
20 changed files with 584 additions and 466 deletions
|
@ -149,7 +149,7 @@ fn parse_flush() {
|
|||
read_lock: false,
|
||||
export: false,
|
||||
tables: vec![
|
||||
ObjectName(vec![
|
||||
ObjectName::from(vec![
|
||||
Ident {
|
||||
value: "mek".to_string(),
|
||||
quote_style: Some('`'),
|
||||
|
@ -161,7 +161,7 @@ fn parse_flush() {
|
|||
span: Span::empty(),
|
||||
}
|
||||
]),
|
||||
ObjectName(vec![Ident {
|
||||
ObjectName::from(vec![Ident {
|
||||
value: "table2".to_string(),
|
||||
quote_style: None,
|
||||
span: Span::empty(),
|
||||
|
@ -189,7 +189,7 @@ fn parse_flush() {
|
|||
read_lock: true,
|
||||
export: false,
|
||||
tables: vec![
|
||||
ObjectName(vec![
|
||||
ObjectName::from(vec![
|
||||
Ident {
|
||||
value: "mek".to_string(),
|
||||
quote_style: Some('`'),
|
||||
|
@ -201,7 +201,7 @@ fn parse_flush() {
|
|||
span: Span::empty(),
|
||||
}
|
||||
]),
|
||||
ObjectName(vec![Ident {
|
||||
ObjectName::from(vec![Ident {
|
||||
value: "table2".to_string(),
|
||||
quote_style: None,
|
||||
span: Span::empty(),
|
||||
|
@ -218,7 +218,7 @@ fn parse_flush() {
|
|||
read_lock: false,
|
||||
export: true,
|
||||
tables: vec![
|
||||
ObjectName(vec![
|
||||
ObjectName::from(vec![
|
||||
Ident {
|
||||
value: "mek".to_string(),
|
||||
quote_style: Some('`'),
|
||||
|
@ -230,7 +230,7 @@ fn parse_flush() {
|
|||
span: Span::empty(),
|
||||
}
|
||||
]),
|
||||
ObjectName(vec![Ident {
|
||||
ObjectName::from(vec![Ident {
|
||||
value: "table2".to_string(),
|
||||
quote_style: None,
|
||||
span: Span::empty(),
|
||||
|
@ -251,7 +251,7 @@ fn parse_show_columns() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mytable")])),
|
||||
parent_name: Some(ObjectName::from(vec![Ident::new("mytable")])),
|
||||
}),
|
||||
filter_position: None,
|
||||
limit_from: None,
|
||||
|
@ -269,7 +269,10 @@ fn parse_show_columns() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mydb"), Ident::new("mytable")])),
|
||||
parent_name: Some(ObjectName::from(vec![
|
||||
Ident::new("mydb"),
|
||||
Ident::new("mytable")
|
||||
])),
|
||||
}),
|
||||
filter_position: None,
|
||||
limit_from: None,
|
||||
|
@ -287,7 +290,7 @@ fn parse_show_columns() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mytable")])),
|
||||
parent_name: Some(ObjectName::from(vec![Ident::new("mytable")])),
|
||||
}),
|
||||
filter_position: None,
|
||||
limit_from: None,
|
||||
|
@ -305,7 +308,7 @@ fn parse_show_columns() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mytable")])),
|
||||
parent_name: Some(ObjectName::from(vec![Ident::new("mytable")])),
|
||||
}),
|
||||
filter_position: None,
|
||||
limit_from: None,
|
||||
|
@ -323,7 +326,7 @@ fn parse_show_columns() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mytable")])),
|
||||
parent_name: Some(ObjectName::from(vec![Ident::new("mytable")])),
|
||||
}),
|
||||
filter_position: Some(ShowStatementFilterPosition::Suffix(
|
||||
ShowStatementFilter::Like("pattern".into())
|
||||
|
@ -343,7 +346,7 @@ fn parse_show_columns() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mytable")])),
|
||||
parent_name: Some(ObjectName::from(vec![Ident::new("mytable")])),
|
||||
}),
|
||||
filter_position: Some(ShowStatementFilterPosition::Suffix(
|
||||
ShowStatementFilter::Where(mysql_and_generic().verified_expr("1 = 2"))
|
||||
|
@ -430,7 +433,7 @@ fn parse_show_tables() {
|
|||
show_in: Some(ShowStatementIn {
|
||||
clause: ShowStatementInClause::FROM,
|
||||
parent_type: None,
|
||||
parent_name: Some(ObjectName(vec![Ident::new("mydb")])),
|
||||
parent_name: Some(ObjectName::from(vec![Ident::new("mydb")])),
|
||||
}),
|
||||
filter_position: None
|
||||
}
|
||||
|
@ -534,7 +537,7 @@ fn parse_show_extended_full() {
|
|||
|
||||
#[test]
|
||||
fn parse_show_create() {
|
||||
let obj_name = ObjectName(vec![Ident::new("myident")]);
|
||||
let obj_name = ObjectName::from(vec![Ident::new("myident")]);
|
||||
|
||||
for obj_type in &[
|
||||
ShowCreateObject::Table,
|
||||
|
@ -591,7 +594,7 @@ fn parse_use() {
|
|||
// Test single identifier without quotes
|
||||
assert_eq!(
|
||||
mysql_and_generic().verified_stmt(&format!("USE {}", object_name)),
|
||||
Statement::Use(Use::Object(ObjectName(vec![Ident::new(
|
||||
Statement::Use(Use::Object(ObjectName::from(vec![Ident::new(
|
||||
object_name.to_string()
|
||||
)])))
|
||||
);
|
||||
|
@ -600,7 +603,7 @@ fn parse_use() {
|
|||
assert_eq!(
|
||||
mysql_and_generic()
|
||||
.verified_stmt(&format!("USE {}{}{}", quote, object_name, quote)),
|
||||
Statement::Use(Use::Object(ObjectName(vec![Ident::with_quote(
|
||||
Statement::Use(Use::Object(ObjectName::from(vec![Ident::with_quote(
|
||||
quote,
|
||||
object_name.to_string(),
|
||||
)])))
|
||||
|
@ -617,7 +620,7 @@ fn parse_set_variables() {
|
|||
Statement::SetVariable {
|
||||
local: true,
|
||||
hivevar: false,
|
||||
variables: OneOrManyWithParens::One(ObjectName(vec!["autocommit".into()])),
|
||||
variables: OneOrManyWithParens::One(ObjectName::from(vec!["autocommit".into()])),
|
||||
value: vec![Expr::Value(number("1"))],
|
||||
}
|
||||
);
|
||||
|
@ -1017,7 +1020,7 @@ fn parse_create_table_comment_character_set() {
|
|||
options: vec![
|
||||
ColumnOptionDef {
|
||||
name: None,
|
||||
option: ColumnOption::CharacterSet(ObjectName(vec![Ident::new(
|
||||
option: ColumnOption::CharacterSet(ObjectName::from(vec![Ident::new(
|
||||
"utf8mb4"
|
||||
)]))
|
||||
},
|
||||
|
@ -1413,7 +1416,7 @@ fn parse_simple_insert() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("tasks")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("tasks")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::new("title"), Ident::new("priority")], columns);
|
||||
|
@ -1471,7 +1474,7 @@ fn parse_ignore_insert() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("tasks")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("tasks")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::new("title"), Ident::new("priority")], columns);
|
||||
|
@ -1518,7 +1521,7 @@ fn parse_priority_insert() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("tasks")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("tasks")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::new("title"), Ident::new("priority")], columns);
|
||||
|
@ -1562,7 +1565,7 @@ fn parse_priority_insert() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("tasks")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("tasks")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::new("title"), Ident::new("priority")], columns);
|
||||
|
@ -1607,14 +1610,14 @@ fn parse_insert_as() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::with_quote('`', "table")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::with_quote('`', "table")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::with_quote('`', "date")], columns);
|
||||
let insert_alias = insert_alias.unwrap();
|
||||
|
||||
assert_eq!(
|
||||
ObjectName(vec![Ident::with_quote('`', "alias")]),
|
||||
ObjectName::from(vec![Ident::with_quote('`', "alias")]),
|
||||
insert_alias.row_alias
|
||||
);
|
||||
assert_eq!(Some(vec![]), insert_alias.col_aliases);
|
||||
|
@ -1659,7 +1662,7 @@ fn parse_insert_as() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::with_quote('`', "table")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::with_quote('`', "table")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(
|
||||
|
@ -1668,7 +1671,7 @@ fn parse_insert_as() {
|
|||
);
|
||||
let insert_alias = insert_alias.unwrap();
|
||||
assert_eq!(
|
||||
ObjectName(vec![Ident::with_quote('`', "alias")]),
|
||||
ObjectName::from(vec![Ident::with_quote('`', "alias")]),
|
||||
insert_alias.row_alias
|
||||
);
|
||||
assert_eq!(
|
||||
|
@ -1719,7 +1722,7 @@ fn parse_replace_insert() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("tasks")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("tasks")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::new("title"), Ident::new("priority")], columns);
|
||||
|
@ -1766,7 +1769,7 @@ fn parse_empty_row_insert() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("tb")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("tb")])),
|
||||
table_name
|
||||
);
|
||||
assert!(columns.is_empty());
|
||||
|
@ -1808,7 +1811,7 @@ fn parse_insert_with_on_duplicate_update() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("permission_groups")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("permission_groups")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(
|
||||
|
@ -1855,31 +1858,31 @@ fn parse_insert_with_on_duplicate_update() {
|
|||
assert_eq!(
|
||||
Some(OnInsert::DuplicateKeyUpdate(vec![
|
||||
Assignment {
|
||||
target: AssignmentTarget::ColumnName(ObjectName(vec![Ident::new(
|
||||
target: AssignmentTarget::ColumnName(ObjectName::from(vec![Ident::new(
|
||||
"description".to_string()
|
||||
)])),
|
||||
value: call("VALUES", [Expr::Identifier(Ident::new("description"))]),
|
||||
},
|
||||
Assignment {
|
||||
target: AssignmentTarget::ColumnName(ObjectName(vec![Ident::new(
|
||||
target: AssignmentTarget::ColumnName(ObjectName::from(vec![Ident::new(
|
||||
"perm_create".to_string()
|
||||
)])),
|
||||
value: call("VALUES", [Expr::Identifier(Ident::new("perm_create"))]),
|
||||
},
|
||||
Assignment {
|
||||
target: AssignmentTarget::ColumnName(ObjectName(vec![Ident::new(
|
||||
target: AssignmentTarget::ColumnName(ObjectName::from(vec![Ident::new(
|
||||
"perm_read".to_string()
|
||||
)])),
|
||||
value: call("VALUES", [Expr::Identifier(Ident::new("perm_read"))]),
|
||||
},
|
||||
Assignment {
|
||||
target: AssignmentTarget::ColumnName(ObjectName(vec![Ident::new(
|
||||
target: AssignmentTarget::ColumnName(ObjectName::from(vec![Ident::new(
|
||||
"perm_update".to_string()
|
||||
)])),
|
||||
value: call("VALUES", [Expr::Identifier(Ident::new("perm_update"))]),
|
||||
},
|
||||
Assignment {
|
||||
target: AssignmentTarget::ColumnName(ObjectName(vec![Ident::new(
|
||||
target: AssignmentTarget::ColumnName(ObjectName::from(vec![Ident::new(
|
||||
"perm_delete".to_string()
|
||||
)])),
|
||||
value: call("VALUES", [Expr::Identifier(Ident::new("perm_delete"))]),
|
||||
|
@ -1910,7 +1913,7 @@ fn parse_select_with_numeric_prefix_column_name() {
|
|||
)))],
|
||||
into: None,
|
||||
from: vec![TableWithJoins {
|
||||
relation: table_from_name(ObjectName(vec![Ident::with_quote(
|
||||
relation: table_from_name(ObjectName::from(vec![Ident::with_quote(
|
||||
'"', "table"
|
||||
)])),
|
||||
joins: vec![]
|
||||
|
@ -1962,7 +1965,7 @@ fn parse_select_with_concatenation_of_exp_number_and_numeric_prefix_column() {
|
|||
],
|
||||
into: None,
|
||||
from: vec![TableWithJoins {
|
||||
relation: table_from_name(ObjectName(vec![Ident::with_quote(
|
||||
relation: table_from_name(ObjectName::from(vec![Ident::with_quote(
|
||||
'"', "table"
|
||||
)])),
|
||||
joins: vec![]
|
||||
|
@ -1997,7 +2000,7 @@ fn parse_insert_with_numeric_prefix_column_name() {
|
|||
..
|
||||
}) => {
|
||||
assert_eq!(
|
||||
TableObject::TableName(ObjectName(vec![Ident::new("s1"), Ident::new("t1")])),
|
||||
TableObject::TableName(ObjectName::from(vec![Ident::new("s1"), Ident::new("t1")])),
|
||||
table_name
|
||||
);
|
||||
assert_eq!(vec![Ident::new("123col_$@length123")], columns);
|
||||
|
@ -2021,7 +2024,7 @@ fn parse_update_with_joins() {
|
|||
assert_eq!(
|
||||
TableWithJoins {
|
||||
relation: TableFactor::Table {
|
||||
name: ObjectName(vec![Ident::new("orders")]),
|
||||
name: ObjectName::from(vec![Ident::new("orders")]),
|
||||
alias: Some(TableAlias {
|
||||
name: Ident::new("o"),
|
||||
columns: vec![]
|
||||
|
@ -2036,7 +2039,7 @@ fn parse_update_with_joins() {
|
|||
},
|
||||
joins: vec![Join {
|
||||
relation: TableFactor::Table {
|
||||
name: ObjectName(vec![Ident::new("customers")]),
|
||||
name: ObjectName::from(vec![Ident::new("customers")]),
|
||||
alias: Some(TableAlias {
|
||||
name: Ident::new("c"),
|
||||
columns: vec![]
|
||||
|
@ -2067,7 +2070,7 @@ fn parse_update_with_joins() {
|
|||
);
|
||||
assert_eq!(
|
||||
vec![Assignment {
|
||||
target: AssignmentTarget::ColumnName(ObjectName(vec![
|
||||
target: AssignmentTarget::ColumnName(ObjectName::from(vec![
|
||||
Ident::new("o"),
|
||||
Ident::new("completed")
|
||||
])),
|
||||
|
@ -2255,7 +2258,7 @@ fn parse_alter_table_drop_primary_key() {
|
|||
|
||||
#[test]
|
||||
fn parse_alter_table_change_column() {
|
||||
let expected_name = ObjectName(vec![Ident::new("orders")]);
|
||||
let expected_name = ObjectName::from(vec![Ident::new("orders")]);
|
||||
let expected_operation = AlterTableOperation::ChangeColumn {
|
||||
old_name: Ident::new("description"),
|
||||
new_name: Ident::new("desc"),
|
||||
|
@ -2307,7 +2310,7 @@ fn parse_alter_table_change_column() {
|
|||
|
||||
#[test]
|
||||
fn parse_alter_table_change_column_with_column_position() {
|
||||
let expected_name = ObjectName(vec![Ident::new("orders")]);
|
||||
let expected_name = ObjectName::from(vec![Ident::new("orders")]);
|
||||
let expected_operation_first = AlterTableOperation::ChangeColumn {
|
||||
old_name: Ident::new("description"),
|
||||
new_name: Ident::new("desc"),
|
||||
|
@ -2355,7 +2358,7 @@ fn parse_alter_table_change_column_with_column_position() {
|
|||
|
||||
#[test]
|
||||
fn parse_alter_table_modify_column() {
|
||||
let expected_name = ObjectName(vec![Ident::new("orders")]);
|
||||
let expected_name = ObjectName::from(vec![Ident::new("orders")]);
|
||||
let expected_operation = AlterTableOperation::ModifyColumn {
|
||||
col_name: Ident::new("description"),
|
||||
data_type: DataType::Text,
|
||||
|
@ -2404,7 +2407,7 @@ fn parse_alter_table_modify_column() {
|
|||
|
||||
#[test]
|
||||
fn parse_alter_table_modify_column_with_column_position() {
|
||||
let expected_name = ObjectName(vec![Ident::new("orders")]);
|
||||
let expected_name = ObjectName::from(vec![Ident::new("orders")]);
|
||||
let expected_operation_first = AlterTableOperation::ModifyColumn {
|
||||
col_name: Ident::new("description"),
|
||||
data_type: DataType::Text,
|
||||
|
@ -2478,7 +2481,7 @@ fn parse_substring_in_select() {
|
|||
})],
|
||||
into: None,
|
||||
from: vec![TableWithJoins {
|
||||
relation: table_from_name(ObjectName(vec![Ident {
|
||||
relation: table_from_name(ObjectName::from(vec![Ident {
|
||||
value: "test".to_string(),
|
||||
quote_style: None,
|
||||
span: Span::empty(),
|
||||
|
@ -2873,10 +2876,12 @@ fn parse_create_table_with_column_collate() {
|
|||
vec![ColumnDef {
|
||||
name: Ident::new("id"),
|
||||
data_type: DataType::Text,
|
||||
collation: Some(ObjectName(vec![Ident::new("utf8mb4_0900_ai_ci")])),
|
||||
collation: Some(ObjectName::from(vec![Ident::new("utf8mb4_0900_ai_ci")])),
|
||||
options: vec![ColumnOptionDef {
|
||||
name: None,
|
||||
option: ColumnOption::CharacterSet(ObjectName(vec![Ident::new("utf8mb4")]))
|
||||
option: ColumnOption::CharacterSet(ObjectName::from(vec![Ident::new(
|
||||
"utf8mb4"
|
||||
)]))
|
||||
}],
|
||||
},],
|
||||
columns
|
||||
|
@ -3039,7 +3044,7 @@ fn parse_grant() {
|
|||
);
|
||||
assert_eq!(
|
||||
objects,
|
||||
GrantObjects::Tables(vec![ObjectName(vec!["*".into(), "*".into()])])
|
||||
GrantObjects::Tables(vec![ObjectName::from(vec!["*".into(), "*".into()])])
|
||||
);
|
||||
assert!(!with_grant_option);
|
||||
assert!(granted_by.is_none());
|
||||
|
@ -3080,7 +3085,7 @@ fn parse_revoke() {
|
|||
);
|
||||
assert_eq!(
|
||||
objects,
|
||||
GrantObjects::Tables(vec![ObjectName(vec!["db1".into(), "*".into()])])
|
||||
GrantObjects::Tables(vec![ObjectName::from(vec!["db1".into(), "*".into()])])
|
||||
);
|
||||
if let [Grantee {
|
||||
grantee_type: GranteesType::None,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue