From e22324adde283e042a527a9f8d8aeb6d5184e476 Mon Sep 17 00:00:00 2001 From: mapledan Date: Tue, 30 Jan 2024 16:56:57 +0800 Subject: [PATCH 1/3] fix: handle CRLF endings causing sqlglot failure --- superset/sql_parse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/sql_parse.py b/superset/sql_parse.py index 07704171dee3..ad9b0f480936 100644 --- a/superset/sql_parse.py +++ b/superset/sql_parse.py @@ -286,7 +286,7 @@ def _extract_tables_from_sql(self) -> set[Table]: Note: this uses sqlglot, since it's better at catching more edge cases. """ try: - statements = parse(self.sql, dialect=self._dialect) + statements = parse(self.sql.strip('\t\r\n '), dialect=self._dialect) except ParseError: logger.warning("Unable to parse SQL (%s): %s", self._dialect, self.sql) return set() From 973f61f7a8c5fed18cb79a95a5352427b5df0656 Mon Sep 17 00:00:00 2001 From: mapledan Date: Wed, 31 Jan 2024 12:29:54 +0800 Subject: [PATCH 2/3] re-run pre-commit --- superset/sql_parse.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/superset/sql_parse.py b/superset/sql_parse.py index ad9b0f480936..c7658962dab2 100644 --- a/superset/sql_parse.py +++ b/superset/sql_parse.py @@ -286,7 +286,7 @@ def _extract_tables_from_sql(self) -> set[Table]: Note: this uses sqlglot, since it's better at catching more edge cases. """ try: - statements = parse(self.sql.strip('\t\r\n '), dialect=self._dialect) + statements = parse(self.sql.strip("\t\r\n "), dialect=self._dialect) except ParseError: logger.warning("Unable to parse SQL (%s): %s", self._dialect, self.sql) return set() From 29024b425ad745a84692122fb9f37f78aa95757c Mon Sep 17 00:00:00 2001 From: mapledan Date: Wed, 31 Jan 2024 18:41:20 +0800 Subject: [PATCH 3/3] use already defined method --- superset/sql_parse.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/superset/sql_parse.py b/superset/sql_parse.py index c7658962dab2..7b89ab8f0e2c 100644 --- a/superset/sql_parse.py +++ b/superset/sql_parse.py @@ -286,7 +286,7 @@ def _extract_tables_from_sql(self) -> set[Table]: Note: this uses sqlglot, since it's better at catching more edge cases. """ try: - statements = parse(self.sql.strip("\t\r\n "), dialect=self._dialect) + statements = parse(self.stripped(), dialect=self._dialect) except ParseError: logger.warning("Unable to parse SQL (%s): %s", self._dialect, self.sql) return set() @@ -494,7 +494,7 @@ def is_unknown(self) -> bool: return self._parsed[0].get_type() == "UNKNOWN" def stripped(self) -> str: - return self.sql.strip(" \t\n;") + return self.sql.strip(" \t\r\n;") def strip_comments(self) -> str: return sqlparse.format(self.stripped(), strip_comments=True)