From: ilmari@ilmari.org
To: Michael Paquier <michael@paquier.xyz>
Cc: pgsql-hackers@postgresql.org
Subject: Re: [PATCH] Improve tab completion for CREATE TABLE
Date: Sat, 22 Dec 2018 13:33:23 +0000
Message-ID: <d8jr2e9elek.fsf@dalvik.ping.uio.no> (raw)
In-Reply-To: <20181221234856.GG1948@paquier.xyz>
References: <d8j1s77kdbb.fsf@dalvik.ping.uio.no>
<d8j7eguin89.fsf@dalvik.ping.uio.no>
<20181219050530.GC19856@paquier.xyz>
<d8jh8f9f6fe.fsf@dalvik.ping.uio.no>
<d8jd0pxf5m8.fsf@dalvik.ping.uio.no>
<d8jwoo2ewtf.fsf@dalvik.ping.uio.no>
<20181221234856.GG1948@paquier.xyz>
Michael Paquier <michael@paquier.xyz> writes:
> On Fri, Dec 21, 2018 at 03:14:36PM +0000, Dagfinn Ilmari Mannsåker wrote:
>> Here's a patch that does this (and in passing alphabetises the list of
>> options).
>
> Cool, thanks. The position of the option list is fine. However
> list_TABLEOPTIONS is not a name consistent with the surroundings. So
> we could just use table_level_option?
The CREATE and ALTER TABLE documentation calls them storage parameters,
so I've gone for table_storage_parameters in the attached v2 patch.
> Reordering them is a good idea, log_autovacuum_min_duration being the
> bad entry.
toast_tuple_target was also on the wrong side of the toast.* options.
- ilmari
--
- Twitter seems more influential [than blogs] in the 'gets reported in
the mainstream press' sense at least. - Matt McLeod
- That'd be because the content of a tweet is easier to condense down
to a mainstream media article. - Calle Dybedahl
Attachments:v2-0001-Add-completion-for-storage-parameters-after-CREAT.patch (text/x-diff, 4.5K) download
From 59f30579b72106cf14338b890acfd0c6f0b6009a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilmari@ilmari.org>
Date: Fri, 21 Dec 2018 15:03:19 +0000
Subject: [PATCH v2] =?UTF-8?q?Add=20completion=20for=20storage=20parameter?=
=?UTF-8?q?s=20after=20CREATE=20TABLE=20=E2=80=A6=20WITH=20=E2=80=A6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Move the list of parameters from the "ALTER TABLE <foo> SET|RESET ("
block to the top-level, and reuse it after "CREATE TABLE <foo> ( … )
WITH (".
In passing, rename the variable to and alphabetise the list properly.
---
src/bin/psql/tab-complete.c | 76 ++++++++++++++++++-------------------
1 file changed, 38 insertions(+), 38 deletions(-)
diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.cindex 5ba6ffba8c..b12ffab312 100644--- a/src/bin/psql/tab-complete.c+++ b/src/bin/psql/tab-complete.c@@ -1005,6 +1005,40 @@ static const pgsql_thing_t words_after_create[] = {
{NULL} /* end of list */
};
+static const char *const table_storage_parameters[] = {+ "autovacuum_analyze_scale_factor",+ "autovacuum_analyze_threshold",+ "autovacuum_enabled",+ "autovacuum_freeze_max_age",+ "autovacuum_freeze_min_age",+ "autovacuum_freeze_table_age",+ "autovacuum_multixact_freeze_max_age",+ "autovacuum_multixact_freeze_min_age",+ "autovacuum_multixact_freeze_table_age",+ "autovacuum_vacuum_cost_delay",+ "autovacuum_vacuum_cost_limit",+ "autovacuum_vacuum_scale_factor",+ "autovacuum_vacuum_threshold",+ "fillfactor",+ "log_autovacuum_min_duration",+ "parallel_workers",+ "toast.autovacuum_enabled",+ "toast.autovacuum_freeze_max_age",+ "toast.autovacuum_freeze_min_age",+ "toast.autovacuum_freeze_table_age",+ "toast.autovacuum_multixact_freeze_max_age",+ "toast.autovacuum_multixact_freeze_min_age",+ "toast.autovacuum_multixact_freeze_table_age",+ "toast.autovacuum_vacuum_cost_delay",+ "toast.autovacuum_vacuum_cost_limit",+ "toast.autovacuum_vacuum_scale_factor",+ "toast.autovacuum_vacuum_threshold",+ "toast.log_autovacuum_min_duration",+ "toast_tuple_target",+ "user_catalog_table",+ NULL+};+
/* Forward declaration of functions */
static char **psql_completion(const char *text, int start, int end);
@@ -1904,44 +1938,7 @@ psql_completion(const char *text, int start, int end)
COMPLETE_WITH("(");
/* ALTER TABLE <foo> SET|RESET ( */
else if (Matches("ALTER", "TABLE", MatchAny, "SET|RESET", "("))
- {- static const char *const list_TABLEOPTIONS[] =- {- "autovacuum_analyze_scale_factor",- "autovacuum_analyze_threshold",- "autovacuum_enabled",- "autovacuum_freeze_max_age",- "autovacuum_freeze_min_age",- "autovacuum_freeze_table_age",- "autovacuum_multixact_freeze_max_age",- "autovacuum_multixact_freeze_min_age",- "autovacuum_multixact_freeze_table_age",- "autovacuum_vacuum_cost_delay",- "autovacuum_vacuum_cost_limit",- "autovacuum_vacuum_scale_factor",- "autovacuum_vacuum_threshold",- "fillfactor",- "parallel_workers",- "log_autovacuum_min_duration",- "toast_tuple_target",- "toast.autovacuum_enabled",- "toast.autovacuum_freeze_max_age",- "toast.autovacuum_freeze_min_age",- "toast.autovacuum_freeze_table_age",- "toast.autovacuum_multixact_freeze_max_age",- "toast.autovacuum_multixact_freeze_min_age",- "toast.autovacuum_multixact_freeze_table_age",- "toast.autovacuum_vacuum_cost_delay",- "toast.autovacuum_vacuum_cost_limit",- "toast.autovacuum_vacuum_scale_factor",- "toast.autovacuum_vacuum_threshold",- "toast.log_autovacuum_min_duration",- "user_catalog_table",- NULL- };-- COMPLETE_WITH_LIST(list_TABLEOPTIONS);- }+ COMPLETE_WITH_LIST(table_storage_parameters);
else if (Matches("ALTER", "TABLE", MatchAny, "REPLICA", "IDENTITY", "USING", "INDEX"))
{
completion_info_charp = prev5_wd;
@@ -2439,6 +2436,9 @@ psql_completion(const char *text, int start, int end)
else if (TailMatches("CREATE", "TEMP|TEMPORARY", "TABLE", MatchAny, "(*)"))
COMPLETE_WITH("INHERITS (", "ON COMMIT", "PARTITION BY",
"TABLESPACE", "WITH (");
+ else if (TailMatches("CREATE", "TABLE", MatchAny, "(*)", "WITH", "(") ||+ TailMatches("CREATE", "TEMP|TEMPORARY|UNLOGGED", "TABLE", MatchAny, "(*)", "WITH", "("))+ COMPLETE_WITH_LIST(table_storage_parameters);
/* Complete CREATE TABLE ON COMMIT with actions */
else if (TailMatches("CREATE", "TEMP|TEMPORARY", "TABLE", MatchAny, "(*)", "ON", "COMMIT"))
COMPLETE_WITH("DELETE ROWS", "DROP", "PRESERVE ROWS");
--
2.20.1
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: ilmari@ilmari.org, michael@paquier.xyz
Subject: Re: [PATCH] Improve tab completion for CREATE TABLE
In-Reply-To: <d8jr2e9elek.fsf@dalvik.ping.uio.no>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox