File tree Expand file tree Collapse file tree 2 files changed +24
-2
lines changed Expand file tree Collapse file tree 2 files changed +24
-2
lines changed Original file line number Diff line number Diff line change @@ -228,7 +228,7 @@ def is_select(self) -> bool:
228228 # for `UNKNOWN`, check all DDL/DML explicitly: only `SELECT` DML is allowed,
229229 # and no DDL is allowed
230230 if any (token .ttype == DDL for token in parsed [0 ]) or any (
231- token .ttype == DML and token .value != "SELECT" for token in parsed [0 ]
231+ token .ttype == DML and token .normalized != "SELECT" for token in parsed [0 ]
232232 ):
233233 return False
234234
@@ -237,7 +237,7 @@ def is_select(self) -> bool:
237237 return False
238238
239239 return any (
240- token .ttype == DML and token .value == "SELECT" for token in parsed [0 ]
240+ token .ttype == DML and token .normalized == "SELECT" for token in parsed [0 ]
241241 )
242242
243243 def is_valid_ctas (self ) -> bool :
Original file line number Diff line number Diff line change @@ -1008,6 +1008,28 @@ def test_cte_is_select() -> None:
10081008 assert sql .is_select ()
10091009
10101010
1011+ def test_cte_is_select_lowercase () -> None :
1012+ """
1013+ Some CTEs with lowercase select are not correctly identified as SELECTS.
1014+ """
1015+ sql = ParsedQuery (
1016+ """WITH foo AS(
1017+ select
1018+ FLOOR(__time TO WEEK) AS "week",
1019+ name,
1020+ COUNT(DISTINCT user_id) AS "unique_users"
1021+ FROM "druid"."my_table"
1022+ GROUP BY 1,2
1023+ )
1024+ select
1025+ f.week,
1026+ f.name,
1027+ f.unique_users
1028+ FROM foo f"""
1029+ )
1030+ assert sql .is_select ()
1031+
1032+
10111033def test_unknown_select () -> None :
10121034 """
10131035 Test that `is_select` works when sqlparse fails to identify the type.
You can’t perform that action at this time.
0 commit comments