diff options
author | Irina Truong <i.chernyavska@gmail.com> | 2016-11-20 13:13:07 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-11-20 13:13:07 -0800 |
commit | 9bde65edda7a917a14c0f649e3f6748017e0db62 (patch) | |
tree | aaef5e57d952c8a2461cf9b36d10ab2507831f44 | |
parent | 2f34bcedcec5a5b1a458ecd3eb1adde520b08576 (diff) | |
parent | 279d6e85a78b18bd94941e7159de9c7d7b0acd6e (diff) |
Merge pull request #613 from dbcli/koljonen/crash_after_with
Fix crash after `with`
-rw-r--r-- | pgcli/packages/parseutils/ctes.py | 2 | ||||
-rw-r--r-- | tests/test_sqlcompletion.py | 6 |
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 ', ]) |