MySQL: Support index_name in FK constraints (#1871)

This commit is contained in:
Mohamed Abdeen 2025-06-06 08:03:59 +01:00 committed by GitHub
parent 5327f0ce13
commit de2cc7b502
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 31 additions and 7 deletions

View file

@ -3791,6 +3791,7 @@ fn parse_create_table() {
vec![
TableConstraint::ForeignKey {
name: Some("fkey".into()),
index_name: None,
columns: vec!["lat".into()],
foreign_table: ObjectName::from(vec!["othertable3".into()]),
referred_columns: vec!["lat".into()],
@ -3800,6 +3801,7 @@ fn parse_create_table() {
},
TableConstraint::ForeignKey {
name: Some("fkey2".into()),
index_name: None,
columns: vec!["lat".into()],
foreign_table: ObjectName::from(vec!["othertable4".into()]),
referred_columns: vec!["lat".into()],
@ -3809,6 +3811,7 @@ fn parse_create_table() {
},
TableConstraint::ForeignKey {
name: None,
index_name: None,
columns: vec!["lat".into()],
foreign_table: ObjectName::from(vec!["othertable4".into()]),
referred_columns: vec!["lat".into()],
@ -3818,6 +3821,7 @@ fn parse_create_table() {
},
TableConstraint::ForeignKey {
name: None,
index_name: None,
columns: vec!["lng".into()],
foreign_table: ObjectName::from(vec!["othertable4".into()]),
referred_columns: vec!["longitude".into()],
@ -3914,6 +3918,7 @@ fn parse_create_table_with_constraint_characteristics() {
vec![
TableConstraint::ForeignKey {
name: Some("fkey".into()),
index_name: None,
columns: vec!["lat".into()],
foreign_table: ObjectName::from(vec!["othertable3".into()]),
referred_columns: vec!["lat".into()],
@ -3927,6 +3932,7 @@ fn parse_create_table_with_constraint_characteristics() {
},
TableConstraint::ForeignKey {
name: Some("fkey2".into()),
index_name: None,
columns: vec!["lat".into()],
foreign_table: ObjectName::from(vec!["othertable4".into()]),
referred_columns: vec!["lat".into()],
@ -3940,6 +3946,7 @@ fn parse_create_table_with_constraint_characteristics() {
},
TableConstraint::ForeignKey {
name: None,
index_name: None,
columns: vec!["lat".into()],
foreign_table: ObjectName::from(vec!["othertable4".into()]),
referred_columns: vec!["lat".into()],
@ -3953,6 +3960,7 @@ fn parse_create_table_with_constraint_characteristics() {
},
TableConstraint::ForeignKey {
name: None,
index_name: None,
columns: vec!["lng".into()],
foreign_table: ObjectName::from(vec!["othertable4".into()]),
referred_columns: vec!["longitude".into()],

View file

@ -3988,6 +3988,13 @@ fn parse_straight_join() {
.verified_stmt("SELECT a.*, b.* FROM table_a STRAIGHT_JOIN table_b AS b ON a.b_id = b.id");
}
#[test]
fn mysql_foreign_key_with_index_name() {
mysql().verified_stmt(
"CREATE TABLE orders (customer_id INT, INDEX idx_customer (customer_id), CONSTRAINT fk_customer FOREIGN KEY idx_customer (customer_id) REFERENCES customers(id))",
);
}
#[test]
fn parse_drop_index() {
let sql = "DROP INDEX idx_name ON table_name";