File tree Expand file tree Collapse file tree 1 file changed +45
-0
lines changed
Expand file tree Collapse file tree 1 file changed +45
-0
lines changed Original file line number Diff line number Diff line change @@ -87,3 +87,48 @@ def test_cte_nested(self):
8787 assert str (ast ).lower () == sql .lower ()
8888 assert str (ast ) == str (expected_ast )
8989 assert ast .to_tree () == expected_ast .to_tree ()
90+
91+ def test_cte_union (self ):
92+ sql = """
93+ WITH ta AS (
94+ SELECT 'a' AS a
95+ UNION
96+ SELECT 'b' AS a
97+ ), tb AS (
98+ SELECT 'c' AS a
99+ UNION
100+ SELECT 'd' AS a
101+ )
102+ SELECT a FROM ta
103+ UNION
104+ SELECT a FROM tb
105+ """
106+ ast = parse_sql (sql )
107+
108+ expected_ast = Union (
109+ left = Select (
110+ cte = [
111+ CommonTableExpression (
112+ name = Identifier ('ta' ),
113+ query = Union (
114+ left = Select (targets = [Constant ('a' , alias = Identifier ('a' ))]),
115+ right = Select (targets = [Constant ('b' , alias = Identifier ('a' ))])
116+ )
117+ ),
118+ CommonTableExpression (
119+ name = Identifier ('tb' ),
120+ query = Union (
121+ left = Select (targets = [Constant ('c' , alias = Identifier ('a' ))]),
122+ right = Select (targets = [Constant ('d' , alias = Identifier ('a' ))])
123+ )
124+ ),
125+ ],
126+ targets = [Identifier ('a' )],
127+ from_table = Identifier ('ta' )
128+ ),
129+ right = Select (targets = [Identifier ('a' )], from_table = Identifier ('tb' ))
130+ )
131+
132+ assert (' ' .join (str (ast ).split ())).lower () == (' ' .join (sql .split ())).lower ()
133+ assert str (ast ) == str (expected_ast )
134+ assert ast .to_tree () == expected_ast .to_tree ()
You can’t perform that action at this time.
0 commit comments