This is an automated email from the ASF dual-hosted git repository.

bkyryliuk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-superset.git


The following commit(s) were added to refs/heads/master by this push:
     new b7c45fe  fix: downgrade sqlparse and add unit test (#10165)
b7c45fe is described below

commit b7c45fed80d97f917638a89322758037b393faad
Author: Bogdan <b.kyryl...@gmail.com>
AuthorDate: Mon Jul 6 11:10:46 2020 -0700

    fix: downgrade sqlparse and add unit test (#10165)
    
    * Downgrade sqlparse and add unit test
    
    * Explain why sqlparse is pinned
    
    Co-authored-by: bogdan kyryliuk <bogdankyryl...@dropbox.com>
---
 requirements.txt         |  2 +-
 setup.py                 |  2 +-
 tests/sql_parse_tests.py | 21 ++++++++++++++++++++-
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/requirements.txt b/requirements.txt
index 73e7be6..951ef76 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -88,7 +88,7 @@ six==1.14.0               # via bleach, cryptography, 
flask-jwt-extended, flask-
 slackclient==2.6.2        # via apache-superset (setup.py)
 sqlalchemy-utils==0.36.6  # via apache-superset (setup.py), flask-appbuilder
 sqlalchemy==1.3.16        # via alembic, apache-superset (setup.py), 
flask-sqlalchemy, marshmallow-sqlalchemy, sqlalchemy-utils
-sqlparse==0.3.1           # via apache-superset (setup.py)
+sqlparse==0.3.0           # via apache-superset (setup.py)
 typing-extensions==3.7.4.2  # via aiohttp
 urllib3==1.25.9           # via selenium
 vine==1.3.0               # via amqp, celery
diff --git a/setup.py b/setup.py
index 897c305..141fd44 100644
--- a/setup.py
+++ b/setup.py
@@ -105,7 +105,7 @@ setup(
         "slackclient>=2.6.2",
         "sqlalchemy>=1.3.16, <2.0",
         "sqlalchemy-utils>=0.36.6,<0.37",
-        "sqlparse>=0.3.0, <0.4",
+        "sqlparse==0.3.0",  # PINNED! see 
https://github.com/andialbrecht/sqlparse/issues/562
         "wtforms-json",
     ],
     extras_require={
diff --git a/tests/sql_parse_tests.py b/tests/sql_parse_tests.py
index 5d2fc4d..f2ad795 100644
--- a/tests/sql_parse_tests.py
+++ b/tests/sql_parse_tests.py
@@ -16,6 +16,8 @@
 # under the License.
 import unittest
 
+import sqlparse
+
 from superset.sql_parse import ParsedQuery, Table
 
 
@@ -187,7 +189,11 @@ class TestSupersetSqlParse(unittest.TestCase):
     # SHOW TABLES ((FROM | IN) qualifiedName)? (LIKE pattern=STRING)?
     def test_show_tables(self):
         query = "SHOW TABLES FROM s1 like '%order%'"
-        self.assertEqual(set(), self.extract_tables(query))
+        # TODO: figure out what should code do here
+        self.assertEqual({Table("s1")}, self.extract_tables(query))
+        # Expected behavior is below, it is fixed in sqlparse>=3.1
+        # However sqlparse==3.1 breaks some sql formatting.
+        # self.assertEqual(set(), self.extract_tables(query))
 
     # SHOW COLUMNS (FROM | IN) qualifiedName
     def test_show_columns(self):
@@ -560,3 +566,16 @@ class TestSupersetSqlParse(unittest.TestCase):
         SELECT * FROM match
         """
         self.assertEqual({Table("foo")}, self.extract_tables(query))
+
+    def test_sqlparse_formatting(self):
+        # sqlparse 0.3.1 has a bug and removes space between from and 
from_unixtime while formatting:
+        # SELECT extract(HOUR\n               fromfrom_unixtime(hour_ts)
+        # AT TIME ZONE 'America/Los_Angeles')\nfrom table
+        self.assertEqual(
+            "SELECT extract(HOUR\n               from from_unixtime(hour_ts) "
+            "AT TIME ZONE 'America/Los_Angeles')\nfrom table",
+            sqlparse.format(
+                "SELECT extract(HOUR from from_unixtime(hour_ts) AT TIME ZONE 
'America/Los_Angeles') from table",
+                reindent=True,
+            ),
+        )

Reply via email to