summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarik Gamble <darik.gamble@gmail.com>2016-10-17 13:48:02 -0400
committerDarik Gamble <darik.gamble@gmail.com>2016-10-17 13:48:55 -0400
commit088190220741f3a307c8ccc9990bfd3c49381237 (patch)
treee2665a42b99981ed0a3f74d47c28da8d234b7c32
parent59d892ae0ea35cee16e101618ab2e7cea0841d61 (diff)
If prev_keyword is an unrecognized keyword, go backward until we find a recognized one
-rw-r--r--pgcli/packages/sqlcompletion.py5
-rw-r--r--tests/test_sqlcompletion.py9
2 files changed, 14 insertions, 0 deletions
diff --git a/pgcli/packages/sqlcompletion.py b/pgcli/packages/sqlcompletion.py
index 71654b55..f079d495 100644
--- a/pgcli/packages/sqlcompletion.py
+++ b/pgcli/packages/sqlcompletion.py
@@ -452,6 +452,11 @@ def suggest_based_on_last_token(token, stmt):
if not schema:
suggestions.append(Schema())
return tuple(suggestions)
+ elif token.is_keyword:
+ # token is a keyword we haven't implemented any special handling for
+ # go backwards in the query until we find one we do recognize
+ prev_keyword = stmt.reduce_to_prev_keyword(n_skip=1)
+ return suggest_based_on_last_token(prev_keyword, stmt)
else:
return (Keyword(),)
diff --git a/tests/test_sqlcompletion.py b/tests/test_sqlcompletion.py
index 68c9e3de..cda827b9 100644
--- a/tests/test_sqlcompletion.py
+++ b/tests/test_sqlcompletion.py
@@ -744,3 +744,12 @@ def test_column_keyword_suggests_columns(sql):
Column(table_refs=((None, 'foo', None, False),)),
])
+
+def test_handle_unrecognized_kw_generously():
+ sql = 'SELECT * FROM sessions WHERE session = 1 AND '
+ suggestions = suggest_type(sql, sql)
+ expected = Column(table_refs=((None, 'sessions', None, False),))
+
+ assert expected in set(suggestions)
+
+