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.94.2) (envelope-from ) id 1uD0X3-005FM7-UO for pgsql-hackers@arkaria.postgresql.org; Thu, 08 May 2025 12:39:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1uD0X2-0037ra-QD for pgsql-hackers@arkaria.postgresql.org; Thu, 08 May 2025 12:39:20 +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.94.2) (envelope-from ) id 1uD0X2-0037rR-FV for pgsql-hackers@lists.postgresql.org; Thu, 08 May 2025 12:39:20 +0000 Received: from oss.nttdata.com ([49.212.34.109]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1uD0Wz-000ov5-0a for pgsql-hackers@postgresql.org; Thu, 08 May 2025 12:39:20 +0000 Received: from oss.nttdata.com (localhost [127.0.0.1]) by oss.nttdata.com (Postfix) with ESMTPA id 77DE6609DA; Thu, 8 May 2025 21:39:11 +0900 (JST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at oss.nttdata.com MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=_64110085ac97e1fa7bc90604f0e935bb" Content-Transfer-Encoding: 8bit Date: Thu, 08 May 2025 21:39:10 +0900 From: torikoshia To: Yugo Nagata , sawada.mshk@gmail.com Cc: Pgsql Hackers Subject: Re: Improve tab completion for COPY In-Reply-To: <20250508085335.77b8c480e96f032b87c2d8c3@sraoss.co.jp> References: <079e7a2c801f252ae8d522b772790ed7@oss.nttdata.com> <20250507222318.421a6b6bfc311f4cdf07ebc0@sraoss.co.jp> <20250508085335.77b8c480e96f032b87c2d8c3@sraoss.co.jp> User-Agent: Roundcube Webmail/1.4.11 Message-ID: <0988d0a8c87c37ec8cb8d3643d9dc35a@oss.nttdata.com> X-Sender: torikoshia@oss.nttdata.com List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=_64110085ac97e1fa7bc90604f0e935bb Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8; format=flowed Thanks for your comments! On 2025-05-08 08:53, Yugo Nagata wrote: > On Wed, 7 May 2025 14:36:35 -0700 > Masahiko Sawada wrote: > >> On Wed, May 7, 2025 at 6:23 AM Yugo Nagata >> wrote: >> > >> > On Wed, 7 May 2025 15:39:26 +0900 >> > torikoshia wrote: >> > >> > > Hi, >> > > >> > > I noticed that REJECT_LIMIT, an option available for COPY FROM, is not >> > > currently supported in psql's tab completion. >> > > >> > > Additionally, some options are only valid for COPY FROM or COPY TO, i.e. >> > > FREEZE, ON_ERROR, FORCE_QUOTE, but psql currently suggests them for both >> > > COPY FROM and COPY TO. >> > > As the number of COPY options continues to grow, I feel that having >> > > irrelevant suggestions makes tab completion noisier. >> > >> > Indeed eliminating irrelevant suggestions would improve user experience, >> >> +1 >> >> > but I think there is a drawback that it increases code maintenance for >> > adding options used both in COPY FROM and TO. This might be trivial until >> > the number of common options are small as now, though. >> > >> > Perhaps, the redundant code could be reduced by preparing a list (an array >> > of const char*) containing common options part, then appending options >> > specific to each mode using some function like kind of append_variable_names, >> > and passing these lists to COMPLETE_WITH_LIST. >> >> Or we can simply #define the common option list and #define two lists >> for COPY TO and COPY FROM by concatenating the common option list, >> like we do for ALTER PROCEDURE/ROUTINE/FUNCTION options. > > +1 Agreed. I think attached patch implemented the suggested way. -- Regards, -- Atsushi Torikoshi Seconded from NTT DATA GROUP CORPORATION to SRA OSS K.K. --=_64110085ac97e1fa7bc90604f0e935bb Content-Transfer-Encoding: base64 Content-Type: text/x-diff; name=v2-0001-Improve-tab-completion-for-COPY-WITH-options.patch Content-Disposition: attachment; filename=v2-0001-Improve-tab-completion-for-COPY-WITH-options.patch; size=3354 RnJvbSA0ZTFlZDNiMmE0YzcyODNlZDNiNzgwM2M3MDcxNzY4ZWQ1YzIyZmM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBdHN1c2hpIFRvcmlrb3NoaSA8dG9yaWtvc2hpQHNyYW9zcy5j by5qcD4KRGF0ZTogVGh1LCA4IE1heSAyMDI1IDIxOjExOjIwICswOTAwClN1YmplY3Q6IFtQQVRD SCB2Ml0gSW1wcm92ZSB0YWIgY29tcGxldGlvbiBmb3IgQ09QWSBvcHRpb25zCgpDdXJyZW50bHks IENPUFkgRlJPTSBhbmQgVE8gc2hhcmUgdGhlIHNhbWUgdGFiIGNvbXBsZXRpb24gcnVsZXMsCmV2 ZW4gdGhvdWdoIHNvbWUgb3B0aW9ucyBhcmUgb25seSB2YWxpZCBmb3Igb25lIG9yIHRoZSBvdGhl ci4KClRoaXMgcGF0Y2ggc2VwYXJhdGVzIHRoZSB0YWIgY29tcGxldGlvbiBydWxlcyBmb3IgQ09Q WSBGUk9NIGFuZApDT1BZIFRPIHRvIHByb3ZpZGUgbW9yZSBhY2N1cmF0ZSBzdWdnZXN0aW9ucy4K SXQgYWxzbyBhZGRzIHRhYiBjb21wbGV0aW9uIHN1cHBvcnQgZm9yIFJFSkVDVF9MSU1JVCBvcHRp b24sCndoaWNoIGlzIHZhbGlkIG9ubHkgZm9yIENPUFkgRlJPTS4KCi0tLQogc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAx IGZpbGUgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMKaW5kZXggYzkxNmI5Mjk5YS4uMjExMWY3MmM5MSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxl dGUuaW4uYwpAQCAtMTE5MCw2ICsxMTkwLDE5IEBAIEFsdGVyX3Byb2NlZHVyZV9vcHRpb25zLCAi Q09TVCIsICJJTU1VVEFCTEUiLCAiTEVBS1BST09GIiwgIk5PVCBMRUFLUFJPT0YiLCBcCiBBbHRl cl9yb3V0aW5lX29wdGlvbnMsICJDQUxMRUQgT04gTlVMTCBJTlBVVCIsICJSRVRVUk5TIE5VTEwg T04gTlVMTCBJTlBVVCIsIFwKICJTVFJJQ1QiLCAiU1VQUE9SVCIKIAorLyogQ09QWSBvcHRpb25z IHNoYXJlZCBiZXR3ZWVuIEZST00gYW5kIFRPICovCisjZGVmaW5lIENvcHlfY29tbW9uX29wdGlv bnMgXAorIkRFTElNSVRFUiIsICJFTkNPRElORyIsICJFU0NBUEUiLCAiRk9STUFUIiwgIkhFQURF UiIsICJOVUxMIiwgIlFVT1RFIgorCisvKiBDT1BZIEZST00gb3B0aW9ucyAqLworI2RlZmluZSBD b3B5X2Zyb21fb3B0aW9ucyBcCitDb3B5X2NvbW1vbl9vcHRpb25zLCAiREVGQVVMVCIsICJGT1JD RV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkZSRUVaRSIsIFwKKyJMT0dfVkVSQk9TSVRZIiwg Ik9OX0VSUk9SIiwgIlJFSkVDVF9MSU1JVCIKKworLyogQ09QWSBUTyBvcHRpb25zICovCisjZGVm aW5lIENvcHlfdG9fb3B0aW9ucyBcCitDb3B5X2NvbW1vbl9vcHRpb25zLCAiRk9SQ0VfUVVPVEUi CisKIC8qCiAgKiBUaGVzZSBvYmplY3QgdHlwZXMgd2VyZSBpbnRyb2R1Y2VkIGxhdGVyIHRoYW4g b3VyIHN1cHBvcnQgY3V0b2ZmIG9mCiAgKiBzZXJ2ZXIgdmVyc2lvbiA5LjIuICBXZSB1c2UgdGhl IFZlcnNpb25lZFF1ZXJ5IGluZnJhc3RydWN0dXJlIHNvIHRoYXQKQEAgLTMyNzgsMjMgKzMyOTEs MjQgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJZWxzZSBpZiAoTWF0 Y2hlcygiQ09QWXxcXGNvcHkiLCBNYXRjaEFueSwgIkZST00iLCBNYXRjaEFueSkpCiAJCUNPTVBM RVRFX1dJVEgoIldJVEggKCIsICJXSEVSRSIpOwogCi0JLyogQ29tcGxldGUgQ09QWSA8c3RoPiBG Uk9NfFRPIGZpbGVuYW1lIFdJVEggKCAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5 IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiKSkKLQkJQ09NUExF VEVfV0lUSCgiRk9STUFUIiwgIkZSRUVaRSIsICJERUxJTUlURVIiLCAiTlVMTCIsCi0JCQkJCSAg IkhFQURFUiIsICJRVU9URSIsICJFU0NBUEUiLCAiRk9SQ0VfUVVPVEUiLAotCQkJCQkgICJGT1JD RV9OT1RfTlVMTCIsICJGT1JDRV9OVUxMIiwgIkVOQ09ESU5HIiwgIkRFRkFVTFQiLAotCQkJCQkg ICJPTl9FUlJPUiIsICJMT0dfVkVSQk9TSVRZIik7CisJLyogQ29tcGxldGUgQ09QWSA8c3RoPiBG Uk9NIGZpbGVuYW1lIFdJVEggKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5Iiwg TWF0Y2hBbnksICJGUk9NIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiKSkKKwkJQ09NUExFVEVfV0lU SChDb3B5X2Zyb21fb3B0aW9ucyk7CisKKwkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IFRPIGZpbGVu YW1lIFdJVEggKCAqLworCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnks ICJUTyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIikpCisJCUNPTVBMRVRFX1dJVEgoQ29weV90b19v cHRpb25zKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4gRlJPTXxUTyBmaWxlbmFtZSBXSVRI IChGT1JNQVQgKi8KIAllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAi RlJPTXxUTyIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIkZPUk1BVCIpKQogCQlDT01QTEVURV9X SVRIKCJiaW5hcnkiLCAiY3N2IiwgInRleHQiKTsKIAogCS8qIENvbXBsZXRlIENPUFkgPHN0aD4g RlJPTSBmaWxlbmFtZSBXSVRIIChPTl9FUlJPUiAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8 XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiT05f RVJST1IiKSkKKwllbHNlIGlmIChNYXRjaGVzKCJDT1BZfFxcY29weSIsIE1hdGNoQW55LCAiRlJP TSIsIE1hdGNoQW55LCAiV0lUSCIsICIoIiwgIk9OX0VSUk9SIikpCiAJCUNPTVBMRVRFX1dJVEgo InN0b3AiLCAiaWdub3JlIik7CiAKIAkvKiBDb21wbGV0ZSBDT1BZIDxzdGg+IEZST00gZmlsZW5h bWUgV0lUSCAoTE9HX1ZFUkJPU0lUWSAqLwotCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5 IiwgTWF0Y2hBbnksICJGUk9NfFRPIiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiTE9HX1ZFUkJP U0lUWSIpKQorCWVsc2UgaWYgKE1hdGNoZXMoIkNPUFl8XFxjb3B5IiwgTWF0Y2hBbnksICJGUk9N IiwgTWF0Y2hBbnksICJXSVRIIiwgIigiLCAiTE9HX1ZFUkJPU0lUWSIpKQogCQlDT01QTEVURV9X SVRIKCJzaWxlbnQiLCAiZGVmYXVsdCIsICJ2ZXJib3NlIik7CiAKIAkvKiBDb21wbGV0ZSBDT1BZ IDxzdGg+IEZST00gPHN0aD4gV0lUSCAoPG9wdGlvbnM+KSAqLwoKYmFzZS1jb21taXQ6IDhmY2M2 NDg3ODA5ZWZhNTUwOGE0YjcwMDQ5NDAyMjM2YTUzYmU4NGQKLS0gCjIuNDMuMAoK --=_64110085ac97e1fa7bc90604f0e935bb--