-
Notifications
You must be signed in to change notification settings - Fork 20
/
union.py
39 lines (30 loc) · 1.11 KB
/
union.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from mindsdb_sql.parser.ast.base import ASTNode
from mindsdb_sql.parser.utils import indent
class Union(ASTNode):
def __init__(self,
left,
right,
unique=True,
*args, **kwargs):
super().__init__(*args, **kwargs)
self.left = left
self.right = right
self.unique = unique
if self.alias:
self.parentheses = True
def to_tree(self, *args, level=0, **kwargs):
ind = indent(level)
ind1 = indent(level+1)
left_str = f'\n{ind1}left=\n{self.left.to_tree(level=level + 2)},'
right_str = f'\n{ind1}right=\n{self.right.to_tree(level=level + 2)},'
out_str = f'{ind}Union(unique={repr(self.unique)},' \
f'{left_str}' \
f'{right_str}' \
f'\n{ind})'
return out_str
def get_string(self, *args, **kwargs):
left_str = str(self.left)
right_str = str(self.right)
keyword = 'UNION' if self.unique else 'UNION ALL'
out_str = f"""{left_str}\n{keyword}\n{right_str}"""
return out_str