diff options
| author | Andi Albrecht <albrecht.andi@gmail.com> | 2018-03-21 19:40:13 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2018-03-21 19:40:13 +0100 |
| commit | f8acb2ba3ff7ad750c4c73d7b0137302adf83c4f (patch) | |
| tree | b199149933079e03d939dab15ae37c5656adecf0 | |
| parent | 396f19d00fa20a8fc891ab9351bee64b334aac3a (diff) | |
| parent | 002f37dde390ab2f189c579f5fb18e191f7eed89 (diff) | |
| download | sqlparse-f8acb2ba3ff7ad750c4c73d7b0137302adf83c4f.tar.gz | |
Merge pull request #396 from fredyw/issue_385
Fix incorrect splitting with double quotes and a new line
| -rw-r--r-- | sqlparse/keywords.py | 1 | ||||
| -rw-r--r-- | tests/test_split.py | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/sqlparse/keywords.py b/sqlparse/keywords.py index b5b59e8..bca50ba 100644 --- a/sqlparse/keywords.py +++ b/sqlparse/keywords.py @@ -64,6 +64,7 @@ SQL_REGEX = { (r'-?\d+(?![_A-ZÀ-Ü])', tokens.Number.Integer), (r"'(''|\\\\|\\'|[^'])*'", tokens.String.Single), # not a real string literal in ANSI SQL: + (r'"(""|\\\\|\\"|[^"])*"', tokens.String.Symbol), (r'(""|".*?[^\\]")', tokens.String.Symbol), # sqlite names can be escaped with [square brackets]. left bracket # cannot be preceded by word character or a right bracket -- diff --git a/tests/test_split.py b/tests/test_split.py index 5d846bf..a93e3d4 100644 --- a/tests/test_split.py +++ b/tests/test_split.py @@ -139,3 +139,13 @@ def test_split_simple(): assert len(stmts) == 2 assert stmts[0] == 'select * from foo;' assert stmts[1] == 'select * from bar;' + + +def test_split_quotes_with_new_line(): + stmts = sqlparse.split('select "foo\nbar"') + assert len(stmts) == 1 + assert stmts[0] == 'select "foo\nbar"' + + stmts = sqlparse.split("select 'foo\n\bar'") + assert len(stmts) == 1 + assert stmts[0] == "select 'foo\n\bar'" |
