From 736639b10963438471ae0ab8b0e4657bbc86c016 Mon Sep 17 00:00:00 2001 From: Yugo Nagata Date: Wed, 31 Dec 2025 18:27:46 +0900 Subject: [PATCH] psql: Add tab completion for \copy pstdin and pstdout --- src/bin/psql/tab-complete.in.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c index 75a101c6ab5..5edb9ad4d77 100644 --- a/src/bin/psql/tab-complete.in.c +++ b/src/bin/psql/tab-complete.in.c @@ -3357,13 +3357,22 @@ match_previous_words(int pattern_id, /* Complete COPY|\copy FROM|TO with filename or STDIN/STDOUT/PROGRAM */ else if (Matches("COPY|\\copy", MatchAny, "FROM|TO")) { - /* COPY requires quoted filename */ - bool force_quote = HeadMatches("COPY"); - - if (TailMatches("FROM")) - COMPLETE_WITH_FILES_PLUS("", force_quote, "STDIN", "PROGRAM"); + if (HeadMatches("COPY")) + { + /* COPY requires quoted filename */ + if (TailMatches("FROM")) + COMPLETE_WITH_FILES_PLUS("", true, "STDIN", "PROGRAM"); + else + COMPLETE_WITH_FILES_PLUS("", true, "STDOUT", "PROGRAM"); + } else - COMPLETE_WITH_FILES_PLUS("", force_quote, "STDOUT", "PROGRAM"); + { + /* \copy supports pstdin and pstdout */ + if (TailMatches("FROM")) + COMPLETE_WITH_FILES_PLUS("", false, "STDIN", "PSTDIN", "PROGRAM"); + else + COMPLETE_WITH_FILES_PLUS("", false, "STDOUT", "PSTDOUT", "PROGRAM"); + } } /* Complete COPY|\copy FROM|TO PROGRAM */ -- 2.43.0