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 1w6kDB-004biA-1l for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Mar 2026 07:05:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6kD9-00Fve1-2j for pgsql-hackers@arkaria.postgresql.org; Sun, 29 Mar 2026 07:05:28 +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 1w6kD9-00Fvds-1h for pgsql-hackers@lists.postgresql.org; Sun, 29 Mar 2026 07:05:27 +0000 Received: from mail-lj1-x231.google.com ([2a00:1450:4864:20::231]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w6kD6-00000001ma4-3VSH for pgsql-hackers@lists.postgresql.org; Sun, 29 Mar 2026 07:05:27 +0000 Received: by mail-lj1-x231.google.com with SMTP id 38308e7fff4ca-38b50c79f2fso34232461fa.3 for ; Sun, 29 Mar 2026 00:05:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774767924; cv=none; d=google.com; s=arc-20240605; b=k9cS6JlfBqKw5/hf1s9+wgfhBiVrfScN3S4rGCtykrfIJ+4kguHUDELeaaJVwamK/j 0TD2tUkZjDJ72BMmLJFJLTlFkWJk933Oc5vDmNoiTySz1leT7lUzERhCmcNdtMAuyrhJ 1vAuHhSnbiYhflcOdoBs2bhHrdnq9hfg7pG2YtNgQE+hsOaF4dv7nilk+az3WqOWsctY 32xRP16lfzXTH/bixQHNwv4kzZFSrFMO4LwmqIMGxDBgfNFICD2YaK6VfPPjNTnhJIZ2 uytbnZsQD5nPCNHgwg+GPQy+f+1NeMFzc7sdyEQGPE583gr3QoBbmjtEFBK8zQsL2WZR Ke7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=P9IZlWjglfByqpRKe4G52150TgjbQa+fCmzN8j4IWKg=; fh=nwNxTtLLPTU0ewfLM7SSbrjMajMl+wwnFkCY/fi90vE=; b=cVmPLlZXEfJfqhIas0aX7NgY9w4ZS2Rk1lwnSJ17ETAR8RWP2+P2wWxIFzR7BojvSu 20d+lOZTBNSpO+E79jJhQs4rsPMcB/XKFDfqegR20zD4OBxGe4xiu7ZxubTpVSWQFpzW LUrHM3cFMEupdJbwKBHI38dXwFLtZ0w12ex8UUoKPd/IED3ogQE8J2EVWG9Uu0ubFNQA HaICeJpHQ/uubKDFkpNISkwkc8YH58sWmc+tUmQR2GgDFvGhJ7quf+ISNnZRK3dy0USh H9ZyvH+pkYxhdfHR35zfbibdii68nP5jEFg1HifH+rDREJ6xM8nf4iPQutwlV/f2+i8d RBng==; 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=1774767924; x=1775372724; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=P9IZlWjglfByqpRKe4G52150TgjbQa+fCmzN8j4IWKg=; b=XAD5cYyub/8Jlh67UybeGeZPehlj1aqFIeqhH9wsxqeJYz0p2h7JCFoBOWXdk+tksi wS6cVkr48pgYDjbRJnQxNZoO3DbaHIrfptSD2LnlMUXlPEHHCIcjLIEH1RJQVRk37CtZ qozzNO2DCaqnfAihwPTNK2hAbecKkKQlusdbCpdVjteswNCSuwPAQYehmCOkwM9bbKIu 95vcTrPL6Zb5cwLBEp+XNoa3KTKjYa3eLlhp3++YecvNqwHHgSQPb0iRr1/3+5+qB4G0 BLELyHI5Q/HXUl7AcHSrXwysnNXN9mJoqz7q8q7i4Yfr0LMKDQ+H9TYaKv+o3MYR8qYM dSUQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774767924; x=1775372724; h=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=P9IZlWjglfByqpRKe4G52150TgjbQa+fCmzN8j4IWKg=; b=LElwYtcH7tGY6j0SjKtjnmBQzphIf4NLDzI8HHzjRWcUaydPjeTQ8DC3S2/cXP7c4d HyU6xXedfUnYVe997OAi8QIPwImVqCHpoiDa9kSK/zcNam5ryK4I9hM1oKeK9frh4vSE KYcGiV0Zxmd7grvEriHpmCd3TAHMUCWVtvLokAEwpI2ztoRT8cPT3I0RWAo5PFEbfmLY YcXmhAOLLgjEmdaf5LNuGrcyIIMR6oXbhhZGtvxg3n+qvmTolsi19qoEXSLj90c8cg41 Yy46ZQKFEj8Hyk40JeEdInGh+WKScFMrClVTItowWq9JGt43hV7FQosWwNThNUGMR7EW N8ng== X-Gm-Message-State: AOJu0Yxv2JFSlhfxrPTP3I72gPSTE0JT24Ja+/hCXMsHAJXJm+KqENaD iPCGdO80cgQ74dFEC9f0RKRhu3V4bUh9DTGAkhiEDaFHBneXez9UmaCzkFgVrIRdSDx1SysW+mh KpLNgVIBklZXn/vkEBQwjluU+dUf7H9/yiIcKImihyNLK7+4= X-Gm-Gg: ATEYQzyiVvDtrhzYcqcB/j26/5pBEy7XYRD4vCe5mN86mwphhvRnVcOl/NLRiBTE0nN s7r6mTMgGYiyoZK/3lTAfsx3/KbxhCaFG9Q5JQpcde4+GmfIJ9XLI5mYTPpAB38LOEEejpnDs15 q4g9rn7Bw+f56dOp4Y9YuxjH9Prwx9EOJajxu7XTyEeMSuAYHLZDMqsnjtAWXbJOySEaKYueUxc LQvdqIQbbOclX9iAdnhd+U/STlsspy5YKdg+Kku6ZqHKLGtOc0ip/rjilbHSGQ6FeEukLuC47ie tdTz8RZ+gOPqG7uHq2CR5QyyCKs2HHLIjQhLn4z+0lS2cQM0ol58ZVi7ptcVz15JI3NT7EY= X-Received: by 2002:a2e:a809:0:b0:38a:6acc:85e with SMTP id 38308e7fff4ca-38c7401b8aamr27846201fa.32.1774767923927; Sun, 29 Mar 2026 00:05:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Xianbin Zhu Date: Sun, 29 Mar 2026 15:05:11 +0800 X-Gm-Features: AQROBzD2BAMcamozQ6wTCd5ioT6D-hfm8sw0F5LC_UBMPMVpEpM4mBIzXfP5N24 Message-ID: Subject: [PATCH v1] psql: complete ALTER ROLE ... IN DATABASE ... RESET To: pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000aa42f8064e245bc5" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000aa42f8064e245bc5 Content-Type: multipart/alternative; boundary="000000000000aa42f7064e245bc3" --000000000000aa42f7064e245bc3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi hackers, As discussed, here's a patch to add psql tab-completion support for: ALTER ROLE/USER IN DATABASE RESET ... Changes: - Add completion path for "... IN DATABASE RESET" - Offer GUC names and ALL after RESET - Add tab-completion test coverage in src/bin/psql/t/010_tab_completion.pl Testing: - make -j8 - make check (all tests passed in my environment) Patch attached. Thanks, xianbinzhu On Sun, Mar 29, 2026 at 2:50=E2=80=AFPM Xianbin Zhu wrote: > Hi hackers, > > I'd like to work on a small psql tab-completion improvement. > > Problem: > psql currently has a missing completion path for: > ALTER ROLE IN DATABASE RESET ... > > There is an in-code TODO marker for this case in > src/bin/psql/tab-complete.in.c. > > Proposal: > - Add completion support after "... IN DATABASE RESET" > - Reuse existing completion behavior/style used by ALTER ROLE ... RESET > - Add regression coverage in src/bin/psql/t/010_tab_completion.pl > > Non-goals: > - No backend behavior changes > - No SQL grammar changes > > If this direction looks good, I can send a patch. > > Thanks, > xianbinzhu > --000000000000aa42f7064e245bc3 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi hackers,

As discussed, here'= ;s a patch to add psql tab-completion support for:

ALTER ROLE/USER &= lt;name> IN DATABASE <db> RESET ...

Changes:
- Add compl= etion path for "... IN DATABASE <db> RESET"
- Offer GUC = names and ALL after RESET
- Add tab-completion test coverage in src/bin/= psql/t/010_tab_completion.pl
Testing:
- make -j8
- make check (all tests passed in my enviro= nment)

Patch attached.

Thanks,
xianbinzhu

On Sun, Mar 29, 2026 at 2:50=E2=80=AFPM Xianbin Zhu <xianbin.aaronzhu@gmail.com> wrote:
= Hi hackers,

I'd like to work on a small psql tab-completion impr= ovement.

Problem:
psql currently has a missing completion path fo= r:
ALTER ROLE <role> IN DATABASE <db> RESET ...

There= is an in-code TODO marker for this case in src/bin/psql/tab-complete.in.c.=

Proposal:
- Add completion support after "... IN DATABASE &= lt;db> RESET"
- Reuse existing completion behavior/style used by= ALTER ROLE ... RESET
- Add regression coverage in src/bin/psql/t/010_tab_completion.pl<= /a>

Non-goals:
- No backend behavior changes
- No SQL grammar = changes

If this direction looks good, I can send a patch.

Tha= nks,
xianbinzhu
--000000000000aa42f7064e245bc3-- --000000000000aa42f8064e245bc5 Content-Type: application/octet-stream; name="0001-psql-complete-ALTER-ROLE-.-IN-DATABASE-.-RESET.patch" Content-Disposition: attachment; filename="0001-psql-complete-ALTER-ROLE-.-IN-DATABASE-.-RESET.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnbexbqm0 RnJvbSA2YjgwNjY4NzgzZGNhNDE1OTMyYjFkODY3NGM5ZTVmYTdjNmEzNTQ3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB4aWFuYmluemh1IDx4aWFuYmluLmFhcm9uemh1QGdtYWlsLmNv bT4KRGF0ZTogU3VuLCAyOSBNYXIgMjAyNiAxNDo1NTo0OCArMDgwMApTdWJqZWN0OiBbUEFUQ0hd IHBzcWw6IGNvbXBsZXRlIEFMVEVSIFJPTEUgLi4uIElOIERBVEFCQVNFIC4uLiBSRVNFVAoKU2ln bmVkLW9mZi1ieTogeGlhbmJpbnpodSA8eGlhbmJpbi5hYXJvbnpodUBnbWFpbC5jb20+Ci0tLQog c3JjL2Jpbi9wc3FsL3QvMDEwX3RhYl9jb21wbGV0aW9uLnBsIHwgMTIgKysrKysrKysrKysrCiBz cmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgICAgICAgfCAgNCArKystCiAyIGZpbGVzIGNo YW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmMv YmluL3BzcWwvdC8wMTBfdGFiX2NvbXBsZXRpb24ucGwgYi9zcmMvYmluL3BzcWwvdC8wMTBfdGFi X2NvbXBsZXRpb24ucGwKaW5kZXggMWQyZTVmNWI5MmEuLjVlN2I5NTZhMDEyIDEwMDY0NAotLS0g YS9zcmMvYmluL3BzcWwvdC8wMTBfdGFiX2NvbXBsZXRpb24ucGwKKysrIGIvc3JjL2Jpbi9wc3Fs L3QvMDEwX3RhYl9jb21wbGV0aW9uLnBsCkBAIC00NCw2ICs0NCw3IEBAICRub2RlLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKIAkgIC4gIkNSRUFURSBUQUJMRSBteXRhYjI0NiAoZjEgaW50LCBmMiB0 ZXh0KTtcbiIKIAkgIC4gIkNSRUFURSBUQUJMRSBcIm1peGVkTmFtZVwiIChmMSBpbnQsIGYyIHRl eHQpO1xuIgogCSAgLiAiQ1JFQVRFIFRZUEUgZW51bTEgQVMgRU5VTSAoJ2ZvbycsICdiYXInLCAn YmF6JywgJ0JMQUNLJyk7XG4iCisJICAuICJDUkVBVEUgUk9MRSB0YWJjb21wX3JvbGU7XG4iCiAJ ICAuICJDUkVBVEUgUFVCTElDQVRJT04gc29tZV9wdWJsaWNhdGlvbjtcbiIpOwogCiAjIEluIGEg VlBBVEggYnVpbGQsIHdlJ2xsIGJlIHN0YXJ0ZWQgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnksIGJ1 dCB3ZSB3YW50CkBAIC0yMjgsNiArMjI5LDE3IEBAIGNoZWNrX2NvbXBsZXRpb24oCiAKIGNsZWFy X3F1ZXJ5KCk7CiAKK2NoZWNrX2NvbXBsZXRpb24oCisJIkFMVEVSIFJPTEUgdGFiY29tcF9yb2xl IElOIERBVEFCQVNFIHBvc3RcdCIsCisJcXIvcG9zdGdyZXMgLywKKwkiY29tcGxldGUgZGF0YWJh c2UgbmFtZSBmb3IgQUxURVIgUk9MRSAuLi4gSU4gREFUQUJBU0UiKTsKK2NoZWNrX2NvbXBsZXRp b24oCisJIlJFU0VUIGNsaWVcdCIsCisJcXIvY2xpZW50X2VuY29kaW5nIC8sCisJImNvbXBsZXRl IEdVQyBmb3IgQUxURVIgUk9MRSAuLi4gSU4gREFUQUJBU0UgLi4uIFJFU0VUIik7CisKK2NsZWFy X3F1ZXJ5KCk7CisKICMgY2hlY2sgdmFyaWFudCB3aGVyZSB3ZSdyZSBjb21wbGV0aW5nIGEgcXVh bGlmaWVkIG5hbWUgZnJvbSBhIHJlZm5hbWUKICMgKHRoaXMgb25lIGFsc28gY2hlY2tzIHN1Y2Nl c3NmdWwgY29tcGxldGlvbiBpbiBhIG11bHRpbGluZSBjb21tYW5kKQogY2hlY2tfY29tcGxldGlv bigKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4v cHNxbC90YWItY29tcGxldGUuaW4uYwppbmRleCA1MjNkM2YzOWZjNS4uMzM3MjhlZGE1NWMgMTAw NjQ0Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3Bz cWwvdGFiLWNvbXBsZXRlLmluLmMKQEAgLTI1NzUsNyArMjU3NSw5IEBAIG1hdGNoX3ByZXZpb3Vz X3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCS8qIEFMVEVSIFVTRVIsUk9MRSA8bmFtZT4gSU4gREFU QUJBU0UgPGRibmFtZT4gU0VUICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVVNFUnxS T0xFIiwgTWF0Y2hBbnksICJJTiIsICJEQVRBQkFTRSIsIE1hdGNoQW55LCAiU0VUIikpCiAJCUNP TVBMRVRFX1dJVEhfUVVFUlkoUXVlcnlfZm9yX2xpc3Rfb2Zfc2V0X3ZhcnMpOwotCS8qIFhYWCBt aXNzaW5nIHN1cHBvcnQgZm9yIEFMVEVSIFJPTEUgPG5hbWU+IElOIERBVEFCQVNFIDxkYm5hbWU+ IFJFU0VUICovCisJLyogQUxURVIgVVNFUixST0xFIDxuYW1lPiBJTiBEQVRBQkFTRSA8ZGJuYW1l PiBSRVNFVCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlVTRVJ8Uk9MRSIsIE1hdGNo QW55LCAiSU4iLCAiREFUQUJBU0UiLCBNYXRjaEFueSwgIlJFU0VUIikpCisJCUNPTVBMRVRFX1dJ VEhfUVVFUllfUExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zZXRfdmFycywgIkFMTCIpOwogCS8qIEFM VEVSIFVTRVIsUk9MRSA8bmFtZT4gUkVTRVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIs ICJVU0VSfFJPTEUiLCBNYXRjaEFueSwgIlJFU0VUIikpCiAJewoKYmFzZS1jb21taXQ6IDEwZTRk OGFhZjQ2ZmI0NmI4Yjc4ZTAyNjU2MGI2OGFmODRhNjQ5NWIKLS0gCjIuNTAuMSAoQXBwbGUgR2l0 LTE1NSkKCg== --000000000000aa42f8064e245bc5--