summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredy Wijaya <fredy.wijaya@gmail.com>2018-03-09 14:35:33 -0600
committerFredy Wijaya <fredy.wijaya@gmail.com>2018-03-09 14:36:37 -0600
commit002f37dde390ab2f189c579f5fb18e191f7eed89 (patch)
treec16ed3ec16e11785858cfdce996966c732ed71ca
parent9cf45ebf8c9d59442e4739befeac968002510699 (diff)
downloadsqlparse-002f37dde390ab2f189c579f5fb18e191f7eed89.tar.gz
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'"