@@ -515,7 +515,7 @@ func (g *Generator) generateDDLForDropConstraintIndexAndTable(table *Table) DDL
515515 g .dropedChangeStream = append (g .dropedChangeStream , identsToComparable (cs .Name ))
516516 }
517517 }
518- ddl .AppendDDL (g .generateDDLForDropNamedConstraintsMatchingPredicate (func (constraint * ast.TableConstraint ) bool {
518+ ddl .AppendDDL (g .generateDDLForDropNamedConstraintsMatchingPredicate (func (_ * Table , constraint * ast.TableConstraint ) bool {
519519 fk , ok := constraint .Constraint .(* ast.ForeignKey )
520520 if ! ok {
521521 return false
@@ -677,20 +677,25 @@ func (g *Generator) generateDDLForColumns(from, to *Table) DDL {
677677func (g * Generator ) generateDDLForDropColumn (table * ast.Path , column * ast.Ident ) DDL {
678678 ddl := DDL {}
679679
680- ddl .AppendDDL (g .generateDDLForDropNamedConstraintsMatchingPredicate (func (constraint * ast.TableConstraint ) bool {
680+ ddl .AppendDDL (g .generateDDLForDropNamedConstraintsMatchingPredicate (func (t * Table , constraint * ast.TableConstraint ) bool {
681681 fk , ok := constraint .Constraint .(* ast.ForeignKey )
682682 if ! ok {
683683 return false
684684 }
685- for _ , c := range fk .Columns {
686- if identsToComparable (column ) == identsToComparable (c ) {
687- return true
685+
686+ if identsToComparable (t .Name .Idents ... ) == identsToComparable (table .Idents ... ) {
687+ for _ , c := range fk .Columns {
688+ if identsToComparable (column ) == identsToComparable (c ) {
689+ return true
690+ }
688691 }
689692 }
690693
691- for _ , refColumn := range fk .ReferenceColumns {
692- if identsToComparable (column ) == identsToComparable (refColumn ) {
693- return true
694+ if identsToComparable (fk .ReferenceTable .Idents ... ) == identsToComparable (table .Idents ... ) {
695+ for _ , refColumn := range fk .ReferenceColumns {
696+ if identsToComparable (column ) == identsToComparable (refColumn ) {
697+ return true
698+ }
694699 }
695700 }
696701
@@ -1239,12 +1244,12 @@ func (g *Generator) findSearchIndexByColumn(indexes []*ast.CreateSearchIndex, co
12391244 return result
12401245}
12411246
1242- func (g * Generator ) generateDDLForDropNamedConstraintsMatchingPredicate (predicate func (constraint * ast.TableConstraint ) bool ) DDL {
1247+ func (g * Generator ) generateDDLForDropNamedConstraintsMatchingPredicate (predicate func (table * Table , constraint * ast.TableConstraint ) bool ) DDL {
12431248 ddl := DDL {}
12441249
12451250 for _ , table := range g .from .tables {
12461251 for _ , constraint := range table .TableConstraints {
1247- if predicate (constraint ) {
1252+ if predicate (table , constraint ) {
12481253 ddl .AppendDDL (g .generateDDLForDropNamedConstraint (table .Name , constraint ))
12491254 }
12501255 }
0 commit comments