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

Commit0b0d277

Browse files
committed
psql: Improve tab-completion for LOCK TABLE.
This commit makes psql support the tab-completion for ONLY andNOWAIT keywords of LOCK TABLE command.Author: Koyu TanigawaReviewed-by: Shinya Kato, Fujii MasaoDiscussion:https://postgr.es/m/a322684daa36319e6ebc60b541000a3a@oss.nttdata.com
1 parente825943 commit0b0d277

File tree

1 file changed

+26
-17
lines changed

1 file changed

+26
-17
lines changed

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

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3599,40 +3599,49 @@ psql_completion(const char *text, int start, int end)
35993599
COMPLETE_WITH("(");
36003600

36013601
/* LOCK */
3602-
/* Complete LOCK [TABLE] with a list of tables */
3602+
/* Complete LOCK [TABLE][ONLY]with a list of tables */
36033603
elseif (Matches("LOCK"))
36043604
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,
3605-
" UNION SELECT 'TABLE'");
3605+
" UNION SELECT 'TABLE'"
3606+
" UNION SELECT 'ONLY'");
36063607
elseif (Matches("LOCK","TABLE"))
3607-
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,"");
3608-
3608+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,
3609+
" UNION SELECT 'ONLY'");
3610+
elseif (Matches("LOCK","TABLE","ONLY")||Matches("LOCK","ONLY"))
3611+
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,NULL);
36093612
/* For the following, handle the case of a single table only for now */
36103613

3611-
/* Complete LOCK [TABLE] <table> with "IN" */
3612-
elseif (Matches("LOCK",MatchAnyExcept("TABLE"))||
3613-
Matches("LOCK","TABLE",MatchAny))
3614-
COMPLETE_WITH("IN");
3614+
/* Complete LOCK [TABLE] [ONLY] <table> with IN or NOWAIT */
3615+
elseif (Matches("LOCK",MatchAnyExcept("TABLE|ONLY"))||
3616+
Matches("LOCK","TABLE",MatchAnyExcept("ONLY"))||
3617+
Matches("LOCK","ONLY",MatchAny)||
3618+
Matches("LOCK","TABLE","ONLY",MatchAny))
3619+
COMPLETE_WITH("IN","NOWAIT");
36153620

3616-
/* Complete LOCK [TABLE] <table> IN with a lock mode */
3617-
elseif (Matches("LOCK",MatchAny,"IN")||
3618-
Matches("LOCK","TABLE",MatchAny,"IN"))
3621+
/* Complete LOCK [TABLE] [ONLY] <table> IN with a lock mode */
3622+
elseif (HeadMatches("LOCK")&&TailMatches("IN"))
36193623
COMPLETE_WITH("ACCESS SHARE MODE",
36203624
"ROW SHARE MODE","ROW EXCLUSIVE MODE",
36213625
"SHARE UPDATE EXCLUSIVE MODE","SHARE MODE",
36223626
"SHARE ROW EXCLUSIVE MODE",
36233627
"EXCLUSIVE MODE","ACCESS EXCLUSIVE MODE");
36243628

3625-
/* Complete LOCK [TABLE] <table> IN ACCESS|ROW with rest of lock mode */
3626-
elseif (Matches("LOCK",MatchAny,"IN","ACCESS|ROW")||
3627-
Matches("LOCK","TABLE",MatchAny,"IN","ACCESS|ROW"))
3629+
/*
3630+
* Complete LOCK [TABLE][ONLY] <table> IN ACCESS|ROW with rest of lock
3631+
* mode
3632+
*/
3633+
elseif (HeadMatches("LOCK")&&TailMatches("IN","ACCESS|ROW"))
36283634
COMPLETE_WITH("EXCLUSIVE MODE","SHARE MODE");
36293635

3630-
/* Complete LOCK [TABLE] <table> IN SHARE with rest of lock mode */
3631-
elseif (Matches("LOCK",MatchAny,"IN","SHARE")||
3632-
Matches("LOCK","TABLE",MatchAny,"IN","SHARE"))
3636+
/* Complete LOCK [TABLE] [ONLY] <table> IN SHARE with rest of lock mode */
3637+
elseif (HeadMatches("LOCK")&&TailMatches("IN","SHARE"))
36333638
COMPLETE_WITH("MODE","ROW EXCLUSIVE MODE",
36343639
"UPDATE EXCLUSIVE MODE");
36353640

3641+
/* Complete LOCK [TABLE] [ONLY] <table> [IN lockmode MODE] with "NOWAIT" */
3642+
elseif (HeadMatches("LOCK")&&TailMatches("MODE"))
3643+
COMPLETE_WITH("NOWAIT");
3644+
36363645
/* NOTIFY --- can be inside EXPLAIN, RULE, etc */
36373646
elseif (TailMatches("NOTIFY"))
36383647
COMPLETE_WITH_QUERY("SELECT pg_catalog.quote_ident(channel) FROM pg_catalog.pg_listening_channels() AS channel WHERE substring(pg_catalog.quote_ident(channel),1,%d)='%s'");

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp