mirror of https://github.com/apache/superset.git
* fix: Workaround for sqlparse issue #652 * Update superset/sql_parse.py Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com> * Update sql_parse.py Co-authored-by: John Bodley <john.bodley@airbnb.com> Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
This commit is contained in:
parent
ce614ea815
commit
63ca09e345
|
@ -15,6 +15,7 @@
|
|||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
import logging
|
||||
import re
|
||||
from dataclasses import dataclass
|
||||
from enum import Enum
|
||||
from typing import List, Optional, Set
|
||||
|
@ -41,6 +42,16 @@ CTE_PREFIX = "CTE__"
|
|||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
# TODO: Workaround for https://github.com/andialbrecht/sqlparse/issues/652.
|
||||
sqlparse.keywords.SQL_REGEX.insert(
|
||||
0,
|
||||
(
|
||||
re.compile(r"'(''|\\\\|\\|[^'])*'", sqlparse.keywords.FLAGS).match,
|
||||
sqlparse.tokens.String.Single,
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
class CtasMethod(str, Enum):
|
||||
TABLE = "TABLE"
|
||||
VIEW = "VIEW"
|
||||
|
|
|
@ -1199,3 +1199,9 @@ def test_validate_filter_clause_comment():
|
|||
def test_validate_filter_clause_subquery_comment():
|
||||
with pytest.raises(QueryClauseValidationException):
|
||||
validate_filter_clause("(1 = 1 -- comment\n)")
|
||||
|
||||
|
||||
def test_sqlparse_issue_652():
|
||||
stmt = sqlparse.parse(r"foo = '\' AND bar = 'baz'")[0]
|
||||
assert len(stmt.tokens) == 5
|
||||
assert str(stmt.tokens[0]) == "foo = '\\'"
|
||||
|
|
Loading…
Reference in New Issue