psql: Remove PARTITION BY clause in tab completion for unlogged tables master github/master
authorMichael Paquier <michael@paquier.xyz>
Wed, 11 Jun 2025 00:27:28 +0000 (09:27 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 11 Jun 2025 00:27:28 +0000 (09:27 +0900)
CREATE UNLOGGED TABLE was still being recommended by psql's tab
completion as a possible pattern, but the backend is rejecting this
option since e2bab2d79204.

Reported-by: Shinya Kato <shinya11.kato@gmail.com>
Reviewed-by: Nathan Bossart <nathandbossart@gmail.com>
Reviewed-by: Shinya Kato <shinya11.kato@gmail.com>
Discussion: https://postgr.es/m/CAOzEurQZ1a+6d1K8b=+Ww1NFQVwAt9KSCQsBWXYBaPnYCenK3g@mail.gmail.com

src/bin/psql/tab-complete.in.c

index ec65ab79fecba7c8b05a46d30b3da679ecd8c5a8..620830feb9d759722cea47fb4f465e0838e01ac6 100644 (file)
@@ -3664,9 +3664,10 @@ match_previous_words(int pattern_id,
             TailMatches("CREATE", "TEMP|TEMPORARY|UNLOGGED", "TABLE", MatchAny, "(*)", "AS"))
        COMPLETE_WITH("EXECUTE", "SELECT", "TABLE", "VALUES", "WITH");
    /* Complete CREATE TABLE name (...) with supported options */
-   else if (TailMatches("CREATE", "TABLE", MatchAny, "(*)") ||
-            TailMatches("CREATE", "UNLOGGED", "TABLE", MatchAny, "(*)"))
+   else if (TailMatches("CREATE", "TABLE", MatchAny, "(*)"))
        COMPLETE_WITH("AS", "INHERITS (", "PARTITION BY", "USING", "TABLESPACE", "WITH (");
+   else if (TailMatches("CREATE", "UNLOGGED", "TABLE", MatchAny, "(*)"))
+       COMPLETE_WITH("AS", "INHERITS (", "USING", "TABLESPACE", "WITH (");
    else if (TailMatches("CREATE", "TEMP|TEMPORARY", "TABLE", MatchAny, "(*)"))
        COMPLETE_WITH("AS", "INHERITS (", "ON COMMIT", "PARTITION BY", "USING",
                      "TABLESPACE", "WITH (");