Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit6d2ff1d

Browse files
psql: Add tab completion for COPY ... PROGRAM.
This commit adds tab completion support for COPY TO PROGRAM and COPYFROM PROGRAM syntax in psql.Author: Yugo Nagata <nagata@sraoss.co.jp>Reviewed-by: Masahiko Sawada <sawada.mshk@gmail.com>Discussion:https://postgr.es/m/20250605100835.b396f9d656df1018f65a4556@sraoss.co.jp
1 parent02fd47d commit6d2ff1d

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

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

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3336,48 +3336,61 @@ match_previous_words(int pattern_id,
33363336
/* Complete COPY <sth> */
33373337
elseif (Matches("COPY|\\copy",MatchAny))
33383338
COMPLETE_WITH("FROM","TO");
3339-
/* Complete COPY|\copy <sth> FROM|TO with filename or STDIN/STDOUT */
3339+
/* Complete COPY|\copy <sth> FROM|TO with filename or STDIN/STDOUT/PROGRAM */
33403340
elseif (Matches("COPY|\\copy",MatchAny,"FROM|TO"))
33413341
{
33423342
/* COPY requires quoted filename */
33433343
boolforce_quote=HeadMatches("COPY");
33443344

33453345
if (TailMatches("FROM"))
3346-
COMPLETE_WITH_FILES_PLUS("",force_quote,"STDIN");
3346+
COMPLETE_WITH_FILES_PLUS("",force_quote,"STDIN","PROGRAM");
33473347
else
3348-
COMPLETE_WITH_FILES_PLUS("",force_quote,"STDOUT");
3348+
COMPLETE_WITH_FILES_PLUS("",force_quote,"STDOUT","PROGRAM");
33493349
}
33503350

3351-
/* Complete COPY <sth> TO <sth> */
3352-
elseif (Matches("COPY|\\copy",MatchAny,"TO",MatchAny))
3351+
/* Complete COPY|\copy <sth> FROM|TO PROGRAM */
3352+
elseif (Matches("COPY|\\copy",MatchAny,"FROM|TO","PROGRAM"))
3353+
COMPLETE_WITH_FILES("",HeadMatches("COPY"));/* COPY requires quoted
3354+
* filename */
3355+
3356+
/* Complete COPY <sth> TO [PROGRAM] <sth> */
3357+
elseif (Matches("COPY|\\copy",MatchAny,"TO",MatchAnyExcept("PROGRAM"))||
3358+
Matches("COPY|\\copy",MatchAny,"TO","PROGRAM",MatchAny))
33533359
COMPLETE_WITH("WITH (");
33543360

3355-
/* Complete COPY <sth> FROM <sth> */
3356-
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAny))
3361+
/* Complete COPY <sth> FROM [PROGRAM] <sth> */
3362+
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAnyExcept("PROGRAM"))||
3363+
Matches("COPY|\\copy",MatchAny,"FROM","PROGRAM",MatchAny))
33573364
COMPLETE_WITH("WITH (","WHERE");
33583365

3359-
/* Complete COPY <sth> FROM filename WITH ( */
3360-
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAny,"WITH","("))
3366+
/* Complete COPY <sth> FROM [PROGRAM] filename WITH ( */
3367+
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAnyExcept("PROGRAM"),"WITH","(")||
3368+
Matches("COPY|\\copy",MatchAny,"FROM","PROGRAM",MatchAny,"WITH","("))
33613369
COMPLETE_WITH(Copy_from_options);
33623370

3363-
/* Complete COPY <sth> TO filename WITH ( */
3364-
elseif (Matches("COPY|\\copy",MatchAny,"TO",MatchAny,"WITH","("))
3371+
/* Complete COPY <sth> TO [PROGRAM] filename WITH ( */
3372+
elseif (Matches("COPY|\\copy",MatchAny,"TO",MatchAnyExcept("PROGRAM"),"WITH","(")||
3373+
Matches("COPY|\\copy",MatchAny,"TO","PROGRAM",MatchAny,"WITH","("))
33653374
COMPLETE_WITH(Copy_to_options);
33663375

3367-
/* Complete COPY <sth> FROM|TO filename WITH (FORMAT */
3368-
elseif (Matches("COPY|\\copy",MatchAny,"FROM|TO",MatchAny,"WITH","(","FORMAT"))
3376+
/* Complete COPY <sth> FROM|TO [PROGRAM] <sth> WITH (FORMAT */
3377+
elseif (Matches("COPY|\\copy",MatchAny,"FROM|TO",MatchAnyExcept("PROGRAM"),"WITH","(","FORMAT")||
3378+
Matches("COPY|\\copy",MatchAny,"FROM|TO","PROGRAM",MatchAny,"WITH","(","FORMAT"))
33693379
COMPLETE_WITH("binary","csv","text");
33703380

3371-
/* Complete COPY <sth> FROM filename WITH (ON_ERROR */
3372-
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAny,"WITH","(","ON_ERROR"))
3381+
/* Complete COPY <sth> FROM [PROGRAM] filename WITH (ON_ERROR */
3382+
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAnyExcept("PROGRAM"),"WITH","(","ON_ERROR")||
3383+
Matches("COPY|\\copy",MatchAny,"FROM","PROGRAM",MatchAny,"WITH","(","ON_ERROR"))
33733384
COMPLETE_WITH("stop","ignore");
33743385

3375-
/* Complete COPY <sth> FROM filename WITH (LOG_VERBOSITY */
3376-
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAny,"WITH","(","LOG_VERBOSITY"))
3386+
/* Complete COPY <sth> FROM [PROGRAM] filename WITH (LOG_VERBOSITY */
3387+
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAnyExcept("PROGRAM"),"WITH","(","LOG_VERBOSITY")||
3388+
Matches("COPY|\\copy",MatchAny,"FROM","PROGRAM",MatchAny,"WITH","(","LOG_VERBOSITY"))
33773389
COMPLETE_WITH("silent","default","verbose");
33783390

3379-
/* Complete COPY <sth> FROM <sth> WITH (<options>) */
3380-
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAny,"WITH",MatchAny))
3391+
/* Complete COPY <sth> FROM [PROGRAM] <sth> WITH (<options>) */
3392+
elseif (Matches("COPY|\\copy",MatchAny,"FROM",MatchAnyExcept("PROGRAM"),"WITH",MatchAny)||
3393+
Matches("COPY|\\copy",MatchAny,"FROM","PROGRAM",MatchAny,"WITH",MatchAny))
33813394
COMPLETE_WITH("WHERE");
33823395

33833396
/* CREATE ACCESS METHOD */

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp