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

@ -402,7 +402,7 @@ fn parse_create_table_with_defaults() {
unit: None
}
)),
collation: Some(ObjectName(vec![Ident::with_quote('"', "es_ES")])),
collation: Some(ObjectName::from(vec![Ident::with_quote('"', "es_ES")])),
options: vec![ColumnOptionDef {
name: None,
option: ColumnOption::NotNull,
@ -1040,7 +1040,7 @@ fn test_copy_from() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: false,
@ -1058,7 +1058,7 @@ fn test_copy_from() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: false,
@ -1076,7 +1076,7 @@ fn test_copy_from() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: false,
@ -1100,7 +1100,7 @@ fn test_copy_to() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: true,
@ -1118,7 +1118,7 @@ fn test_copy_to() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: true,
@ -1136,7 +1136,7 @@ fn test_copy_to() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: true,
@ -1177,7 +1177,7 @@ fn parse_copy_from() {
pg_and_generic().one_statement_parses_to(sql, ""),
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["table".into()]),
table_name: ObjectName::from(vec!["table".into()]),
columns: vec!["a".into(), "b".into()],
},
to: false,
@ -1223,7 +1223,7 @@ fn parse_copy_to() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: true,
@ -1241,7 +1241,7 @@ fn parse_copy_to() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["country".into()]),
table_name: ObjectName::from(vec!["country".into()]),
columns: vec![],
},
to: true,
@ -1258,7 +1258,7 @@ fn parse_copy_to() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["country".into()]),
table_name: ObjectName::from(vec!["country".into()]),
columns: vec![],
},
to: true,
@ -1344,7 +1344,7 @@ fn parse_copy_from_before_v9_0() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: false,
@ -1373,7 +1373,7 @@ fn parse_copy_from_before_v9_0() {
pg_and_generic().one_statement_parses_to(sql, ""),
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: false,
@ -1401,7 +1401,7 @@ fn parse_copy_to_before_v9_0() {
stmt,
Statement::Copy {
source: CopySource::Table {
table_name: ObjectName(vec!["users".into()]),
table_name: ObjectName::from(vec!["users".into()]),
columns: vec![],
},
to: true,
@ -1433,7 +1433,7 @@ fn parse_set() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![Ident::new("a")])),
variables: OneOrManyWithParens::One(ObjectName::from(vec![Ident::new("a")])),
value: vec![Expr::Identifier(Ident {
value: "b".into(),
quote_style: None,
@ -1448,7 +1448,7 @@ fn parse_set() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![Ident::new("a")])),
variables: OneOrManyWithParens::One(ObjectName::from(vec![Ident::new("a")])),
value: vec![Expr::Value(Value::SingleQuotedString("b".into()))],
}
);
@ -1459,7 +1459,7 @@ fn parse_set() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![Ident::new("a")])),
variables: OneOrManyWithParens::One(ObjectName::from(vec![Ident::new("a")])),
value: vec![Expr::Value(number("0"))],
}
);
@ -1470,7 +1470,7 @@ fn parse_set() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![Ident::new("a")])),
variables: OneOrManyWithParens::One(ObjectName::from(vec![Ident::new("a")])),
value: vec![Expr::Identifier(Ident::new("DEFAULT"))],
}
);
@ -1481,7 +1481,7 @@ fn parse_set() {
Statement::SetVariable {
local: true,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![Ident::new("a")])),
variables: OneOrManyWithParens::One(ObjectName::from(vec![Ident::new("a")])),
value: vec![Expr::Identifier("b".into())],
}
);
@ -1492,7 +1492,7 @@ fn parse_set() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![
variables: OneOrManyWithParens::One(ObjectName::from(vec![
Ident::new("a"),
Ident::new("b"),
Ident::new("c")
@ -1514,7 +1514,7 @@ fn parse_set() {
Statement::SetVariable {
local: false,
hivevar: false,
variables: OneOrManyWithParens::One(ObjectName(vec![
variables: OneOrManyWithParens::One(ObjectName::from(vec![
Ident::new("hive"),
Ident::new("tez"),
Ident::new("auto"),
@ -1658,7 +1658,7 @@ fn parse_execute() {
assert_eq!(
stmt,
Statement::Execute {
name: ObjectName(vec!["a".into()]),
name: ObjectName::from(vec!["a".into()]),
parameters: vec![],
has_parentheses: false,
using: vec![]
@ -1669,7 +1669,7 @@ fn parse_execute() {
assert_eq!(
stmt,
Statement::Execute {
name: ObjectName(vec!["a".into()]),
name: ObjectName::from(vec!["a".into()]),
parameters: vec![
Expr::Value(number("1")),
Expr::Value(Value::SingleQuotedString("t".to_string()))
@ -1684,7 +1684,7 @@ fn parse_execute() {
assert_eq!(
stmt,
Statement::Execute {
name: ObjectName(vec!["a".into()]),
name: ObjectName::from(vec!["a".into()]),
parameters: vec![],
has_parentheses: false,
using: vec![
@ -1793,7 +1793,9 @@ fn parse_pg_on_conflict() {
assert_eq!(
OnConflictAction::DoUpdate(DoUpdate {
assignments: vec![Assignment {
target: AssignmentTarget::ColumnName(ObjectName(vec!["dname".into()])),
target: AssignmentTarget::ColumnName(ObjectName::from(
vec!["dname".into()]
)),
value: Expr::CompoundIdentifier(vec!["EXCLUDED".into(), "dname".into()])
},],
selection: None
@ -1824,14 +1826,18 @@ fn parse_pg_on_conflict() {
OnConflictAction::DoUpdate(DoUpdate {
assignments: vec![
Assignment {
target: AssignmentTarget::ColumnName(ObjectName(vec!["dname".into()])),
target: AssignmentTarget::ColumnName(ObjectName::from(vec![
"dname".into()
])),
value: Expr::CompoundIdentifier(vec![
"EXCLUDED".into(),
"dname".into()
])
},
Assignment {
target: AssignmentTarget::ColumnName(ObjectName(vec!["area".into()])),
target: AssignmentTarget::ColumnName(ObjectName::from(vec![
"area".into()
])),
value: Expr::CompoundIdentifier(vec!["EXCLUDED".into(), "area".into()])
},
],
@ -1881,7 +1887,9 @@ fn parse_pg_on_conflict() {
assert_eq!(
OnConflictAction::DoUpdate(DoUpdate {
assignments: vec![Assignment {
target: AssignmentTarget::ColumnName(ObjectName(vec!["dname".into()])),
target: AssignmentTarget::ColumnName(ObjectName::from(
vec!["dname".into()]
)),
value: Expr::Value(Value::Placeholder("$1".to_string()))
},],
selection: Some(Expr::BinaryOp {
@ -1915,11 +1923,16 @@ fn parse_pg_on_conflict() {
})),
..
}) => {
assert_eq!(vec![Ident::from("distributors_did_pkey")], cname.0);
assert_eq!(
ObjectName::from(vec![Ident::from("distributors_did_pkey")]),
cname
);
assert_eq!(
OnConflictAction::DoUpdate(DoUpdate {
assignments: vec![Assignment {
target: AssignmentTarget::ColumnName(ObjectName(vec!["dname".into()])),
target: AssignmentTarget::ColumnName(ObjectName::from(
vec!["dname".into()]
)),
value: Expr::Value(Value::Placeholder("$1".to_string()))
},],
selection: Some(Expr::BinaryOp {
@ -2624,7 +2637,7 @@ fn parse_array_subquery_expr() {
let select = pg().verified_only_select(sql);
assert_eq!(
&Expr::Function(Function {
name: ObjectName(vec![Ident::new("ARRAY")]),
name: ObjectName::from(vec![Ident::new("ARRAY")]),
uses_odbc_syntax: false,
parameters: FunctionArguments::None,
args: FunctionArguments::Subquery(Box::new(Query {
@ -2963,7 +2976,10 @@ fn parse_json_table_is_not_reserved() {
TableFactor::Table {
name: ObjectName(name),
..
} => assert_eq!("JSON_TABLE", name[0].value),
} => assert_eq!(
ObjectNamePart::Identifier(Ident::new("JSON_TABLE")),
name[0]
),
other => panic!("Expected: JSON_TABLE to be parsed as a table name, but got {other:?}"),
}
}
@ -3004,7 +3020,7 @@ fn test_composite_value() {
SelectItem::UnnamedExpr(Expr::CompositeAccess {
key: Ident::new("n"),
expr: Box::new(Expr::Nested(Box::new(Expr::Function(Function {
name: ObjectName(vec![
name: ObjectName::from(vec![
Ident::new("information_schema"),
Ident::new("_pg_expandarray")
]),
@ -3185,7 +3201,7 @@ fn parse_current_functions() {
let select = pg_and_generic().verified_only_select(sql);
assert_eq!(
&Expr::Function(Function {
name: ObjectName(vec![Ident::new("CURRENT_CATALOG")]),
name: ObjectName::from(vec![Ident::new("CURRENT_CATALOG")]),
uses_odbc_syntax: false,
parameters: FunctionArguments::None,
args: FunctionArguments::None,
@ -3198,7 +3214,7 @@ fn parse_current_functions() {
);
assert_eq!(
&Expr::Function(Function {
name: ObjectName(vec![Ident::new("CURRENT_USER")]),
name: ObjectName::from(vec![Ident::new("CURRENT_USER")]),
uses_odbc_syntax: false,
parameters: FunctionArguments::None,
args: FunctionArguments::None,
@ -3211,7 +3227,7 @@ fn parse_current_functions() {
);
assert_eq!(
&Expr::Function(Function {
name: ObjectName(vec![Ident::new("SESSION_USER")]),
name: ObjectName::from(vec![Ident::new("SESSION_USER")]),
uses_odbc_syntax: false,
parameters: FunctionArguments::None,
args: FunctionArguments::None,
@ -3224,7 +3240,7 @@ fn parse_current_functions() {
);
assert_eq!(
&Expr::Function(Function {
name: ObjectName(vec![Ident::new("USER")]),
name: ObjectName::from(vec![Ident::new("USER")]),
uses_odbc_syntax: false,
parameters: FunctionArguments::None,
args: FunctionArguments::None,
@ -3536,7 +3552,7 @@ fn parse_alter_role() {
span: Span::empty(),
},
operation: AlterRoleOperation::Set {
config_name: ObjectName(vec![Ident {
config_name: ObjectName::from(vec![Ident {
value: "maintenance_work_mem".into(),
quote_style: None,
span: Span::empty(),
@ -3557,13 +3573,13 @@ fn parse_alter_role() {
span: Span::empty(),
},
operation: AlterRoleOperation::Set {
config_name: ObjectName(vec![Ident {
config_name: ObjectName::from(vec![Ident {
value: "maintenance_work_mem".into(),
quote_style: None,
span: Span::empty(),
}]),
config_value: SetConfigValue::Value(Expr::Value(number("100000"))),
in_database: Some(ObjectName(vec![Ident {
in_database: Some(ObjectName::from(vec![Ident {
value: "database_name".into(),
quote_style: None,
span: Span::empty(),
@ -3582,13 +3598,13 @@ fn parse_alter_role() {
span: Span::empty(),
},
operation: AlterRoleOperation::Set {
config_name: ObjectName(vec![Ident {
config_name: ObjectName::from(vec![Ident {
value: "maintenance_work_mem".into(),
quote_style: None,
span: Span::empty(),
}]),
config_value: SetConfigValue::Value(Expr::Value(number("100000"))),
in_database: Some(ObjectName(vec![Ident {
in_database: Some(ObjectName::from(vec![Ident {
value: "database_name".into(),
quote_style: None,
span: Span::empty(),
@ -3607,13 +3623,13 @@ fn parse_alter_role() {
span: Span::empty(),
},
operation: AlterRoleOperation::Set {
config_name: ObjectName(vec![Ident {
config_name: ObjectName::from(vec![Ident {
value: "maintenance_work_mem".into(),
quote_style: None,
span: Span::empty(),
}]),
config_value: SetConfigValue::Default,
in_database: Some(ObjectName(vec![Ident {
in_database: Some(ObjectName::from(vec![Ident {
value: "database_name".into(),
quote_style: None,
span: Span::empty(),
@ -3648,12 +3664,12 @@ fn parse_alter_role() {
span: Span::empty(),
},
operation: AlterRoleOperation::Reset {
config_name: ResetConfig::ConfigName(ObjectName(vec![Ident {
config_name: ResetConfig::ConfigName(ObjectName::from(vec![Ident {
value: "maintenance_work_mem".into(),
quote_style: None,
span: Span::empty(),
}])),
in_database: Some(ObjectName(vec![Ident {
in_database: Some(ObjectName::from(vec![Ident {
value: "database_name".into(),
quote_style: None,
span: Span::empty(),
@ -3679,7 +3695,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());
@ -3698,7 +3717,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 {
@ -3754,7 +3773,7 @@ fn parse_create_function() {
Statement::CreateFunction(CreateFunction {
or_replace: false,
temporary: false,
name: ObjectName(vec![Ident::new("add")]),
name: ObjectName::from(vec![Ident::new("add")]),
args: Some(vec![
OperateFunctionArg::unnamed(DataType::Integer(None)),
OperateFunctionArg::unnamed(DataType::Integer(None)),
@ -3798,7 +3817,7 @@ fn parse_drop_function() {
Statement::DropFunction {
if_exists: true,
func_desc: vec![FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_func".to_string(),
quote_style: None,
span: Span::empty(),
@ -3815,7 +3834,7 @@ fn parse_drop_function() {
Statement::DropFunction {
if_exists: true,
func_desc: vec![FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_func".to_string(),
quote_style: None,
span: Span::empty(),
@ -3841,7 +3860,7 @@ fn parse_drop_function() {
if_exists: true,
func_desc: vec![
FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_func1".to_string(),
quote_style: None,
span: Span::empty(),
@ -3860,7 +3879,7 @@ fn parse_drop_function() {
]),
},
FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_func2".to_string(),
quote_style: None,
span: Span::empty(),
@ -3892,7 +3911,7 @@ fn parse_drop_procedure() {
Statement::DropProcedure {
if_exists: true,
proc_desc: vec![FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_proc".to_string(),
quote_style: None,
span: Span::empty(),
@ -3909,7 +3928,7 @@ fn parse_drop_procedure() {
Statement::DropProcedure {
if_exists: true,
proc_desc: vec![FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_proc".to_string(),
quote_style: None,
span: Span::empty(),
@ -3935,7 +3954,7 @@ fn parse_drop_procedure() {
if_exists: true,
proc_desc: vec![
FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_proc1".to_string(),
quote_style: None,
span: Span::empty(),
@ -3954,7 +3973,7 @@ fn parse_drop_procedure() {
]),
},
FunctionDesc {
name: ObjectName(vec![Ident {
name: ObjectName::from(vec![Ident {
value: "test_proc2".to_string(),
quote_style: None,
span: Span::empty(),
@ -4136,7 +4155,7 @@ fn parse_select_group_by_cube() {
#[test]
fn parse_truncate() {
let truncate = pg_and_generic().verified_stmt("TRUNCATE db.table_name");
let table_name = ObjectName(vec![Ident::new("db"), Ident::new("table_name")]);
let table_name = ObjectName::from(vec![Ident::new("db"), Ident::new("table_name")]);
let table_names = vec![TruncateTableTarget {
name: table_name.clone(),
}];
@ -4159,7 +4178,7 @@ fn parse_truncate_with_options() {
let truncate = pg_and_generic()
.verified_stmt("TRUNCATE TABLE ONLY db.table_name RESTART IDENTITY CASCADE");
let table_name = ObjectName(vec![Ident::new("db"), Ident::new("table_name")]);
let table_name = ObjectName::from(vec![Ident::new("db"), Ident::new("table_name")]);
let table_names = vec![TruncateTableTarget {
name: table_name.clone(),
}];
@ -4184,8 +4203,8 @@ fn parse_truncate_with_table_list() {
"TRUNCATE TABLE db.table_name, db.other_table_name RESTART IDENTITY CASCADE",
);
let table_name_a = ObjectName(vec![Ident::new("db"), Ident::new("table_name")]);
let table_name_b = ObjectName(vec![Ident::new("db"), Ident::new("other_table_name")]);
let table_name_a = ObjectName::from(vec![Ident::new("db"), Ident::new("table_name")]);
let table_name_b = ObjectName::from(vec![Ident::new("db"), Ident::new("other_table_name")]);
let table_names = vec![
TruncateTableTarget {
@ -4381,7 +4400,7 @@ fn test_simple_postgres_insert_with_alias() {
or: None,
ignore: false,
into: true,
table: TableObject::TableName(ObjectName(vec![Ident {
table: TableObject::TableName(ObjectName::from(vec![Ident {
value: "test_tables".to_string(),
quote_style: None,
span: Span::empty(),
@ -4451,7 +4470,7 @@ fn test_simple_postgres_insert_with_alias() {
or: None,
ignore: false,
into: true,
table: TableObject::TableName(ObjectName(vec![Ident {
table: TableObject::TableName(ObjectName::from(vec![Ident {
value: "test_tables".to_string(),
quote_style: None,
span: Span::empty(),
@ -4523,7 +4542,7 @@ fn test_simple_insert_with_quoted_alias() {
or: None,
ignore: false,
into: true,
table: TableObject::TableName(ObjectName(vec![Ident {
table: TableObject::TableName(ObjectName::from(vec![Ident {
value: "test_tables".to_string(),
quote_style: None,
span: Span::empty(),
@ -4720,10 +4739,10 @@ fn parse_create_simple_before_insert_trigger() {
let expected = Statement::CreateTrigger {
or_replace: false,
is_constraint: false,
name: ObjectName(vec![Ident::new("check_insert")]),
name: ObjectName::from(vec![Ident::new("check_insert")]),
period: TriggerPeriod::Before,
events: vec![TriggerEvent::Insert],
table_name: ObjectName(vec![Ident::new("accounts")]),
table_name: ObjectName::from(vec![Ident::new("accounts")]),
referenced_table_name: None,
referencing: vec![],
trigger_object: TriggerObject::Row,
@ -4732,7 +4751,7 @@ fn parse_create_simple_before_insert_trigger() {
exec_body: TriggerExecBody {
exec_type: TriggerExecBodyType::Function,
func_desc: FunctionDesc {
name: ObjectName(vec![Ident::new("check_account_insert")]),
name: ObjectName::from(vec![Ident::new("check_account_insert")]),
args: None,
},
},
@ -4748,10 +4767,10 @@ fn parse_create_after_update_trigger_with_condition() {
let expected = Statement::CreateTrigger {
or_replace: false,
is_constraint: false,
name: ObjectName(vec![Ident::new("check_update")]),
name: ObjectName::from(vec![Ident::new("check_update")]),
period: TriggerPeriod::After,
events: vec![TriggerEvent::Update(vec![])],
table_name: ObjectName(vec![Ident::new("accounts")]),
table_name: ObjectName::from(vec![Ident::new("accounts")]),
referenced_table_name: None,
referencing: vec![],
trigger_object: TriggerObject::Row,
@ -4767,7 +4786,7 @@ fn parse_create_after_update_trigger_with_condition() {
exec_body: TriggerExecBody {
exec_type: TriggerExecBodyType::Function,
func_desc: FunctionDesc {
name: ObjectName(vec![Ident::new("check_account_update")]),
name: ObjectName::from(vec![Ident::new("check_account_update")]),
args: None,
},
},
@ -4783,10 +4802,10 @@ fn parse_create_instead_of_delete_trigger() {
let expected = Statement::CreateTrigger {
or_replace: false,
is_constraint: false,
name: ObjectName(vec![Ident::new("check_delete")]),
name: ObjectName::from(vec![Ident::new("check_delete")]),
period: TriggerPeriod::InsteadOf,
events: vec![TriggerEvent::Delete],
table_name: ObjectName(vec![Ident::new("accounts")]),
table_name: ObjectName::from(vec![Ident::new("accounts")]),
referenced_table_name: None,
referencing: vec![],
trigger_object: TriggerObject::Row,
@ -4795,7 +4814,7 @@ fn parse_create_instead_of_delete_trigger() {
exec_body: TriggerExecBody {
exec_type: TriggerExecBodyType::Function,
func_desc: FunctionDesc {
name: ObjectName(vec![Ident::new("check_account_deletes")]),
name: ObjectName::from(vec![Ident::new("check_account_deletes")]),
args: None,
},
},
@ -4811,14 +4830,14 @@ fn parse_create_trigger_with_multiple_events_and_deferrable() {
let expected = Statement::CreateTrigger {
or_replace: false,
is_constraint: true,
name: ObjectName(vec![Ident::new("check_multiple_events")]),
name: ObjectName::from(vec![Ident::new("check_multiple_events")]),
period: TriggerPeriod::Before,
events: vec![
TriggerEvent::Insert,
TriggerEvent::Update(vec![]),
TriggerEvent::Delete,
],
table_name: ObjectName(vec![Ident::new("accounts")]),
table_name: ObjectName::from(vec![Ident::new("accounts")]),
referenced_table_name: None,
referencing: vec![],
trigger_object: TriggerObject::Row,
@ -4827,7 +4846,7 @@ fn parse_create_trigger_with_multiple_events_and_deferrable() {
exec_body: TriggerExecBody {
exec_type: TriggerExecBodyType::Function,
func_desc: FunctionDesc {
name: ObjectName(vec![Ident::new("check_account_changes")]),
name: ObjectName::from(vec![Ident::new("check_account_changes")]),
args: None,
},
},
@ -4847,21 +4866,21 @@ fn parse_create_trigger_with_referencing() {
let expected = Statement::CreateTrigger {
or_replace: false,
is_constraint: false,
name: ObjectName(vec![Ident::new("check_referencing")]),
name: ObjectName::from(vec![Ident::new("check_referencing")]),
period: TriggerPeriod::Before,
events: vec![TriggerEvent::Insert],
table_name: ObjectName(vec![Ident::new("accounts")]),
table_name: ObjectName::from(vec![Ident::new("accounts")]),
referenced_table_name: None,
referencing: vec![
TriggerReferencing {
refer_type: TriggerReferencingType::NewTable,
is_as: true,
transition_relation_name: ObjectName(vec![Ident::new("new_accounts")]),
transition_relation_name: ObjectName::from(vec![Ident::new("new_accounts")]),
},
TriggerReferencing {
refer_type: TriggerReferencingType::OldTable,
is_as: true,
transition_relation_name: ObjectName(vec![Ident::new("old_accounts")]),
transition_relation_name: ObjectName::from(vec![Ident::new("old_accounts")]),
},
],
trigger_object: TriggerObject::Row,
@ -4870,7 +4889,7 @@ fn parse_create_trigger_with_referencing() {
exec_body: TriggerExecBody {
exec_type: TriggerExecBodyType::Function,
func_desc: FunctionDesc {
name: ObjectName(vec![Ident::new("check_account_referencing")]),
name: ObjectName::from(vec![Ident::new("check_account_referencing")]),
args: None,
},
},
@ -4929,8 +4948,8 @@ fn parse_drop_trigger() {
pg().verified_stmt(sql),
Statement::DropTrigger {
if_exists,
trigger_name: ObjectName(vec![Ident::new("check_update")]),
table_name: ObjectName(vec![Ident::new("table_name")]),
trigger_name: ObjectName::from(vec![Ident::new("check_update")]),
table_name: ObjectName::from(vec![Ident::new("table_name")]),
option
}
);
@ -5044,7 +5063,7 @@ fn parse_trigger_related_functions() {
transient: false,
volatile: false,
iceberg: false,
name: ObjectName(vec![Ident::new("emp")]),
name: ObjectName::from(vec![Ident::new("emp")]),
columns: vec![
ColumnDef {
name: "empname".into(),
@ -5126,7 +5145,7 @@ fn parse_trigger_related_functions() {
or_replace: false,
temporary: false,
if_not_exists: false,
name: ObjectName(vec![Ident::new("emp_stamp")]),
name: ObjectName::from(vec![Ident::new("emp_stamp")]),
args: None,
return_type: Some(DataType::Trigger),
function_body: Some(
@ -5161,10 +5180,10 @@ fn parse_trigger_related_functions() {
Statement::CreateTrigger {
or_replace: false,
is_constraint: false,
name: ObjectName(vec![Ident::new("emp_stamp")]),
name: ObjectName::from(vec![Ident::new("emp_stamp")]),
period: TriggerPeriod::Before,
events: vec![TriggerEvent::Insert, TriggerEvent::Update(vec![])],
table_name: ObjectName(vec![Ident::new("emp")]),
table_name: ObjectName::from(vec![Ident::new("emp")]),
referenced_table_name: None,
referencing: vec![],
trigger_object: TriggerObject::Row,
@ -5173,7 +5192,7 @@ fn parse_trigger_related_functions() {
exec_body: TriggerExecBody {
exec_type: TriggerExecBodyType::Function,
func_desc: FunctionDesc {
name: ObjectName(vec![Ident::new("emp_stamp")]),
name: ObjectName::from(vec![Ident::new("emp_stamp")]),
args: None,
}
},
@ -5186,8 +5205,8 @@ fn parse_trigger_related_functions() {
drop_trigger,
Statement::DropTrigger {
if_exists: false,
trigger_name: ObjectName(vec![Ident::new("emp_stamp")]),
table_name: ObjectName(vec![Ident::new("emp")]),
trigger_name: ObjectName::from(vec![Ident::new("emp_stamp")]),
table_name: ObjectName::from(vec![Ident::new("emp")]),
option: None
}
);