summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrina Truong <i.chernyavska@gmail.com>2016-11-20 13:13:07 -0800
committerGitHub <noreply@github.com>2016-11-20 13:13:07 -0800
commit9bde65edda7a917a14c0f649e3f6748017e0db62 (patch)
treeaaef5e57d952c8a2461cf9b36d10ab2507831f44
parent2f34bcedcec5a5b1a458ecd3eb1adde520b08576 (diff)
parent279d6e85a78b18bd94941e7159de9c7d7b0acd6e (diff)
Merge pull request #613 from dbcli/koljonen/crash_after_with
Fix crash after `with`
-rw-r--r--pgcli/packages/parseutils/ctes.py2
-rw-r--r--tests/test_sqlcompletion.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/pgcli/packages/parseutils/ctes.py b/pgcli/packages/parseutils/ctes.py
index 12c207c4..5ffd6702 100644
--- a/pgcli/packages/parseutils/ctes.py
+++ b/pgcli/packages/parseutils/ctes.py
@@ -65,6 +65,8 @@ def extract_ctes(sql):
# Get the next (meaningful) token, which should be the first CTE
idx, tok = p.token_next(idx)
+ if not tok:
+ return ([], '')
start_pos = token_start_pos(p.tokens, idx)
ctes = []
diff --git a/tests/test_sqlcompletion.py b/tests/test_sqlcompletion.py
index cda827b9..9faea204 100644
--- a/tests/test_sqlcompletion.py
+++ b/tests/test_sqlcompletion.py
@@ -20,6 +20,12 @@ def test_select_suggests_cols_with_qualified_table_scope():
assert set(suggestions) == cols_etc('tabl', 'sch')
+def test_cte_does_not_crash():
+ sql = 'WITH CTE AS (SELECT F.* FROM Foo F WHERE F.Bar > 23) SELECT C.* FROM CTE C WHERE C.FooID BETWEEN 123 AND 234;'
+ for i in range(len(sql)):
+ suggestions = suggest_type(sql[:i+1], sql[:i+1])
+
+
@pytest.mark.parametrize('expression', [
'SELECT * FROM "tabl" WHERE ',
])