Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wD17j-002WTd-1S for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Apr 2026 14:21:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wD17e-00HLNE-32 for pgsql-hackers@arkaria.postgresql.org; Wed, 15 Apr 2026 14:21:43 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wD131-00GWoQ-05 for pgsql-hackers@lists.postgresql.org; Wed, 15 Apr 2026 14:16:55 +0000 Received: from mail-yw1-x1132.google.com ([2607:f8b0:4864:20::1132]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wD03C-00000001DXP-1N2e for pgsql-hackers@lists.postgresql.org; Wed, 15 Apr 2026 13:13:03 +0000 Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-79885f4a8ffso70678337b3.3 for ; Wed, 15 Apr 2026 06:13:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776258779; cv=none; d=google.com; s=arc-20240605; b=MfcS83T9X+ORB8wmLXULjS+xynqwAh8TnkeSrDX4ufakjOVJfGTuEJPlRuvLml8lXF GxU3yzyhwOqBVnCyYFb1fiebPhplYemAZsxz3SiEkUlICNrU1xH6+fB7LI2jeCJdh3On rTmRVkSssPz/LQtw2ywVEXCrxBek6ZaPLWv28IAfv4aptCUSKyr/Aeqn2SgGmIoujAUV ytM+Vn6aExeRW50ky4oSJY8B/j3nDryRYTwG8bXXvItfhRdWpO6xEGgNSdVzTwhbFsw4 aHASnUFMe+zaJen3EkdD2/YrC04L3w6xWR9lLpJGAXYjLPda10RwMgC4j5Mr5QPMOKkI h2Tg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=H8QyMLMQej0y5Ml6gdr7BjSJ0t+suCdUBtswhQKq/s4=; fh=dxJXJbLzq9Nah1LUdsj4QTuQ3JoDScd0wp1YHY64NXM=; b=VlLgBfw6awoFaN73V1HEh/byo4iEjmc+Y/8Blnn1n+LYo3qq3uxugYlJf/BoZZ59wr +uN2OAh23nZIToVA1IvxcFi5yfOkqOOIo0WuAd7xkcGTFF2dybhUzAo2C6FxExQ522NR hp0yduxSGWftHg2xQXlYapb0+83T2d1eutIYoopUpo7LO7Us2bHeahQImo7nNQ2EUx8m vym40z5xnrkU31Z0mMudHSoTCj39hJ6wVrjnCYEVGnijqDEV9cuFm4zteUa9qUy2P6Gt iNI1smuOpB9bmy13lQdSPB+69/1ZENrqIzbiIHEYNw/cQGHKhDl0vr16voRM7V05uLi+ j2xg==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776258779; x=1776863579; darn=lists.postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=H8QyMLMQej0y5Ml6gdr7BjSJ0t+suCdUBtswhQKq/s4=; b=SGC5Au3gjIiNF1D9JH88shPRW9dsMlM80wyE+QL/VXF5KAQay32O4HAzLFdEypuUPP 5wKioM3CH9FP+4NBJH1Ns2rGk+n/PBty0zwBOUzp54GcjB5B01v+eMqWUZdZCtpaY8nW RRfgciQDpNOqmTyJwFAmJ2jGLsnHe1NSrDFjgO4+K4MveNnenx8B6JUevsly0DgQJo9U IAHcTXCTeTwZOm8DEYSYgXdxBgvlMlojDfpNHz9c2BcDImfCfQEj1D1dIwtI9d1Iel2w dUKGIWKC+jQg7b7EW/mQPu43Qd0HfiBsI7LdX7CT0ReZfkDy4Qlyip9gfYaIq8FVEhec cLYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776258779; x=1776863579; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=H8QyMLMQej0y5Ml6gdr7BjSJ0t+suCdUBtswhQKq/s4=; b=UkY/9De5Vok9V6MN3pM+/LNNWAHloc8lMIsSy4ai22DNAyyYOQ4nIL30ezr/bR8w0j a7OGQf8tWLYaXBSUl5MXeCLYu/vU8IUTwJq7aJwz8IM2zzz3Xd65QZPQI5tg/h6yQd7K QwgWCfMgsVfZKZoiCZA//jTZ17F8zeF2GLe8DiH9cEG5Dev15NZNeJ9c8ihpp6EtPqA1 wnlfIzHVzqipYIklgZWAUvkLyDANwpDd4BajmnLjStSlKoQ1YmUAM9+pkegaXlZf9+MX jVnjddTeh0iyNYZNBnPCWcCJW0D/CfIByN0q867+fTDw+w069xKPoxvLcWzks/sl9DD+ umrw== X-Gm-Message-State: AOJu0YzHWIwxrl78F8uVBO6Cco8Kb4HgDv8JBAPW82Vhn4srjLplQ8qB 1KWfROvyblP2HJ22TPr+zLtuwaaoEKqdtfSBWjCzo3Oc0OjOxJigzAWbpGeRonbxiiyn1G42xhp RJ3JSTqyaz8YnzlzfLYmq7A3l6fbpTgK2hklT X-Gm-Gg: AeBDiet0UTbHCDMO4g0PpR/SW7attC/8GLKyeEewZcPoE8gR0waXL3RXcuZyfVDGkz6 uk/BN8AAusEj0mEifj4szpzt8UyA7WzE2cBx30tJ8UzNcvklaHawCxV+FmPMoBJcMLbeP4kCIF2 9rbFg763gX+aaLRRWr1yy1Rfno4tNng1hoXtpUCBDTKMNfQR4ike5fIhTCZoIIlyrTuGWb7BrpA IAAA64IjZwRPa4xNEyOwuxpoM6zPoVFyCyPuE6YLrhW1B1dXSt5ClK9NoTeYqMp8vcr0wOJzcLx GA76ERbu80QMkNuOgMcpulp8TdsLZVgwdmLfNJBFhA== X-Received: by 2002:a05:690c:6009:b0:7a3:7f71:38ae with SMTP id 00721157ae682-7af72823485mr226525887b3.54.1776258779453; Wed, 15 Apr 2026 06:12:59 -0700 (PDT) MIME-Version: 1.0 From: vignesh C Date: Wed, 15 Apr 2026 18:42:47 +0530 X-Gm-Features: AQROBzDbiDebamF0FJ0ZkwwUby--0ubX2Mm3BEWvXoyJT-ZRb2HccSX9sr641-c Message-ID: Subject: Fix tab completion after EXCEPT (...) in IMPORT FOREIGN SCHEMA To: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000949344064f7f7912" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000949344064f7f7912 Content-Type: text/plain; charset="UTF-8" Hi all, While reviewing tab completion behavior, I noticed an issue after EXCEPT (...) support was added to CREATE PUBLICATION. Currently, after typing: IMPORT FOREIGN SCHEMA public EXCEPT (t1) psql correctly suggests FROM SERVER. However, the existing completion rule uses a generic: TailMatches("EXCEPT", "(*)") Previously this was safe because no other command used EXCEPT (...). Now that CREATE PUBLICATION also supports EXCEPT (...), the same rule can incorrectly match publication commands and suggest FROM SERVER there as well. The attached patch fixes this by restricting the EXCEPT (...) path to IMPORT FOREIGN SCHEMA using HeadMatches(), while preserving the existing LIMIT TO (...) behavior. Regards, Vignesh --000000000000949344064f7f7912 Content-Type: application/octet-stream; name="0001-Fix-tab-completion-after-EXCEPT-in-IMPORT-FOREIGN-SC.patch" Content-Disposition: attachment; filename="0001-Fix-tab-completion-after-EXCEPT-in-IMPORT-FOREIGN-SC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo02jlem0 RnJvbSAwNTU4YWVhYWQ2YjAxODgwNGFhY2Y2MGVmMDBiYjRkYzNhZDYyZTdlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgMTUgQXByIDIwMjYgMTg6MzA6MDMgKzA1MzAKU3ViamVjdDogW1BBVENIXSBGaXggdGFi IGNvbXBsZXRpb24gYWZ0ZXIgRVhDRVBUKCkgaW4gSU1QT1JUIEZPUkVJR04gU0NIRU1BCgpUYWIg Y29tcGxldGlvbiBmb3IgSU1QT1JUIEZPUkVJR04gU0NIRU1BIGluY29ycmVjdGx5IHN1Z2dlc3Rl ZCBGUk9NClNFUlZFUiBhZnRlciBFWENFUFQgKC4uLiksIGJlY2F1c2UgRVhDRVBUICguLi4pIGlz IG5vdyBhbHNvIHZhbGlkIGluCkNSRUFURSBhbmQgQUxURVIgUFVCTElDQVRJT04uCgpQcmV2aW91 c2x5LCB0aGUgZ2VuZXJpYyBUYWlsTWF0Y2hlcygiRVhDRVBUIiwgIigqKSIpIGNoZWNrIHdhcyBz YWZlCmJlY2F1c2Ugbm8gb3RoZXIgY29tbWFuZCB1c2VkICdFWENFUFQgKC4uLiknLiBBZnRlciBh ZGRpbmcgc3VwcG9ydCBmb3IKJ0VYQ0VQVCAoLi4uKScgaW4gcHVibGljYXRpb24gY29tbWFuZHMs IHRoZSBzYW1lIGNvbXBsZXRpb24gcnVsZSBzdGFydGVkCm1hdGNoaW5nIHVucmVsYXRlZCBzdGF0 ZW1lbnRzIGFuZCBpbmNvcnJlY3RseSBvZmZlcmVkICdGUk9NIFNFUlZFUicKdGhlcmUgYXMgd2Vs bC4KCkZpeCB0aGlzIGJ5IHJlc3RyaWN0aW5nIHRoZSAnRVhDRVBUICguLi4pJyBjb21wbGV0aW9u IHBhdGggdG8KJ0lNUE9SVCBGT1JFSUdOIFNDSEVNQScgdXNpbmcgSGVhZE1hdGNoZXMoKSwgd2hp bGUga2VlcGluZyB0aGUKZXhpc3RpbmcgJ0xJTUlUIFRPICguLi4pJyBiZWhhdmlvciB1bmNoYW5n ZWQuCgpUaGlzIGVuc3VyZXMgJ0ZST00gU0VSVkVSJyBpcyBzdWdnZXN0ZWQgb25seSBmb3IgdmFs aWQKJ0lNUE9SVCBGT1JFSUdOIFNDSEVNQScgc3ludGF4LgotLS0KIHNyYy9iaW4vcHNxbC90YWIt Y29tcGxldGUuaW4uYyB8IDQgKysrLQogMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwg MSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4u YyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA5OTkwZjgxODk0Mi4uODg0 NDQwOTZkYzEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysg Yi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTQ4OTksOSArNDg5OSwxMSBAQCBt YXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lUSCgiU0NI RU1BIik7CiAJZWxzZSBpZiAoTWF0Y2hlcygiSU1QT1JUIiwgIkZPUkVJR04iLCAiU0NIRU1BIiwg TWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJFWENFUFQgKCIsICJGUk9NIFNFUlZFUiIsICJM SU1JVCBUTyAoIik7Ci0JZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkxJTUlUIiwgIlRPIiwgIigqKSIp IHx8CisJZWxzZSBpZiAoSGVhZE1hdGNoZXMoIklNUE9SVCIsICJGT1JFSUdOIiwgIlNDSEVNQSIs IE1hdGNoQW55KSAmJgogCQkJIFRhaWxNYXRjaGVzKCJFWENFUFQiLCAiKCopIikpCiAJCUNPTVBM RVRFX1dJVEgoIkZST00gU0VSVkVSIik7CisJZWxzZSBpZiAoVGFpbE1hdGNoZXMoIkxJTUlUIiwg IlRPIiwgIigqKSIpKQorCQlDT01QTEVURV9XSVRIKCJGUk9NIFNFUlZFUiIpOwogCWVsc2UgaWYg KFRhaWxNYXRjaGVzKCJGUk9NIiwgIlNFUlZFUiIsIE1hdGNoQW55KSkKIAkJQ09NUExFVEVfV0lU SCgiSU5UTyIpOwogCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJGUk9NIiwgIlNFUlZFUiIsIE1hdGNo QW55LCAiSU5UTyIpKQotLSAKMi40My4wCgo= --000000000000949344064f7f7912--