Skip to content

Commit

Permalink
Revert "Fix incorrect discovery of composite foreign keys in PostgreS…
Browse files Browse the repository at this point in the history
…QL (SeaQL#118)"

This reverts commit fddcc02
  • Loading branch information
28Smiles committed Apr 21, 2024
1 parent be8ffe2 commit 9b5ddcc
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 39 deletions.
4 changes: 2 additions & 2 deletions src/postgres/parser/table_constraints.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ impl Iterator for TableConstraintsQueryResultParser {
let mut foreign_columns = Vec::new();

columns.push(result.column_name.unwrap());
let table = result.referential_key_table_name.unwrap();
foreign_columns.push(result.referential_key_column_name.unwrap());
let table = result.referential_key_table_name.unwrap_or_else(|| result.table_name.clone());
foreign_columns.push(result.referential_key_column_name.or_else(|| result.column_name.clone()).unwrap());
let on_update =
ForeignKeyAction::from_str(&result.update_rule.clone().unwrap_or_default());
let on_delete =
Expand Down
39 changes: 2 additions & 37 deletions src/postgres/query/constraints/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,51 +147,16 @@ impl SchemaQueryBuilder {
(Schema::ConstraintColumnUsage, Kcuf::TableName),
(Schema::ConstraintColumnUsage, Kcuf::ColumnName),
])
.columns(vec![
// Extract the ordinal position of the referenced primary keys
(Schema::KeyColumnUsage, Kcuf::OrdinalPosition),
])
.from((Schema::Schema, Schema::ReferentialConstraints))
.left_join(
(Schema::Schema, Schema::ConstraintColumnUsage),
Expr::col((Schema::ReferentialConstraints, RefC::ConstraintName))
.equals((Schema::ConstraintColumnUsage, Kcuf::ConstraintName)),
)
.left_join(
// Join the key_column_usage rows for the referenced primary keys
(Schema::Schema, Schema::KeyColumnUsage),
Condition::all()
.add(
Expr::col((Schema::ConstraintColumnUsage, Kcuf::ColumnName))
.equals((Schema::KeyColumnUsage, Kcuf::ColumnName)),
)
.add(
Expr::col((
Schema::ReferentialConstraints,
RefC::UniqueConstraintName,
))
.equals((Schema::KeyColumnUsage, Kcuf::ConstraintName)),
)
.add(
Expr::col((
Schema::ReferentialConstraints,
RefC::UniqueConstraintSchema,
))
.equals((Schema::KeyColumnUsage, Kcuf::ConstraintSchema)),
),
)
.take(),
rcsq.clone(),
Condition::all()
.add(
Expr::col((Schema::TableConstraints, Tcf::ConstraintName))
.equals((rcsq.clone(), RefC::ConstraintName)),
)
.add(
// Only join when the referenced primary key position matches position_in_unique_constraint for the foreign key column
Expr::col((Schema::KeyColumnUsage, Kcuf::PositionInUniqueConstraint))
.equals((rcsq.clone(), Kcuf::OrdinalPosition)),
),
Expr::col((Schema::TableConstraints, Tcf::ConstraintName))
.equals((rcsq.clone(), RefC::ConstraintName)),
)
.and_where(
Expr::col((Schema::TableConstraints, Tcf::TableSchema)).eq(schema.to_string()),
Expand Down

0 comments on commit 9b5ddcc

Please sign in to comment.