@@ -138,22 +138,56 @@ def _solve_order(self) -> List[str]:
138
138
139
139
def _add_extra_fks (self ) -> None :
140
140
"""Add in additional foreign keys requested."""
141
- for extra_fk in self .config .extra_fks :
141
+ for index , extra_fk in enumerate ( self .config .extra_fks ) :
142
142
src_schema , src_table_name = parse_table_name (extra_fk .src_table )
143
143
dst_schema , dst_table_name = parse_table_name (extra_fk .dst_table )
144
144
table = self .meta .tables .get ((src_schema , src_table_name ))
145
145
if table is None :
146
146
LOGGER .warning (
147
- "Found no source table %s.%s referenced in add_extra_fks " ,
147
+ "Found no source table %s.%s referenced in extra_fks[%d] " ,
148
148
src_schema ,
149
149
src_table_name ,
150
+ index ,
150
151
)
151
152
continue
152
- if (dst_schema , dst_table_name ) not in self .meta .tables :
153
+
154
+ src_missing_cols = {
155
+ col
156
+ for col in extra_fk .src_columns
157
+ if col not in table .table_obj .columns
158
+ }
159
+ if src_missing_cols :
160
+ LOGGER .warning (
161
+ "Columns %s do not exist in %s.%s referenced in extra_fks[%d]" ,
162
+ src_missing_cols ,
163
+ src_schema ,
164
+ src_table_name ,
165
+ index ,
166
+ )
167
+ continue
168
+
169
+ dst_table = self .meta .tables .get ((dst_schema , dst_table_name ))
170
+ if dst_table is None :
171
+ LOGGER .warning (
172
+ "Found no destination table %s.%s referenced in add_extra_fks[%d]" ,
173
+ dst_schema ,
174
+ dst_table_name ,
175
+ index ,
176
+ )
177
+ continue
178
+
179
+ dst_missing_cols = {
180
+ col
181
+ for col in extra_fk .dst_columns
182
+ if col not in dst_table .table_obj .columns
183
+ }
184
+ if dst_missing_cols :
153
185
LOGGER .warning (
154
- "Found no destination table %s.%s referenced in add_extra_fks" ,
186
+ "Columns %s do not exist in %s.%s referenced in extra_fks[%d]" ,
187
+ dst_missing_cols ,
155
188
dst_schema ,
156
189
dst_table_name ,
190
+ index ,
157
191
)
158
192
continue
159
193
0 commit comments