Skip to content

Commit 76f9dd4

Browse files
committed
Improve tab completion for BEGIN & START|SET TRANSACTION.
Andreas Karlsson with minor change by me for SET TRANSACTION SNAPSHOT.
1 parent 6c03d98 commit 76f9dd4

File tree

1 file changed

+27
-8
lines changed

1 file changed

+27
-8
lines changed

src/bin/psql/tab-complete.c

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1894,8 +1894,11 @@ psql_completion(const char *text, int start, int end)
18941894
else if (Matches5("ALTER", "GROUP", MatchAny, "ADD|DROP", "USER"))
18951895
COMPLETE_WITH_QUERY(Query_for_list_of_roles);
18961896

1897-
/* BEGIN, END, ABORT */
1898-
else if (Matches1("BEGIN|END|ABORT"))
1897+
/* BEGIN */
1898+
else if (Matches1("BEGIN"))
1899+
COMPLETE_WITH_LIST6("WORK", "TRANSACTION", "ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
1900+
/* END, ABORT */
1901+
else if (Matches1("END|ABORT"))
18991902
COMPLETE_WITH_LIST2("WORK", "TRANSACTION");
19001903
/* COMMIT */
19011904
else if (Matches1("COMMIT"))
@@ -2762,20 +2765,36 @@ psql_completion(const char *text, int start, int end)
27622765
else if (Matches1("SHOW"))
27632766
COMPLETE_WITH_QUERY(Query_for_list_of_show_vars);
27642767
/* Complete "SET TRANSACTION" */
2765-
else if (Matches2("SET|BEGIN|START", "TRANSACTION") ||
2768+
else if (Matches2("SET", "TRANSACTION"))
2769+
COMPLETE_WITH_LIST5("SNAPSHOT", "ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
2770+
else if (Matches2("BEGIN|START", "TRANSACTION") ||
27662771
Matches2("BEGIN", "WORK") ||
2772+
Matches1("BEGIN") ||
27672773
Matches5("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION"))
2768-
COMPLETE_WITH_LIST2("ISOLATION LEVEL", "READ");
2774+
COMPLETE_WITH_LIST4("ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
2775+
else if (Matches3("SET|BEGIN|START", "TRANSACTION|WORK", "NOT") ||
2776+
Matches2("BEGIN", "NOT") ||
2777+
Matches6("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "NOT"))
2778+
COMPLETE_WITH_CONST("DEFERRABLE");
27692779
else if (Matches3("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION") ||
2780+
Matches2("BEGIN", "ISOLATION") ||
27702781
Matches6("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION"))
27712782
COMPLETE_WITH_CONST("LEVEL");
2772-
else if (Matches4("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL"))
2783+
else if (Matches4("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL") ||
2784+
Matches3("BEGIN", "ISOLATION", "LEVEL") ||
2785+
Matches7("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION", "LEVEL"))
27732786
COMPLETE_WITH_LIST3("READ", "REPEATABLE READ", "SERIALIZABLE");
2774-
else if (Matches5("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL", "READ"))
2787+
else if (Matches5("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL", "READ") ||
2788+
Matches4("BEGIN", "ISOLATION", "LEVEL", "READ") ||
2789+
Matches8("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION", "LEVEL", "READ"))
27752790
COMPLETE_WITH_LIST2("UNCOMMITTED", "COMMITTED");
2776-
else if (Matches5("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL", "REPEATABLE"))
2791+
else if (Matches5("SET|BEGIN|START", "TRANSACTION|WORK", "ISOLATION", "LEVEL", "REPEATABLE") ||
2792+
Matches4("BEGIN", "ISOLATION", "LEVEL", "REPEATABLE") ||
2793+
Matches8("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "ISOLATION", "LEVEL", "REPEATABLE"))
27772794
COMPLETE_WITH_CONST("READ");
2778-
else if (Matches3("SET|BEGIN|START", "TRANSACTION|WORK", "READ"))
2795+
else if (Matches3("SET|BEGIN|START", "TRANSACTION|WORK", "READ") ||
2796+
Matches2("BEGIN", "READ") ||
2797+
Matches6("SET", "SESSION", "CHARACTERISTICS", "AS", "TRANSACTION", "READ"))
27792798
COMPLETE_WITH_LIST2("ONLY", "WRITE");
27802799
/* SET CONSTRAINTS */
27812800
else if (Matches2("SET", "CONSTRAINTS"))

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy