From f9017090b37bf0387164986d3c155d0ca9ee6ecd Mon Sep 17 00:00:00 2001
From: Kyotaro Horiguchi <horiguchi.kyotaro@lab.ntt.co.jp>
Date: Wed, 14 Dec 2016 15:22:31 +0900
Subject: [PATCH 05/17] Make SET|RESET|SHOW varialble follow input letter case.

Query_for_list_of_set_vars and _show_vars gives inherent keywords in
upper case. Separate the queries and keywords and make the keywords
follow the input.
---
 src/bin/psql/tab-complete.c | 32 ++++++++++++--------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index c14619a..619f8ee 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -472,27 +472,16 @@ static const SchemaQuery Query_for_list_of_matviews = {
 "SELECT name FROM "\
 " (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
 "  WHERE context != 'internal') ss "\
-" WHERE substring(name,1,%d)='%s'"\
-" UNION ALL SELECT 'all' ss"
-
-#define Query_for_list_of_set_vars \
-"SELECT name FROM "\
-" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
-"  WHERE context IN ('user', 'superuser') "\
-"  UNION ALL SELECT 'constraints' "\
-"  UNION ALL SELECT 'transaction' "\
-"  UNION ALL SELECT 'session' "\
-"  UNION ALL SELECT 'role' "\
-"  UNION ALL SELECT 'tablespace' "\
-"  UNION ALL SELECT 'all') ss "\
 " WHERE substring(name,1,%d)='%s'"
 
+#define Query_for_list_of_set_vars									 \
+"SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings " \
+"  WHERE context IN ('user', 'superuser') "							\
+"   AND substring(name,1,%d)='%s'"
+
 #define Query_for_list_of_show_vars \
-"SELECT name FROM "\
-" (SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
-"  UNION ALL SELECT 'session authorization' "\
-"  UNION ALL SELECT 'all') ss "\
-" WHERE substring(name,1,%d)='%s'"
+"SELECT pg_catalog.lower(name) AS name FROM pg_catalog.pg_settings "\
+"  WHERE substring(name,1,%d)='%s'"
 
 #define Query_for_list_of_roles \
 " SELECT pg_catalog.quote_ident(rolname) "\
@@ -2611,9 +2600,12 @@ psql_completion_internal(const char *text, char **previous_words,
 /* SET, RESET, SHOW */
 	/* Complete with a variable name */
 	if (TailMatches1("SET|RESET") && !TailMatches3("UPDATE", MatchAny, "SET"))
-		COMPLETE_WITH_QUERY(Query_for_list_of_set_vars);
+		COMPLETE_WITH_QUERY_KW(Query_for_list_of_set_vars,
+							   ADDLIST6("CONSTRAINTS", "TRANSACTION", "SESSION",
+										"ROLE", "TABLESPACE", "ALL"));
 	if (Matches1("SHOW"))
-		COMPLETE_WITH_QUERY(Query_for_list_of_show_vars);
+		COMPLETE_WITH_QUERY_KW(Query_for_list_of_show_vars,
+							   ADDLIST2("SESSION AUTHORIZATION", "ALL"));
 	/* Complete "SET TRANSACTION" */
 	if (Matches2("SET", "TRANSACTION"))
 		COMPLETE_WITH_LIST5("SNAPSHOT", "ISOLATION LEVEL", "READ", "DEFERRABLE", "NOT DEFERRABLE");
-- 
2.9.2

