Fix ERD delete crash on stale foreign key column. #8318 (#10042)

removeOneToManyLink looked up a column by the FK's stored local_column
name and read .attnum unconditionally. After a column rename the stored
name no longer matches, so _.find returned undefined and .attnum threw,
blocking deletion of the table/link. Use optional chaining so a stale FK
simply doesn't match the link being removed and deletion proceeds.
This commit is contained in:
Dave Page
2026-06-12 22:50:50 +05:30
committed by GitHub
parent ba60f0ae63
commit 2a34eda5bc
2 changed files with 2 additions and 1 deletions
+1
View File
@@ -43,6 +43,7 @@ Bug fixes
| `Issue #6308 <https://github.com/pgadmin-org/pgadmin4/issues/6308>`_ - Fix the infinite loading spinner after an idle database connection is silently dropped, by detecting stale connections and offering a reconnect dialog.
| `Issue #7596 <https://github.com/pgadmin-org/pgadmin4/issues/7596>`_ - Fix the Query Tool turning into a blank white screen when the runtime has a malformed default locale, by guarding the Query History date/time formatting against the resulting RangeError.
| `Issue #8318 <https://github.com/pgadmin-org/pgadmin4/issues/8318>`_ - Fixed an error ("i.default.find(...) is undefined") that prevented deleting a table or relationship link in the ERD tool when a foreign key referenced a column that had been renamed.
| `Issue #9091 <https://github.com/pgadmin-org/pgadmin4/issues/9091>`_ - Fix the Query Tool re-prompting for an unsaved password in a loop and rejecting the re-entered password, by caching the entered password on the server manager when the primary connection is already established.
| `Issue #9128 <https://github.com/pgadmin-org/pgadmin4/issues/9128>`_ - Fixed an issue where the object breadcrumbs popup blocked clicks on the object explorer items beneath it.
| `Issue #9595 <https://github.com/pgadmin-org/pgadmin4/issues/9595>`_ - Fix missing ALTER ... SET DEFAULT statements for inherited columns in the generated table SQL/EDIT script.
@@ -526,7 +526,7 @@ export default class ERDCore {
let newForeingKeys = [];
tableData.foreign_key?.forEach((theFkRow)=>{
let theFk = theFkRow.columns[0];
let attnum = _.find(tableNode.getColumns(), (col)=>col.name==theFk.local_column).attnum;
let attnum = _.find(tableNode.getColumns(), (col)=>col.name==theFk.local_column)?.attnum;
/* Skip all those whose attnum and table matches to the link */
if(linkData.local_column_attnum != attnum || linkData.referenced_table_uid != theFk.references) {
newForeingKeys.push(theFkRow);