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

Commite8fe426

Browse files
committed
Fix bogus tab-completion rule for CREATE PUBLICATION.
You can't use "FOR TABLE" as a single Matches argument, because readlinewill consider that input to be two words not one. It's necessary to makethe pattern contain two arguments.The case accidentally worked anyway because the words_after_createtest fired ... but only for the first such table name.Noted by Edmund Horner, though this isn't exactly his proposed fix.Backpatch to v10 where the faulty code came in.Discussion:https://postgr.es/m/CAMyN-kDe=gBmHgxWwUUaXuwK+p+7g1vChR7foPHRDLE592nJPQ@mail.gmail.com
1 parent121213d commite8fe426

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

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

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1419,6 +1419,21 @@ psql_completion(const char *text, int start, int end)
14191419
word_matches(p2, previous_words[previous_words_count - 2]) && \
14201420
word_matches(p3, previous_words[previous_words_count - 3]))
14211421

1422+
#defineHeadMatches4(p1,p2,p3,p4) \
1423+
(previous_words_count >= 4 && \
1424+
word_matches(p1, previous_words[previous_words_count - 1]) && \
1425+
word_matches(p2, previous_words[previous_words_count - 2]) && \
1426+
word_matches(p3, previous_words[previous_words_count - 3]) && \
1427+
word_matches(p4, previous_words[previous_words_count - 4]))
1428+
1429+
#defineHeadMatches5(p1,p2,p3,p4,p5) \
1430+
(previous_words_count >= 5 && \
1431+
word_matches(p1, previous_words[previous_words_count - 1]) && \
1432+
word_matches(p2, previous_words[previous_words_count - 2]) && \
1433+
word_matches(p3, previous_words[previous_words_count - 3]) && \
1434+
word_matches(p4, previous_words[previous_words_count - 4]) && \
1435+
word_matches(p5, previous_words[previous_words_count - 5]))
1436+
14221437
/* Known command-starting keywords. */
14231438
staticconstchar*constsql_commands[]= {
14241439
"ABORT","ALTER","ANALYZE","BEGIN","CALL","CHECKPOINT","CLOSE","CLUSTER",
@@ -2487,8 +2502,8 @@ psql_completion(const char *text, int start, int end)
24872502
COMPLETE_WITH_LIST3("FOR TABLE","FOR ALL TABLES","WITH (");
24882503
elseif (Matches4("CREATE","PUBLICATION",MatchAny,"FOR"))
24892504
COMPLETE_WITH_LIST2("TABLE","ALL TABLES");
2490-
/* Complete "CREATE PUBLICATION <name> FOR TABLE <table>" */
2491-
elseif (Matches4("CREATE","PUBLICATION",MatchAny,"FORTABLE"))
2505+
/* Complete "CREATE PUBLICATION <name> FOR TABLE <table>, ..." */
2506+
elseif (HeadMatches5("CREATE","PUBLICATION",MatchAny,"FOR","TABLE"))
24922507
COMPLETE_WITH_SCHEMA_QUERY(Query_for_list_of_tables,NULL);
24932508
/* Complete "CREATE PUBLICATION <name> [...] WITH" */
24942509
elseif (HeadMatches2("CREATE","PUBLICATION")&&TailMatches2("WITH","("))

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp