Enhance object name path segments (#1539)

This commit is contained in:
Ayman Elkfrawy 2025-01-26 06:13:51 -08:00 committed by GitHub
parent fd6c98e933
commit 211b15e790
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
20 changed files with 584 additions and 466 deletions

View file

@ -63,7 +63,7 @@ fn parse_table_time_travel() {
select.from,
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t1")]),
name: ObjectName::from(vec![Ident::new("t1")]),
alias: None,
args: None,
with_hints: vec![],
@ -159,7 +159,7 @@ fn parse_create_procedure() {
}))
}
]),
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test".into(),
quote_style: None,
span: Span::empty(),
@ -211,7 +211,7 @@ fn parse_mssql_openjson() {
assert_eq!(
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t_test_table")]),
name: ObjectName::from(vec![Ident::new("t_test_table")]),
alias: Some(TableAlias {
name: Ident::new("A"),
columns: vec![]
@ -270,7 +270,7 @@ fn parse_mssql_openjson() {
assert_eq!(
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t_test_table"),]),
name: ObjectName::from(vec![Ident::new("t_test_table"),]),
alias: Some(TableAlias {
name: Ident::new("A"),
columns: vec![]
@ -329,8 +329,7 @@ fn parse_mssql_openjson() {
assert_eq!(
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t_test_table")]),
name: ObjectName::from(vec![Ident::new("t_test_table")]),
alias: Some(TableAlias {
name: Ident::new("A"),
columns: vec![]
@ -389,7 +388,7 @@ fn parse_mssql_openjson() {
assert_eq!(
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t_test_table")]),
name: ObjectName::from(vec![Ident::new("t_test_table")]),
alias: Some(TableAlias {
name: Ident::new("A"),
columns: vec![]
@ -428,7 +427,7 @@ fn parse_mssql_openjson() {
assert_eq!(
vec![TableWithJoins {
relation: TableFactor::Table {
name: ObjectName(vec![Ident::new("t_test_table")]),
name: ObjectName::from(vec![Ident::new("t_test_table")]),
alias: Some(TableAlias {
name: Ident::new("A"),
columns: vec![]
@ -532,7 +531,7 @@ fn parse_mssql_create_role() {
assert_eq_vec(&["mssql"], &names);
assert_eq!(
authorization_owner,
Some(ObjectName(vec![Ident {
Some(ObjectName::from(vec![Ident {
value: "helena".into(),
quote_style: None,
span: Span::empty(),
@ -619,7 +618,10 @@ fn parse_delimited_identifiers() {
version,
..
} => {
assert_eq!(vec![Ident::with_quote('"', "a table")], name.0);
assert_eq!(
ObjectName::from(vec![Ident::with_quote('"', "a table")]),
name
);
assert_eq!(Ident::with_quote('"', "alias"), alias.unwrap().name);
assert!(args.is_none());
assert!(with_hints.is_empty());
@ -638,7 +640,7 @@ fn parse_delimited_identifiers() {
);
assert_eq!(
&Expr::Function(Function {
name: ObjectName(vec![Ident::with_quote('"', "myfun")]),
name: ObjectName::from(vec![Ident::with_quote('"', "myfun")]),
uses_odbc_syntax: false,
parameters: FunctionArguments::None,
args: FunctionArguments::List(FunctionArgumentList {
@ -671,11 +673,11 @@ fn parse_table_name_in_square_brackets() {
let select = ms().verified_only_select(r#"SELECT [a column] FROM [a schema].[a table]"#);
if let TableFactor::Table { name, .. } = only(select.from).relation {
assert_eq!(
vec![
ObjectName::from(vec![
Ident::with_quote('[', "a schema"),
Ident::with_quote('[', "a table")
],
name.0
]),
name
);
} else {
panic!("Expecting TableFactor::Table");
@ -1086,7 +1088,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(),
@ -1204,7 +1206,7 @@ fn parse_mssql_declare() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![Ident::new("@bar")])),
variables: OneOrManyWithParens::One(ObjectName::from(vec![Ident::new("@bar")])),
value: vec![Expr::Value(Value::Number("2".parse().unwrap(), false))],
},
Statement::Query(Box::new(Query {
@ -1298,7 +1300,7 @@ fn parse_use() {
// Test single identifier without quotes
assert_eq!(
ms().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()
)])))
);
@ -1306,7 +1308,7 @@ fn parse_use() {
// Test single identifier with different type of quotes
assert_eq!(
ms().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(),
)])))
@ -1408,7 +1410,7 @@ fn parse_create_table_with_valid_options() {
},
value: Expr::Function(
Function {
name: ObjectName(
name: ObjectName::from(
vec![
Ident {
value: "HASH".to_string(),
@ -1472,7 +1474,7 @@ fn parse_create_table_with_valid_options() {
if_not_exists: false,
transient: false,
volatile: false,
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "mytable".to_string(),
quote_style: None,
span: Span::empty(),
@ -1648,7 +1650,7 @@ fn parse_create_table_with_identity_column() {
transient: false,
volatile: false,
iceberg: false,
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "mytable".to_string(),
quote_style: None,
span: Span::empty(),