0002-Complete-ON-and-USING-keywords-for-joins.patch

text/x-patch

Filename: 0002-Complete-ON-and-USING-keywords-for-joins.patch
Type: text/x-patch
Part: 1
Message: Improved psql tab completion for joins

Patch

Format: format-patch
Series: patch 0002
Subject: Complete ON and USING keywords for joins
File+
src/bin/psql/tab-complete.in.c 12 0
From 9388c62ff7be3cec4b13f81dce1ae7085418d275 Mon Sep 17 00:00:00 2001
From: Andreas Karlsson <andreas@proxel.se>
Date: Fri, 15 Nov 2024 20:06:24 +0100
Subject: [PATCH 2/3] Complete ON and USING keywords for joins

---
 src/bin/psql/tab-complete.in.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/src/bin/psql/tab-complete.in.c b/src/bin/psql/tab-complete.in.c
index 095e4525df3..617dd53365e 100644
--- a/src/bin/psql/tab-complete.in.c
+++ b/src/bin/psql/tab-complete.in.c
@@ -5137,6 +5137,18 @@ match_previous_words(int pattern_id,
 /* ... JOIN ... */
 	else if (TailMatches("JOIN"))
 		COMPLETE_WITH_SCHEMA_QUERY_PLUS(Query_for_list_of_selectables, "LATERAL");
+	else if (TailMatches("JOIN", MatchAny) && !TailMatches("CROSS|NATURAL", "JOIN", MatchAny))
+		COMPLETE_WITH("ON", "USING (");
+	else if (TailMatches("JOIN", MatchAny, MatchAny) &&
+			 !TailMatches("CROSS|NATURAL", "JOIN", MatchAny, MatchAny) && !TailMatches("ON|USING"))
+		COMPLETE_WITH("ON", "USING (");
+	else if (TailMatches("JOIN", "LATERAL", MatchAny, MatchAny) &&
+			 !TailMatches("CROSS|NATURAL", "JOIN", "LATERAL", MatchAny, MatchAny) && !TailMatches("ON|USING"))
+		COMPLETE_WITH("ON", "USING (");
+	else if (TailMatches("JOIN", MatchAny, "USING") ||
+			 TailMatches("JOIN", MatchAny, MatchAny, "USING") ||
+			 TailMatches("JOIN", "LATERAL", MatchAny, MatchAny, "USING"))
+		COMPLETE_WITH("(");
 
 /* ... AT [ LOCAL | TIME ZONE ] ... */
 	else if (TailMatches("AT"))
-- 
2.45.2