[sqllab] fix, strip comments before parsing statements (#9692)

This commit is contained in:
ʈᵃᵢ 2020-05-04 09:47:29 -07:00 committed by GitHub
parent 5d167afb94
commit 4c522ac65f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View File

@ -89,7 +89,10 @@ class ParsedQuery:
self._limit: Optional[int] = None
logger.debug("Parsing with sqlparse statement: %s", self.sql)
self._parsed = sqlparse.parse(self.stripped())
self._parsed = sqlparse.parse(
sqlparse.format(self.stripped(), strip_comments=True)
)
for statement in self._parsed:
self._limit = _extract_limit_from_query(statement)

View File

@ -535,6 +535,17 @@ class SupersetTestCase(unittest.TestCase):
expected = ["SELECT * FROM birth_names", "SELECT * FROM birth_names LIMIT 1"]
self.assertEqual(statements, expected)
def test_comment_breakdown_statements(self):
multi_sql = """
SELECT * FROM birth_names;
-- some comment
"""
parsed = sql_parse.ParsedQuery(multi_sql)
statements = parsed.get_statements()
self.assertEqual(len(statements), 1)
expected = ["SELECT * FROM birth_names"]
self.assertEqual(statements, expected)
def test_messy_breakdown_statements(self):
multi_sql = """
SELECT 1;\t\n\n\n \t