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 1w5QP5-003Erp-1P for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 15:44:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w5QP3-00EpTD-1Z for pgsql-hackers@arkaria.postgresql.org; Wed, 25 Mar 2026 15:44:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w5QP3-00EpT5-0E for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 15:44:17 +0000 Received: from mail-lj1-x232.google.com ([2a00:1450:4864:20::232]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w5QP1-00000000zQc-114L for pgsql-hackers@lists.postgresql.org; Wed, 25 Mar 2026 15:44:16 +0000 Received: by mail-lj1-x232.google.com with SMTP id 38308e7fff4ca-38bd3bc3061so22495161fa.0 for ; Wed, 25 Mar 2026 08:44:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774453452; cv=none; d=google.com; s=arc-20240605; b=ecpV9cXjbDzz7hZx4lvZdTowAx/KW3C1CdUcQLmRPm9QAB6NeQgPufSHA1iKJPcoQ2 8c1KklVtjcHeleo2VpawhMKhZ3/2UYfc7x+gd8QEXLGNLnyQLMvy6NfWpdQKicl2ihWE 6R+Ije17IRQZ+xM8ulzkDCmm49Xc+X0EYhIDzKpEZ9A6HmuzGit8bl23CiVKn3NlAVAS Kynrp3C/NgWN1YjRqzGI4cn5RYHNcdr8vvWSys/WUPd79YH5BM96LMZv8DSp95PehHxZ FvthaewxfNgYG11NyDKJXpI6d4632PO/pUTWAsuRWveSgWLcUFnmdZ/IBDh8mxTfwmjJ 6D+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=n9Z7IPyqRbs+trlmgX5AK05/CgsNb1n+V/aBWcC/Pd8=; fh=VBNwFeTKPD6JyXfEJ6bRowk77UQDIqSEhWuLy2FA8w8=; b=DdihJiu+Y5aI7W495HI9/NdJjfYiFdiiVZA33NVh+86V6ROvVG8Gn0aY52WNKzhO2X wG7xbgM7utUDOr1lvAJbvU5T0ppsvo4PBCcflBDAogVtg8Ig6kYqKayj7apDt9Djw5Z0 gtX0wwFBOUPVmnXf0ymGxNZhPIkfI139H20l0a5Ar0qT/ZDGI0+XkxWwU3MbEiONQrhO lwRSNVPNHIGEju7+IaR/0x3j3L1QjO+eIYegQ/M1/NJ2LTlgutkNoAuXF/vdHr0/fxhB jlleByZox7bdHco4FrIDwh3nHQpqH1qsKIW3DxkR/+PmIhcpF4amJ3T9L1Oo5lUkCpl4 /9Hg==; 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=1774453452; x=1775058252; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=n9Z7IPyqRbs+trlmgX5AK05/CgsNb1n+V/aBWcC/Pd8=; b=fk/iCGmYVNGGGtpw2WYIRYMvxF8FDjmnEYZ/Wioybg9NvOtek071Ncx6tknEqVl2Ua vKkoIpUyWMKH415WkG5WsTKYcFoCN/6Vax81rVAcYCDhXe+G/GZSpPq7blQXaBDEVisg 9tupMIBAkk1k1+d4TAty/RzX3zP2vneofIxBJqz8OtskI6pCHNmHKxOQ1RWvxDaQqU0u Wh5U90rqjVGWFShqb1GvvkWMP/i8Y9pEFJes5ZR8l6WcUCFXHbf9MIyUCyoskmydTr5W c9vMzHRVs8rPSQiD6Eno5EuCQLuKDxRYIs+SWuc1Cd+zZ/taPquL4hP/0OzN7GV1njHb xoJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774453452; x=1775058252; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=n9Z7IPyqRbs+trlmgX5AK05/CgsNb1n+V/aBWcC/Pd8=; b=ioE2eOg5m6/wqKG+hS3wH3f95bZ1o+/QR3OYE6tTZeRed+iejGSFtyDoG7v3oj54Ew 3igrhVjxoMwFbYZST1YgP+L+QUGAY1zP/ba4Ri+D2w3ccy4d7dDHhwzUMUesIJe5rGNR uKtBLubG2wkgXhCztPDPRu8UyatC1l09908abHi8S06L4qAUk0UuB+Pos0GIwPhvZHrf FzCkHfqGjdQ+2++AdG8HIzFsvtx4vuBYrWbdokzmiPgaSXBAE0kL0zTZmyl9Xkdp4G3x CshtVxj3IP+ORH1UBQwnS82csqeeBLTrXty9SFKdC6v09eZk4RxgOrRSvhkQIPeaHL6m qxTA== X-Gm-Message-State: AOJu0YxB9veQEQQQm1SHnx5kJfJZkXhkloJImy8h8/FLiJkhV5RCsWq4 Fn5+qYFe86R1zuV99mIotTM3Thsj9smqL+8mTE2S+IVwP3ZzDqZk3PO7nzDLvKKHE+j6iMqMTD0 JX3cg4dxsUK5BKeXZJLaUhVIc69TDXs4= X-Gm-Gg: ATEYQzyYmHNEIVrqLY+26jDlbbzePLeNayTDzYjnLiEd+2jGlQnddiZ8RGv3/Sw4c+A q/vZaSQkwdXOgRjcsmqGBQX7/AjuUFNFEshJmlyHmdfexMOwUt0PR2B/7zBtXio+rLTbLpZ6IHu qzip8PE0X6pkznZ9XgIT2qrcGo+JsbagPqjqBcNWsQFjU2Mhk7LgGbXEFWNVVLHsBdoJz3a0bAM Gch+L/AZLeCPhyKWKjIhGDWtzyjMZhAIGcXLpJgUTek06qjpFqxYDSOP4xGKm1A4pAVDZTMARPs RQqaRyc= X-Received: by 2002:a05:651c:4081:b0:389:fa5e:51f9 with SMTP id 38308e7fff4ca-38c43163eb1mr10058261fa.27.1774453451924; Wed, 25 Mar 2026 08:44:11 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Yamaguchi Atsuo Date: Wed, 25 Mar 2026 08:43:58 -0700 X-Gm-Features: AQROBzAYbDw94xQW_YW_HZgQVk5F5LbSjrBPHt-wsNZrsXWZCMscRokugeZ8eyQ Message-ID: Subject: Re: Add tab completion for SERVER and CONNECTION keywords in psql To: Masahiko Sawada Cc: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000ac4cb8064ddb23cd" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ac4cb8064ddb23cd Content-Type: multipart/alternative; boundary="000000000000ac4cb6064ddb23cb" --000000000000ac4cb6064ddb23cb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Mon, Mar 23, 2026 at 1:14=E2=80=AFPM Masahiko Sawada wrote: > Hi, > > On Sun, Mar 22, 2026 at 1:30=E2=80=AFPM Yamaguchi Atsuo > wrote: > > > > Hi, > > > > This patch adds missing tab completion support in psql for: > > > > - SERVER keyword after ALTER/CREATE SUBSCRIPTION > > - CONNECTION keyword after ALTER/CREATE FOREIGN DATA WRAPPER > > > > Currently, typing "ALTER SUBSCRIPTION sub1 SERVER" and pressing Tab > > does not complete server names, even though the SERVER keyword itself > > is already suggested. Similarly, CONNECTION is not suggested as a > > completion candidate for FOREIGN DATA WRAPPER commands, despite being > > a valid option. > > > > The patch is generated against the current master branch. > > It's a fix for an oversight of commit 8185bb5347 rather than proposing > a new tab-completion. Good catch. Regarding the patch, I have one > comment: > > /* ALTER FOREIGN DATA WRAPPER */ > else if (Matches("ALTER", "FOREIGN", "DATA", "WRAPPER", MatchAny)) > COMPLETE_WITH("HANDLER", "VALIDATOR", "NO", > - "OPTIONS", "OWNER TO", "RENAME TO"); > + "OPTIONS", "OWNER TO", "RENAME TO", "CONNECTION"); > > I think it's better to maintain the keywords in the list in alphabetical > order. > > Regards, > > -- > Masahiko Sawada > Amazon Web Services: https://aws.amazon.com Thank you for the review. I have updated the code to maintain the keywords in alphabetical order. Regards, Atsuo Yamaguchi --000000000000ac4cb6064ddb23cb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

On Mon, Mar 23, = 2026 at 1:14=E2=80=AFPM Masahiko Sawada <sawada.mshk@gmail.com> wrote:
Hi,

On Sun, Mar 22, 2026 at 1:30=E2=80=AFPM Yamaguchi Atsuo <acrobatcoder@gmail.com>= wrote:
>
> Hi,
>
> This patch adds missing tab completion support in psql for:
>
> - SERVER keyword after ALTER/CREATE SUBSCRIPTION <name>
> - CONNECTION keyword after ALTER/CREATE FOREIGN DATA WRAPPER <name&= gt;
>
> Currently, typing "ALTER SUBSCRIPTION sub1 SERVER" and press= ing Tab
> does not complete server names, even though the SERVER keyword itself<= br> > is already suggested. Similarly, CONNECTION is not suggested as a
> completion candidate for FOREIGN DATA WRAPPER commands, despite being<= br> > a valid option.
>
> The patch is generated against the current master branch.

It's a fix for an oversight of commit 8185bb5347 rather than proposing<= br> a new tab-completion. Good catch. Regarding the patch, I have one
comment:

=C2=A0 =C2=A0 /* ALTER FOREIGN DATA WRAPPER <name> */
=C2=A0 =C2=A0 else if (Matches("ALTER", "FOREIGN", &quo= t;DATA", "WRAPPER", MatchAny))
=C2=A0 =C2=A0 =C2=A0 =C2=A0 COMPLETE_WITH("HANDLER", "VALIDA= TOR", "NO",
-=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0"OPTIONS", "OWNER TO", "RENAME TO");
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0"OPTIONS", "OWNER TO", "RENAME TO", "= CONNECTION");

I think it's better to maintain the keywords in the list in alphabetica= l order.

Regards,

--
Masahiko Sawada
Amazon Web Services: https://aws.amazon.com

=C2=A0Thank you for the review. I have updated the code to maintain the k= eywords in alphabetical order.

Regards,
Atsuo Yamaguchi
--000000000000ac4cb6064ddb23cb-- --000000000000ac4cb8064ddb23cd Content-Type: application/octet-stream; name="0001-Add-tab-completion-for-SERVER-and-CONNECTION-keyword.patch" Content-Disposition: attachment; filename="0001-Add-tab-completion-for-SERVER-and-CONNECTION-keyword.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn67pu6v0 RnJvbSBkODgyZjgwNjk3MWYwZmVhYTcxMzgwM2RlZDdmODE0ZDkzMzYyOGIzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiQXRzdW8gKEpvcmdlKSBZYW1hZ3VjaGkiIDxhY3JvYmF0Y29k ZXJAZ21haWwuY29tPgpEYXRlOiBXZWQsIDI1IE1hciAyMDI2IDA1OjMwOjExICswMDAwClN1Ympl Y3Q6IFtQQVRDSF0gQWRkIHRhYiBjb21wbGV0aW9uIGZvciBTRVJWRVIgYW5kIENPTk5FQ1RJT04g a2V5d29yZHMgaW4gcHNxbAoKVGhlIFNFUlZFUiBrZXl3b3JkIGluIEFMVEVSL0NSRUFURSBTVUJT Q1JJUFRJT04gYW5kIHRoZSBDT05ORUNUSU9OCmtleXdvcmQgaW4gQUxURVIvQ1JFQVRFIEZPUkVJ R04gREFUQSBXUkFQUEVSIHdlcmUgbWlzc2luZyBmcm9tCnBzcWwncyB0YWIgY29tcGxldGlvbiBz dXBwb3J0LiBUaGlzIHBhdGNoIGFkZHMgdGhlbS4KLS0tCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMgfCAxNCArKysrKysrKystLS0tLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9u cygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBs ZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNWJkYmYxNTMw YTIuLjI4YWViNTI0YmFmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmlu LmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMzQyLDYgKzIzNDIs OCBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAkJQ09NUExFVEVfV0lU SCgiQ09OTkVDVElPTiIsICJFTkFCTEUiLCAiRElTQUJMRSIsICJPV05FUiBUTyIsCiAJCQkJCSAg IlJFTkFNRSBUTyIsICJSRUZSRVNIIFBVQkxJQ0FUSU9OIiwgIlJFRlJFU0ggU0VRVUVOQ0VTIiwK IAkJCQkJICAiU0VSVkVSIiwgIlNFVCIsICJTS0lQICgiLCAiQUREIFBVQkxJQ0FUSU9OIiwgIkRS T1AgUFVCTElDQVRJT04iKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJTVUJTQ1JJUFRJ T04iLCBNYXRjaEFueSwgIlNFUlZFUiIpKQorCQlDT01QTEVURV9XSVRIX1FVRVJZKFF1ZXJ5X2Zv cl9saXN0X29mX3NlcnZlcnMpOwogCS8qIEFMVEVSIFNVQlNDUklQVElPTiA8bmFtZT4gUkVGUkVT SCAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlNVQlNDUklQVElPTiIsIE1hdGNoQW55 LCBNYXRjaEFueU4sICJSRUZSRVNIIikpCiAJCUNPTVBMRVRFX1dJVEgoIlBVQkxJQ0FUSU9OIiwg IlNFUVVFTkNFUyIpOwpAQCAtMjQ1OCwxMCArMjQ2MCwxMCBAQCBtYXRjaF9wcmV2aW91c193b3Jk cyhpbnQgcGF0dGVybl9pZCwKIAogCS8qIEFMVEVSIEZPUkVJR04gREFUQSBXUkFQUEVSIDxuYW1l PiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIkZPUkVJR04iLCAiREFUQSIsICJXUkFQ UEVSIiwgTWF0Y2hBbnkpKQotCQlDT01QTEVURV9XSVRIKCJIQU5ETEVSIiwgIlZBTElEQVRPUiIs ICJOTyIsCi0JCQkJCSAgIk9QVElPTlMiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIik7CisJCUNP TVBMRVRFX1dJVEgoIkNPTk5FQ1RJT04iLCAiSEFORExFUiIsICJOTyIsCisJCQkJCSAgIk9QVElP TlMiLCAiT1dORVIgVE8iLCAiUkVOQU1FIFRPIiwgIlZBTElEQVRPUiIpOwogCWVsc2UgaWYgKE1h dGNoZXMoIkFMVEVSIiwgIkZPUkVJR04iLCAiREFUQSIsICJXUkFQUEVSIiwgTWF0Y2hBbnksICJO TyIpKQotCQlDT01QTEVURV9XSVRIKCJIQU5ETEVSIiwgIlZBTElEQVRPUiIpOworCQlDT01QTEVU RV9XSVRIKCJDT05ORUNUSU9OIiwgIkhBTkRMRVIiLCAiVkFMSURBVE9SIik7CiAKIAkvKiBBTFRF UiBGT1JFSUdOIFRBQkxFIDxuYW1lPiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIkZP UkVJR04iLCAiVEFCTEUiLCBNYXRjaEFueSkpCkBAIC0zNTQ4LDcgKzM1NTAsNyBAQCBtYXRjaF9w cmV2aW91c193b3JkcyhpbnQgcGF0dGVybl9pZCwKIAogCS8qIENSRUFURSBGT1JFSUdOIERBVEEg V1JBUFBFUiAqLwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJGT1JFSUdOIiwgIkRBVEEi LCAiV1JBUFBFUiIsIE1hdGNoQW55KSkKLQkJQ09NUExFVEVfV0lUSCgiSEFORExFUiIsICJWQUxJ REFUT1IiLCAiT1BUSU9OUyIpOworCQlDT01QTEVURV9XSVRIKCJDT05ORUNUSU9OIiwgIkhBTkRM RVIiLCAiT1BUSU9OUyIsICJWQUxJREFUT1IiKTsKIAogCS8qIENSRUFURSBGT1JFSUdOIFRBQkxF ICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIkZPUkVJR04iLCAiVEFCTEUiLCBNYXRj aEFueSkpCkBAIC0zOTE0LDcgKzM5MTYsOSBAQCBtYXRjaF9wcmV2aW91c193b3JkcyhpbnQgcGF0 dGVybl9pZCwKIAogLyogQ1JFQVRFIFNVQlNDUklQVElPTiAqLwogCWVsc2UgaWYgKE1hdGNoZXMo IkNSRUFURSIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFueSkpCi0JCUNPTVBMRVRFX1dJVEgoIlNF UlZFUiIsICJDT05ORUNUSU9OIik7CisJCUNPTVBMRVRFX1dJVEgoIkNPTk5FQ1RJT04iLCAiU0VS VkVSIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1hdGNo QW55LCAiU0VSVkVSIikpCisJCUNPTVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zf c2VydmVycyk7CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlNVQlNDUklQVElPTiIsIE1h dGNoQW55LCAiU0VSVkVSIiwgTWF0Y2hBbnkpKQogCQlDT01QTEVURV9XSVRIKCJQVUJMSUNBVElP TiIpOwogCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJTVUJTQ1JJUFRJT04iLCBNYXRjaEFu eSwgIkNPTk5FQ1RJT04iLCBNYXRjaEFueSkpCi0tIAoyLjQ3LjMKCg== --000000000000ac4cb8064ddb23cd--