px shi <spxlyy...@gmail.com> writes:

> Hi, I see that materialized view cannot be unlogged now, but when I use
> psql and type CREATE UNLOGGED, pressing the Tab key for auto-completion
> suggests `TABLE` and MATERIALIZED VIEW.
> Shouldn't `MATERIALIZED VIEW ` be suggested?

That's my fault, I added it in commit c951e9042dd1, presumably because
the grammar allows it, but it turns transformCreateTableAsStmt() rejects
it.

Attached is a patch to fix it, which sholud be backpatched to v17.

- ilmari

>From f8bc4d760aadd5f1f3d805f6de7c0d6d3eb8d078 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dagfinn=20Ilmari=20Manns=C3=A5ker?= <ilm...@ilmari.org>
Date: Thu, 25 Jul 2024 14:33:14 +0100
Subject: [PATCH] Don't tab complete MATERIALIZED VIEW after CREATE UNLOGGED

This was erroneously added in commit c951e9042dd1 because the grammar
allows it, but it turns out transformCreateTableAsStmt() rejects it.
---
 src/bin/psql/tab-complete.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 891face1b6..024469474d 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3267,15 +3267,9 @@ psql_completion(const char *text, int start, int end)
 	/* Complete "CREATE TEMP/TEMPORARY" with the possible temp objects */
 	else if (TailMatches("CREATE", "TEMP|TEMPORARY"))
 		COMPLETE_WITH("SEQUENCE", "TABLE", "VIEW");
-	/* Complete "CREATE UNLOGGED" with TABLE, SEQUENCE or MATVIEW */
+	/* Complete "CREATE UNLOGGED" with TABLE or SEQUENCE */
 	else if (TailMatches("CREATE", "UNLOGGED"))
-	{
-		/* but not MATVIEW in CREATE SCHEMA */
-		if (HeadMatches("CREATE", "SCHEMA"))
-			COMPLETE_WITH("TABLE", "SEQUENCE");
-		else
-			COMPLETE_WITH("TABLE", "SEQUENCE", "MATERIALIZED VIEW");
-	}
+		COMPLETE_WITH("TABLE", "SEQUENCE");
 	/* Complete PARTITION BY with RANGE ( or LIST ( or ... */
 	else if (TailMatches("PARTITION", "BY"))
 		COMPLETE_WITH("RANGE (", "LIST (", "HASH (");
-- 
2.39.2

Reply via email to