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 1maYK4-0004LH-Ly for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Oct 2021 07:05:08 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1maYK3-0001uQ-Jc for pgadmin-hackers@arkaria.postgresql.org; Wed, 13 Oct 2021 07:05:07 +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 1maYK3-0001op-1Y for pgadmin-hackers@lists.postgresql.org; Wed, 13 Oct 2021 07:05:07 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1maYJz-0004Pg-Sv for pgadmin-hackers@postgresql.org; Wed, 13 Oct 2021 07:05:06 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id x207so1380565vke.2 for ; Wed, 13 Oct 2021 00:05:03 -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=unPEWodA3TZHjfNZoLBBuqlIrdRlTFoK7+kpyq9iWDo=; b=Hv7MWfwbW0fHe4AS3p8r29K7XJhAIquxQLsnc5mrqrDxTOKpZmBmNtl53Lk6EXcp89 bp8oKZSErTAqkCC32WJ+c7+IPvc/vcL8PYXeT6gX8BX7wGtdIxeIn+NEXU7lEOcJJ1a7 OK3uMWZc9V8RsZHrJvoPJgGdPQWx4Q+rscAN7MSiiRnYMJ3kMYQB3KGfXjXCK2TgEduK y5GoZ8vr8cU2m5mZnNH1EteuHNYqxsLSPF1/Wfa+fn55WoHmPuv36FCoFNuIq9OAAjEr 98m1r2wlcAPlRZWDQFjKLbG0AIhtaBMaYleaAotVPgnYsaFXQGcWZB3KpfEKKeqo4cXN 7lcw== 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=unPEWodA3TZHjfNZoLBBuqlIrdRlTFoK7+kpyq9iWDo=; b=5vAfRX17syVz6XblTFQtHa1nx2jFkc7567ELSuwPeUadXf7ZHKnedHwlTHLfaTV4/W E8rtyzWW8zDJIn/q+B2utmlJb44wBMVGBeE6n6LtHIyNpkPjPNs80ywcuW1g+NbSBIhM H7lIgIcGJaqnfCzXCwJlXILtLNll9gGQKHF07+zCIP+YMoUs9iaM3ok2H2n/wxUFFESl orjqEquzLea1xVtir1Fg7ZQ36hyY8jdGjFHwpLyOlGwYfzm2npvvxAnvIbaNy1dxyR7T A/wUYjoiIDNNGsaM8hkmrcQxmNZVBzguPEJyeLAMilN6LMVxqN1uPg9WnkPZ5XTKqm+h vraQ== X-Gm-Message-State: AOAM531jW+Ox+3xi6/c85i0rG2Yzzpv2+9WO333MJ6Pzd3t2bZjXoKaq vSRRrt+UB0QRY7bPxhyWpySUf9s9IMbzsYSVJkEjH9AXBb/RWmZe2Z8X+25MCjzqghtcq9HN74x hTgk2wPZ3obIi8K2eTLl0nEjBdMBR+LngsDE+74r9QHDlIb1YZdd8k1sgIM+4Y1Mfew3AWPU//i xV+gg7FW6KfHlNuDcHs8Q6qAthtL4o7TQ2RGSuywg9qRtiiAru7yVE5BO5odPa+oI= X-Google-Smtp-Source: ABdhPJz5Cu3prxnjJFlYsgQ/9UbnDyuTBnULQa7EKGrxsmOa8IL5Odbwzt/mATfpjdjTeSQFYI6Icz2+WGIrYqrIapc= X-Received: by 2002:a1f:1e06:: with SMTP id e6mr31721060vke.24.1634108701623; Wed, 13 Oct 2021 00:05:01 -0700 (PDT) MIME-Version: 1.0 From: Aditya Toshniwal Date: Wed, 13 Oct 2021 12:34:25 +0530 Message-ID: Subject: [pgAdmin][RM6891] Composite foreign keys in ERD To: pgadmin-hackers Content-Type: multipart/mixed; boundary="000000000000af91f605ce3694e5" 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 --000000000000af91f605ce3694e5 Content-Type: multipart/alternative; boundary="000000000000af91f205ce3694e3" --000000000000af91f205ce3694e3 Content-Type: text/plain; charset="UTF-8" Hi Hackers, Please review the attached patch which adds support for composite foreign keys in ERD. -- Thanks, Aditya Toshniwal pgAdmin Hacker | Software Architect | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --000000000000af91f205ce3694e3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Hackers,

Please review the attached patch which adds su= pport for composite foreign keys in ERD.

--
Th= anks,
Aditya Toshniwal
pgAdmin Hacker=C2=A0| Software Architect=C2=A0| edbpostgres.com
<= font color=3D"#38761d" size=3D"1">"Do= n't Complain about Heat, Plant a TREE"
--000000000000af91f205ce3694e3-- --000000000000af91f605ce3694e5 Content-Type: application/octet-stream; name="RM6891.patch" Content-Disposition: attachment; filename="RM6891.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kup60o170 ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2Rh dGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0aWMvanMv Zm9yZWlnbl9rZXkudWkuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2Vy dmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvc3Rh dGljL2pzL2ZvcmVpZ25fa2V5LnVpLmpzCmluZGV4IDJkZmZhNWYwMi4uMmJiY2EwZDI5IDEwMDY0 NAotLS0gYS93ZWIvcGdhZG1pbi9icm93c2VyL3NlcnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFz ZXMvc2NoZW1hcy90YWJsZXMvY29uc3RyYWludHMvZm9yZWlnbl9rZXkvc3RhdGljL2pzL2ZvcmVp Z25fa2V5LnVpLmpzCisrKyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2 ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9jb25zdHJhaW50cy9mb3JlaWduX2tleS9zdGF0 aWMvanMvZm9yZWlnbl9rZXkudWkuanMKQEAgLTI1Niw3ICsyNTYsOCBAQCBleHBvcnQgZGVmYXVs dCBjbGFzcyBGb3JlaWduS2V5U2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKICAgICAgICAg ICB9CiAgICAgICAgIH0KIAotICAgICAgICBsZXQgb2xkaW5kZXggPSAnZmtpXycrYWN0aW9uT2Jq Lm9sZFN0YXRlLm5hbWU7CisgICAgICAgIGxldCBvbGRGayA9IF8uZ2V0KGFjdGlvbk9iai5vbGRT dGF0ZSwgXy5zbGljZShhY3Rpb25PYmoucGF0aCwgMCwgLTEpKTsKKyAgICAgICAgbGV0IG9sZGlu ZGV4ID0gJ2ZraV8nK29sZEZrLm5hbWU7CiAgICAgICAgIGlmKHN0YXRlLmhhc2luZGV4KSB7CiAg ICAgICAgICAgcmV0dXJuIHt9OwogICAgICAgICB9IGVsc2UgaWYoIXN0YXRlLmF1dG9pbmRleCkg ewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMv ZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0YXRpYy9qcy90YWJsZS51aS5qcyBiL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxl cy9zdGF0aWMvanMvdGFibGUudWkuanMKaW5kZXggNWQ4ZDFkMDM5Li5hOGUxYjhjY2EgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNl cy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMvdGFibGUudWkuanMKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci9zZXJ2ZXJfZ3JvdXBzL3NlcnZlcnMvZGF0YWJhc2VzL3NjaGVtYXMvdGFibGVzL3N0 YXRpYy9qcy90YWJsZS51aS5qcwpAQCAtMzUyLDYgKzM1MiwxNSBAQCBleHBvcnQgZGVmYXVsdCBj bGFzcyBUYWJsZVNjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVtYSB7CiAgICAgICBkZWxldGUgYy5p bmhlcml0ZWRmcm9tdGFibGU7CiAgICAgICByZXR1cm4gYzsKICAgICB9KTsKKworICAgIC8qIE1h a2UgYXV0b2luZGV4IGFzIHRydWUgaWYgdGhlcmUgaXMgY292ZXJpbmdpbmRleCBzaW5jZSBFUkQg d29ya3MgaW4gY3JlYXRlIG1vZGUgKi8KKyAgICBuZXdEYXRhLmZvcmVpZ25fa2V5ID0gKG5ld0Rh dGEuZm9yZWlnbl9rZXl8fFtdKS5tYXAoKGZrKT0+eworICAgICAgZmsuYXV0b2luZGV4ID0gZmFs c2U7CisgICAgICBpZihmay5jb3ZlcmluZ2luZGV4KSB7CisgICAgICAgIGZrLmF1dG9pbmRleCA9 IHRydWU7CisgICAgICB9CisgICAgICByZXR1cm4gZms7CisgICAgfSk7CiAgICAgcmV0dXJuIG5l d0RhdGE7CiAgIH0KIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9q cy9lcmRfdG9vbC9ub2Rlcy9UYWJsZU5vZGUuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0 YXRpYy9qcy9lcmRfdG9vbC9ub2Rlcy9UYWJsZU5vZGUuanN4CmluZGV4IGRiMmZmMzA1MC4uZmI0 M2ZhNzY4IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90 b29sL25vZGVzL1RhYmxlTm9kZS5qc3gKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRp Yy9qcy9lcmRfdG9vbC9ub2Rlcy9UYWJsZU5vZGUuanN4CkBAIC02NSw4ICs2NSw5IEBAIGV4cG9y dCBjbGFzcyBUYWJsZU5vZGVNb2RlbCBleHRlbmRzIERlZmF1bHROb2RlTW9kZWwgewogICB9CiAK ICAgY2xvbmVEYXRhKG5hbWUpIHsKKyAgICBjb25zdCBTS0lQX0NMT05FX0tFWVMgPSBbJ2ZvcmVp Z25fa2V5J107CiAgICAgbGV0IG5ld0RhdGEgPSB7Ci0gICAgICAuLi50aGlzLmdldERhdGEoKSwK KyAgICAgIC4uLl8ucGlja0J5KHRoaXMuZ2V0RGF0YSgpLCAoX3YsIGspPT4oU0tJUF9DTE9ORV9L RVlTLmluZGV4T2YoaykgPT0gLTEpKSwKICAgICB9OwogICAgIGlmKG5hbWUpIHsKICAgICAgIG5l d0RhdGFbJ25hbWUnXSA9IG5hbWU7CkBAIC0xNDgsMTIgKzE0OSwxNiBAQCBleHBvcnQgY2xhc3Mg VGFibGVOb2RlV2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICB9KTsKICAgfQog Ci0gIGdlbmVyYXRlQ29sdW1uKGNvbCkgeworICBnZW5lcmF0ZUNvbHVtbihjb2wsIHRhYmxlRGF0 YSkgewogICAgIGxldCBwb3J0ID0gdGhpcy5wcm9wcy5ub2RlLmdldFBvcnQodGhpcy5wcm9wcy5u b2RlLmdldFBvcnROYW1lKGNvbC5hdHRudW0pKTsKICAgICBsZXQgaWNvbiA9IENvbHVtbkljb247 CisgICAgbGV0IGxvY2FsRmtDb2xzID0gW107CisgICAgKHRhYmxlRGF0YS5mb3JlaWduX2tleXx8 W10pLmZvckVhY2goKGZrKT0+eworICAgICAgbG9jYWxGa0NvbHMucHVzaCguLi5may5jb2x1bW5z Lm1hcCgoYyk9PmMubG9jYWxfY29sdW1uKSk7CisgICAgfSk7CiAgICAgaWYoY29sLmlzX3ByaW1h cnlfa2V5KSB7CiAgICAgICBpY29uID0gUHJpbWFyeUtleUljb247Ci0gICAgfSBlbHNlIGlmKHBv cnQgJiYgcG9ydC5nZXRTdWJ0eXBlKCkgPT0gJ21hbnknKSB7CisgICAgfSBlbHNlIGlmKGxvY2Fs RmtDb2xzLmluZGV4T2YoY29sLm5hbWUpID4gLTEpIHsKICAgICAgIGljb24gPSBGb3JlaWduS2V5 SWNvbjsKICAgICB9CiAgICAgcmV0dXJuICgKQEAgLTE4Niw3ICsxOTEsNyBAQCBleHBvcnQgY2xh c3MgVGFibGVOb2RlV2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgfQogCiAgIHJl bmRlcigpIHsKLSAgICBsZXQgbm9kZV9kYXRhID0gdGhpcy5wcm9wcy5ub2RlLmdldERhdGEoKTsK KyAgICBsZXQgdGFibGVEYXRhID0gdGhpcy5wcm9wcy5ub2RlLmdldERhdGEoKTsKICAgICByZXR1 cm4gKAogICAgICAgPGRpdiBjbGFzc05hbWU9eyd0YWJsZS1ub2RlICcgKyAodGhpcy5wcm9wcy5u b2RlLmlzU2VsZWN0ZWQoKSA/ICdzZWxlY3RlZCc6ICcnKSB9IG9uRG91YmxlQ2xpY2s9eygpPT57 dGhpcy5wcm9wcy5ub2RlLmZpcmVFdmVudCh7fSwgJ2VkaXRUYWJsZScpO319PgogICAgICAgICA8 ZGl2IGNsYXNzTmFtZT0idGFibGUtdG9vbGJhciI+CkBAIC0xOTgsMTQgKzIwMywxNCBAQCBleHBv cnQgY2xhc3MgVGFibGVOb2RlV2lkZ2V0IGV4dGVuZHMgUmVhY3QuQ29tcG9uZW50IHsKICAgICAg ICAgPC9kaXY+CiAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJkLWZsZXggdGFibGUtc2NoZW1hLWRh dGEiPgogICAgICAgICAgIDxSb3dJY29uIGljb249e1NjaGVtYUljb259Lz4KLSAgICAgICAgICA8 ZGl2IGNsYXNzTmFtZT0idGFibGUtc2NoZW1hIG15LWF1dG8iPntub2RlX2RhdGEuc2NoZW1hfTwv ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ0YWJsZS1zY2hlbWEgbXktYXV0byI+e3Rh YmxlRGF0YS5zY2hlbWF9PC9kaXY+CiAgICAgICAgIDwvZGl2PgogICAgICAgICA8ZGl2IGNsYXNz TmFtZT0iZC1mbGV4IHRhYmxlLW5hbWUtZGF0YSI+CiAgICAgICAgICAgPFJvd0ljb24gaWNvbj17 VGFibGVJY29ufSAvPgotICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPSJ0YWJsZS1uYW1lIG15LWF1 dG8iPntub2RlX2RhdGEubmFtZX08L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT0idGFi bGUtbmFtZSBteS1hdXRvIj57dGFibGVEYXRhLm5hbWV9PC9kaXY+CiAgICAgICAgIDwvZGl2Pgog ICAgICAgICA8ZGl2IGNsYXNzTmFtZT0idGFibGUtY29scyI+Ci0gICAgICAgICAge18ubWFwKG5v ZGVfZGF0YS5jb2x1bW5zLCAoY29sKT0+dGhpcy5nZW5lcmF0ZUNvbHVtbihjb2wpKX0KKyAgICAg ICAgICB7Xy5tYXAodGFibGVEYXRhLmNvbHVtbnMsIChjb2wpPT50aGlzLmdlbmVyYXRlQ29sdW1u KGNvbCwgdGFibGVEYXRhKSl9CiAgICAgICAgIDwvZGl2PgogICAgICAgPC9kaXY+CiAgICAgKTsK --000000000000af91f605ce3694e5--