summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndi Albrecht <albrecht.andi@gmail.com>2018-03-21 19:40:13 +0100
committerGitHub <noreply@github.com>2018-03-21 19:40:13 +0100
commitf8acb2ba3ff7ad750c4c73d7b0137302adf83c4f (patch)
treeb199149933079e03d939dab15ae37c5656adecf0
parent396f19d00fa20a8fc891ab9351bee64b334aac3a (diff)
parent002f37dde390ab2f189c579f5fb18e191f7eed89 (diff)
downloadsqlparse-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.py1
-rw-r--r--tests/test_split.py10
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'"