Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nUmow-0006c8-Vk for pgadmin-hackers@arkaria.postgresql.org; Thu, 17 Mar 2022 09:53:27 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nUmou-0005kr-A3 for pgadmin-hackers@arkaria.postgresql.org; Thu, 17 Mar 2022 09:53:24 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nUmot-0005kh-NG for pgadmin-hackers@lists.postgresql.org; Thu, 17 Mar 2022 09:53:24 +0000 Received: from mail-oi1-x22f.google.com ([2607:f8b0:4864:20::22f]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nUmoo-00086r-LG for pgadmin-hackers@postgresql.org; Thu, 17 Mar 2022 09:53:22 +0000 Received: by mail-oi1-x22f.google.com with SMTP id w127so5030337oig.10 for ; Thu, 17 Mar 2022 02:53:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:from:date:message-id:subject:to; bh=E26V3htFvsVs9ptJ1918enH2yjYVwzw5ZGrZZhmoSfE=; b=GAYCoGq3KSV1ZX6L3NpJSmL3oM0MrG5SpvpyxXl737bJEWP7We8jA4aWLvLW/7Cxie Ikj0Lo4Rnnd5h4PwK1lmV0GA3FteFSvXovFY8KnayD6vrIy8CdbqO5mVWoYkfPQhNPSt D38IBJqvcse9Sw4buRhQggkCgEas/GF636nioyxePn2lLApSttBgnZxkWwv4FweFUu6W 9JbWzeUyVxTtZA2v/8MTuNHoqLt3gAvUebNJtW7mI1VEd2I3MNIW0jbtHrDUqfRtaMN5 7ZhPcXDl/n19jHyvegsrJLdfQNFeHvTmtXOOZyb6qCgQyV4ZlAET8QgaO1CrqyqXgoUL XsNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=E26V3htFvsVs9ptJ1918enH2yjYVwzw5ZGrZZhmoSfE=; b=0OFd94aIEWWhTcwH7JwxxxvRv82IjbqaPvfSTqhd+OiJpOJrs/oUPJMMoQQRxPkbjW jukci4D55ZLc1LdYJMWo0GTr4N7J3x0/1yE8Zzyfj7EW9gNhZZ0proGzeYdnzO9cZKaN d6To0Xb+qxNxuXIEK5VY9RiQKT0F0RjQyV/LMZ3zpV4gKpt3cVfU5Sm/RsSD2Kifzcvl CbpFsbE/Tlvf9nrfYrrB96uwjS5J/sdhrMCZ7FOZCKGJu1CDgSn4EM50gvhVeajipTEi izBvUZOMOp1zx4VVIXnvGXF1VDqSpOLWJvdbQIfpE01jrq2VW+uAs23TDa4wXeq58wKQ BSIQ== X-Gm-Message-State: AOAM533s5WZZmo8nuevc1menTBzQC82YMnKdhi7ql1kju+Jv7Jn53AbV JGrhIFR6EjVbHDaA+fiJc7oQT7MMGZloQkkixQG5RsxyhCX22qPORIbYSUa096jySf3v7EVkdhX xgA9Yl5SGLW67tPVtnXwZugAWR2O1L2ANcZmd5NfnUVK60RFkH63ygFHnX3LrE7Rn9mgX1i0bR9 4OOzJoJ4Bp4o9b7nUqE9QCp3duztZf8/TxTxtCGCbDuyDwYZTa6qbCEF3UcamfEnM= X-Google-Smtp-Source: ABdhPJzRRtz3ogs6Goofx2AVTljfUc3VwQNbRpiQiHZ+rfRLDSoTprl2GJJKdxZU1k1FlWk4hpeyInu29Mi/SlBuZJg= X-Received: by 2002:a05:6808:d4b:b0:2da:398c:b46a with SMTP id w11-20020a0568080d4b00b002da398cb46amr5403644oik.0.1647510796465; Thu, 17 Mar 2022 02:53:16 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Thu, 17 Mar 2022 15:22:40 +0530 Message-ID: Subject: [pgAdmin][RM7238] ERD: Remove foreign references when table node is removed To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000c9a75905da66ffd4" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c9a75905da66ffd4 Content-Type: multipart/alternative; boundary="000000000000c9a75805da66ffd2" --000000000000c9a75805da66ffd2 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Attached patch fixes issue where foreign key is not removed even if the referred table is removed in ERD. I have also added a check to not allow duplicate table names. Please review. -- Thanks, Aditya Toshniwal pgAdmin Hacker | Software Architect | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --000000000000c9a75805da66ffd2 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Attached patch fixes issue where foreign key i= s not removed even if the referred table is removed in ERD. I have also add= ed a check to not allow duplicate table names.

Please review.

--
Thanks,
Ad= itya Toshniwal
pgAdmin Hacker=C2=A0| <= font size=3D"2" color=3D"#000000" face=3D"arial, sans-serif">Software Archi= tect=C2=A0| <= font face=3D"arial, sans-serif" color=3D"#000000">edbpostgres.com
"Don't Complain about Heat, Plant a TREE"<= /font>
--000000000000c9a75805da66ffd2-- --000000000000c9a75905da66ffd4 Content-Type: application/octet-stream; name="RM7238.patch" Content-Disposition: attachment; filename="RM7238.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0utd8mf0 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9fX2luaXRfXy5weSBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2VyZC9fX2luaXRfXy5weQppbmRleCBiOTUxZWNiNTMuLjI2MGI1YTcwZSAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL19faW5pdF9fLnB5CisrKyBiL3dlYi9wZ2Fk bWluL3Rvb2xzL2VyZC9fX2luaXRfXy5weQpAQCAtNTQ3LDggKzU0NywxMCBAQCBkZWYgdHJhbnNs YXRlX2ZvcmVpZ25fa2V5cyh0YWJfZmtzLCB0YWJfZGF0YSwgYWxsX25vZGVzKToKICAgICBmb3Ig dGFiX2ZrIGluIHRhYl9ma3M6CiAgICAgICAgIGlmICdjb2x1bW5zJyBub3QgaW4gdGFiX2ZrOgog ICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgcHJpbnQodGFiX2RhdGEpCi0gICAgICAgIHJl bW90ZV90YWJsZSA9IGFsbF9ub2Rlc1t0YWJfZmtbJ2NvbHVtbnMnXVswXVsncmVmZXJlbmNlcydd XQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZW1vdGVfdGFibGUgPSBhbGxfbm9kZXNbdGFi X2ZrWydjb2x1bW5zJ11bMF1bJ3JlZmVyZW5jZXMnXV0KKyAgICAgICAgZXhjZXB0IEtleUVycm9y OgorICAgICAgICAgICAgY29udGludWUKICAgICAgICAgdGFiX2ZrWydzY2hlbWEnXSA9IHRhYl9k YXRhWydzY2hlbWEnXQogICAgICAgICB0YWJfZmtbJ3RhYmxlJ10gPSB0YWJfZGF0YVsnbmFtZSdd CiAgICAgICAgIHRhYl9ma1sncmVtb3RlX3NjaGVtYSddID0gcmVtb3RlX3RhYmxlWydzY2hlbWEn XQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9F UkRDb3JlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRD b3JlLmpzCmluZGV4IGUzZGUzNjcwYS4uMDI2NTY2OGE5IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1p bi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sL0VSRENvcmUuanMKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC9FUkRDb3JlLmpzCkBAIC0yMTAsNiArMjEw LDI2IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEVSRENvcmUgewogICAgIHJldHVybiBuZXdOb2Rl OwogICB9CiAKKyAgcmVtb3ZlTm9kZShub2RlKSB7CisgICAgbGV0IHNlbGYgPSB0aGlzOworICAg IG5vZGUuc2V0U2VsZWN0ZWQoZmFsc2UpOworICAgIE9iamVjdC52YWx1ZXMobm9kZS5nZXRQb3J0 cygpKS5mb3JFYWNoKChwb3J0KT0+eworICAgICAgT2JqZWN0LnZhbHVlcyhwb3J0LmdldExpbmtz KCkpLmZvckVhY2goKGxpbmspPT57CisgICAgICAgIHNlbGYucmVtb3ZlT25lVG9NYW55TGluayhs aW5rKTsKKyAgICAgIH0pOworICAgIH0pOworICAgIG5vZGUucmVtb3ZlKCk7CisgIH0KKworICBh bnlEdXBsaWNhdGVOb2RlTmFtZShuZXdOb2RlRGF0YSwgb2xkTm9kZURhdGEpIHsKKyAgICBpZihu ZXdOb2RlRGF0YS5uYW1lID09IG9sZE5vZGVEYXRhPy5uYW1lICYmIG5ld05vZGVEYXRhLnNjaGVt YSA9PSBvbGROb2RlRGF0YT8uc2NoZW1hKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQor ICAgIHJldHVybiBfLmZpbHRlcih0aGlzLmdldE5vZGVzRGF0YSgpLCAobik9PnsKKyAgICAgIHJl dHVybiBuLm5hbWU9PW5ld05vZGVEYXRhLm5hbWUgJiYgbi5zY2hlbWE9PW5ld05vZGVEYXRhLnNj aGVtYTsKKyAgICB9KS5sZW5ndGggPiAwOworICB9CisKICAgYWRkTGluayhkYXRhLCB0eXBlKSB7 CiAgICAgbGV0IHRhYmxlTm9kZXNEaWN0ID0gdGhpcy5nZXRNb2RlbCgpLmdldE5vZGVzRGljdCgp OwogICAgIGxldCBzb3VyY2VOb2RlID0gdGFibGVOb2Rlc0RpY3RbZGF0YS5yZWZlcmVuY2VkX3Rh YmxlX3VpZF07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2Vy ZF90b29sL2RpYWxvZ3MvRGlhbG9nV3JhcHBlci5qcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9z dGF0aWMvanMvZXJkX3Rvb2wvZGlhbG9ncy9EaWFsb2dXcmFwcGVyLmpzCmluZGV4IDRmZTk2MGY0 NS4uYzQ2YmRlNzE1IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pz L2VyZF90b29sL2RpYWxvZ3MvRGlhbG9nV3JhcHBlci5qcworKysgYi93ZWIvcGdhZG1pbi90b29s cy9lcmQvc3RhdGljL2pzL2VyZF90b29sL2RpYWxvZ3MvRGlhbG9nV3JhcHBlci5qcwpAQCAtNjks MTEgKzY5LDE1IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIERpYWxvZ1dyYXBwZXIgewogICAgIH07 CiAgIH0KIAotICBvblNhdmVDbGljayhpc05ldywgZGF0YSkgewotICAgIHJldHVybiBuZXcgUHJv bWlzZSgocmVzb2x2ZSk9PnsKLSAgICAgIHRoaXMub2tDYWxsYmFjayhkYXRhKTsKLSAgICAgIHRo aXMuY2xvc2UoKTsKLSAgICAgIHJlc29sdmUoKTsKKyAgb25TYXZlQ2xpY2soX2lzTmV3LCBkYXRh KSB7CisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57CisgICAgICBs ZXQgZXJyb3JNc2cgPSB0aGlzLm9rQ2FsbGJhY2soZGF0YSk7CisgICAgICBpZihlcnJvck1zZykg eworICAgICAgICByZWplY3QoZXJyb3JNc2cpOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgdGhp cy5jbG9zZSgpOworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CiAgICAgfSk7CiAgIH0KIApk aWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9j b21wb25lbnRzL0JvZHlXaWRnZXQuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9q cy9lcmRfdG9vbC91aV9jb21wb25lbnRzL0JvZHlXaWRnZXQuanN4CmluZGV4IGFmZDM2ODliNC4u MmI1OThkODA4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2Vy ZF90b29sL3VpX2NvbXBvbmVudHMvQm9keVdpZGdldC5qc3gKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9jb21wb25lbnRzL0JvZHlXaWRnZXQuanN4CkBA IC0zNDcsMTQgKzM0NywyMCBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0IGV4dGVu ZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICBsZXQgZGlhbG9nID0gdGhpcy5nZXREaWFsb2coJ3Rh YmxlX2RpYWxvZycpOwogICAgIGlmKG5vZGUpIHsKICAgICAgIGxldCBbc2NoZW1hLCB0YWJsZV0g PSBub2RlLmdldFNjaGVtYVRhYmxlTmFtZSgpOwotICAgICAgZGlhbG9nKGdldHRleHQoJ1RhYmxl OiAlcyAoJXMpJywgXy5lc2NhcGUodGFibGUpLF8uZXNjYXBlKHNjaGVtYSkpLCBub2RlLmdldERh dGEoKSwgZmFsc2UsIChuZXdEYXRhKT0+ewotICAgICAgICBsZXQgb2xkRGF0YSA9IG5vZGUuZ2V0 RGF0YSgpOworICAgICAgbGV0IG9sZERhdGEgPSBub2RlLmdldERhdGEoKTsKKyAgICAgIGRpYWxv ZyhnZXR0ZXh0KCdUYWJsZTogJXMgKCVzKScsIF8uZXNjYXBlKHRhYmxlKSxfLmVzY2FwZShzY2hl bWEpKSwgb2xkRGF0YSwgZmFsc2UsIChuZXdEYXRhKT0+eworICAgICAgICBpZih0aGlzLmRpYWdy YW0uYW55RHVwbGljYXRlTm9kZU5hbWUobmV3RGF0YSwgb2xkRGF0YSkpIHsKKyAgICAgICAgICBy ZXR1cm4gZ2V0dGV4dCgnVGFibGUgbmFtZSBhbHJlYWR5IGV4aXN0cycpOworICAgICAgICB9CiAg ICAgICAgIG5vZGUuc2V0RGF0YShuZXdEYXRhKTsKICAgICAgICAgdGhpcy5kaWFncmFtLnN5bmNU YWJsZUxpbmtzKG5vZGUsIG9sZERhdGEpOwogICAgICAgICB0aGlzLmRpYWdyYW0ucmVwYWludCgp OwogICAgICAgfSk7CiAgICAgfSBlbHNlIHsKICAgICAgIGRpYWxvZyhnZXR0ZXh0KCdOZXcgdGFi bGUnKSwge30sIHRydWUsIChuZXdEYXRhKT0+eworICAgICAgICBpZih0aGlzLmRpYWdyYW0uYW55 RHVwbGljYXRlTm9kZU5hbWUobmV3RGF0YSkpIHsKKyAgICAgICAgICByZXR1cm4gZ2V0dGV4dCgn VGFibGUgbmFtZSBhbHJlYWR5IGV4aXN0cycpOworICAgICAgICB9CiAgICAgICAgIGxldCBuZXdO b2RlID0gdGhpcy5kaWFncmFtLmFkZE5vZGUobmV3RGF0YSk7CiAgICAgICAgIHRoaXMuZGlhZ3Jh bS5zeW5jVGFibGVMaW5rcyhuZXdOb2RlKTsKICAgICAgICAgbmV3Tm9kZS5zZXRTZWxlY3RlZCh0 cnVlKTsKQEAgLTQyNCw4ICs0MzAsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCb2R5V2lkZ2V0 IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAgICAgKyAnPGJyIC8+JyArIGdldHRleHQo J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgPycpLAogICAgICAgKCkgPT4gewogICAg ICAgICB0aGlzLmRpYWdyYW0uZ2V0U2VsZWN0ZWROb2RlcygpLmZvckVhY2goKG5vZGUpPT57Ci0g ICAgICAgICAgbm9kZS5zZXRTZWxlY3RlZChmYWxzZSk7Ci0gICAgICAgICAgbm9kZS5yZW1vdmUo KTsKKyAgICAgICAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlTm9kZShub2RlKTsKICAgICAgICAgfSk7 CiAgICAgICAgIHRoaXMuZGlhZ3JhbS5nZXRTZWxlY3RlZExpbmtzKCkuZm9yRWFjaCgobGluayk9 PnsKICAgICAgICAgICB0aGlzLmRpYWdyYW0ucmVtb3ZlT25lVG9NYW55TGluayhsaW5rKTsK --000000000000c9a75905da66ffd4--