Re: CREATE MATERIALIZED VIEW - Mailing list pgsql-hackers

From Dagfinn Ilmari Mannsåker
Subject Re: CREATE MATERIALIZED VIEW
Date
Msg-id 87cyn1eft4.fsf@wibble.ilmari.org
Whole thread Raw
In response to CREATE MATERIALIZED VIEW  (px shi <spxlyy123@gmail.com>)
Responses Re: CREATE MATERIALIZED VIEW
List pgsql-hackers
px shi <spxlyy123@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?= <ilmari@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


pgsql-hackers by date:

Previous
From: wenhui qiu
Date:
Subject: Re: Add 64-bit XIDs into PostgreSQL 15
Next
From: Alena Rybakina
Date:
Subject: Re: POC, WIP: OR-clause support for indexes