1
0
Fork 0

Merging upstream version 24.1.0.

Signed-off-by: Daniel Baumann <daniel@debian.org>
This commit is contained in:
Daniel Baumann 2025-02-13 21:37:09 +01:00
parent 9689eb837b
commit d5706efe6b
Signed by: daniel
GPG key ID: FBB4F0E80A80222F
70 changed files with 55134 additions and 50721 deletions

View file

@ -86,6 +86,7 @@ class Scope:
def clear_cache(self):
self._collected = False
self._raw_columns = None
self._stars = None
self._derived_tables = None
self._udtfs = None
self._tables = None
@ -119,14 +120,20 @@ class Scope:
self._derived_tables = []
self._udtfs = []
self._raw_columns = []
self._stars = []
self._join_hints = []
for node in self.walk(bfs=False):
if node is self.expression:
continue
if isinstance(node, exp.Column) and not isinstance(node.this, exp.Star):
self._raw_columns.append(node)
if isinstance(node, exp.Dot) and node.is_star:
self._stars.append(node)
elif isinstance(node, exp.Column):
if isinstance(node.this, exp.Star):
self._stars.append(node)
else:
self._raw_columns.append(node)
elif isinstance(node, exp.Table) and not isinstance(node.parent, exp.JoinHint):
self._tables.append(node)
elif isinstance(node, exp.JoinHint):
@ -231,6 +238,14 @@ class Scope:
self._ensure_collected()
return self._subqueries
@property
def stars(self) -> t.List[exp.Column | exp.Dot]:
"""
List of star expressions (columns or dots) in this scope.
"""
self._ensure_collected()
return self._stars
@property
def columns(self):
"""