add tab-complete for memory, serialize option and other minor issues.

Started by jian heover 1 year ago3 messages
#1jian he
jian.universality@gmail.com
1 attachment(s)

hi.

I found some minor issues related to the EXPLAIN command.

cannot auto-complete with a white space.
src8=# explain (analyze,b

can auto-complete:
src8=# explain (analyze, b

to make tab-complete work, comma, must be followed with a white space,
not sure why.
--------------
explain (serialize binary) select 1;
ERROR: EXPLAIN option SERIALIZE requires ANALYZE

do you think it's better to rephrase it as:
ERROR: EXPLAIN option SERIALIZE requires ANALYZE option

since we have separate ANALYZE SQL commands.
--------------

<para>
Specify the output format, which can be TEXT, XML, JSON, or YAML.
Non-text output contains the same information as the text output
format, but is easier for programs to parse. This parameter defaults to
<literal>TEXT</literal>.
</para>

should we add <literal> attribute for {TEXT, XML, JSON, YAML} in the
above paragraph?

--------------
i created a patch for tab-complete for memory, SERIALIZE option.

Attachments:

v1-0001-add-Tab-complete-for-EXPLAIN-MEMORY-EXPLAIN-SERIA.patchapplication/x-patch; name=v1-0001-add-Tab-complete-for-EXPLAIN-MEMORY-EXPLAIN-SERIA.patchDownload
From bec2c92ef61bb8272608a49e6837141e7e8346b3 Mon Sep 17 00:00:00 2001
From: jian he <jian.universality@gmail.com>
Date: Sat, 27 Apr 2024 10:33:16 +0800
Subject: [PATCH v1 1/1] add Tab-complete for EXPLAIN MEMORY, EXPLAIN SERIALIZE

---
 src/bin/psql/tab-complete.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 6fee3160..08641565 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3856,11 +3856,13 @@ psql_completion(const char *text, int start, int end)
 		 */
 		if (ends_with(prev_wd, '(') || ends_with(prev_wd, ','))
 			COMPLETE_WITH("ANALYZE", "VERBOSE", "COSTS", "SETTINGS", "GENERIC_PLAN",
-						  "BUFFERS", "WAL", "TIMING", "SUMMARY", "FORMAT");
-		else if (TailMatches("ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY"))
+						  "BUFFERS", "WAL", "TIMING", "SUMMARY", "FORMAT", "SERIALIZE", "MEMORY");
+		else if (TailMatches("ANALYZE|VERBOSE|COSTS|SETTINGS|GENERIC_PLAN|BUFFERS|WAL|TIMING|SUMMARY|MEMORY"))
 			COMPLETE_WITH("ON", "OFF");
 		else if (TailMatches("FORMAT"))
 			COMPLETE_WITH("TEXT", "XML", "JSON", "YAML");
+		else if (TailMatches("SERIALIZE"))
+			COMPLETE_WITH("TEXT", "NONE", "BINARY");
 	}
 	else if (Matches("EXPLAIN", "ANALYZE"))
 		COMPLETE_WITH("SELECT", "INSERT INTO", "DELETE FROM", "UPDATE", "DECLARE",

base-commit: 1713e3d6cd393fcc1d4873e75c7fa1f6c7023d75
-- 
2.34.1

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: jian he (#1)
Re: add tab-complete for memory, serialize option and other minor issues.

jian he <jian.universality@gmail.com> writes:

to make tab-complete work, comma, must be followed with a white space,
not sure why.

/messages/by-id/3870833.1712696581@sss.pgh.pa.us

Post-feature-freeze is no time to be messing with behavior as basic
as WORD_BREAKS, though.

regards, tom lane

#3Michael Paquier
michael@paquier.xyz
In reply to: Tom Lane (#2)
Re: add tab-complete for memory, serialize option and other minor issues.

On Sat, Apr 27, 2024 at 11:15:47AM -0400, Tom Lane wrote:

/messages/by-id/3870833.1712696581@sss.pgh.pa.us

Post-feature-freeze is no time to be messing with behavior as basic
as WORD_BREAKS, though.

Indeed.

By the way, that psql completion patch has fallen through the cracks
and I don't see a point in waiting for that, so I have applied it.
Note that the patch did not order the options according to the docs,
which was consistent on HEAD but not anymore with the patch.
--
Michael