summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacekPliszka <Jacek.Pliszka@gmail.com>2015-02-12 01:37:46 +0100
committerJacekPliszka <Jacek.Pliszka@gmail.com>2015-02-12 01:37:46 +0100
commit703aec1fb30dcf5c0ed14552e601e4487707435e (patch)
tree8f5beb4e9c71c4e37513b800f118c8c67754804c
parent858b366d8fea37424f4f6b3b534190ac873b02c9 (diff)
downloadsqlparse-703aec1fb30dcf5c0ed14552e601e4487707435e.tar.gz
Fix of problem with multiline treated as stackable while /* /* */ is one comment, not two stacked
-rw-r--r--sqlparse/lexer.py8
-rw-r--r--tests/test_format.py3
2 files changed, 10 insertions, 1 deletions
diff --git a/sqlparse/lexer.py b/sqlparse/lexer.py
index a60c789..3e9a1a6 100644
--- a/sqlparse/lexer.py
+++ b/sqlparse/lexer.py
@@ -315,7 +315,13 @@ class Lexer(object):
statestack.pop()
elif state == '#push':
statestack.append(statestack[-1])
- else:
+ elif (
+ # Ugly hack - multiline-comments
+ # are not stackable
+ state != 'multiline-comments'
+ or not statestack
+ or statestack[-1] != 'multiline-comments'
+ ):
statestack.append(state)
elif isinstance(new_state, int):
# pop
diff --git a/tests/test_format.py b/tests/test_format.py
index b789b17..a105b1c 100644
--- a/tests/test_format.py
+++ b/tests/test_format.py
@@ -61,6 +61,9 @@ class TestFormat(TestCaseBase):
sql = 'select (/* sql starts here */ select 2)'
res = sqlparse.format(sql, strip_comments=True)
self.ndiffAssertEqual(res, 'select (select 2)')
+ sql = 'select (/* sql /* starts here */ select 2)'
+ res = sqlparse.format(sql, strip_comments=True)
+ self.ndiffAssertEqual(res, 'select (select 2)')
def test_strip_ws(self):
f = lambda sql: sqlparse.format(sql, strip_whitespace=True)