Skip to content

Commit 1222915

Browse files
authored
Removing input name remover shuttle (#426)
This shuttle is now defunct as other functionalities render it obsolete.
1 parent db63921 commit 1222915

File tree

7 files changed

+6
-86
lines changed

7 files changed

+6
-86
lines changed

pydough/conversion/agg_split.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
CallExpression,
1414
ColumnReference,
1515
ColumnReferenceFinder,
16-
ColumnReferenceInputNameRemover,
1716
Join,
1817
JoinType,
1918
LiteralExpression,
@@ -23,6 +22,7 @@
2322
)
2423
from pydough.relational.rel_util import (
2524
ExpressionTranspositionShuttle,
25+
add_input_name,
2626
extract_equijoin_keys,
2727
fetch_or_insert,
2828
)
@@ -173,7 +173,6 @@ def transpose_aggregate_join(
173173
need_projection: bool = False
174174

175175
finder: ColumnReferenceFinder = ColumnReferenceFinder()
176-
alias_remover: ColumnReferenceInputNameRemover = ColumnReferenceInputNameRemover()
177176
transposer: ExpressionTranspositionShuttle = ExpressionTranspositionShuttle(
178177
join, False
179178
)
@@ -245,8 +244,8 @@ def transpose_aggregate_join(
245244
agg_input_name
246245
}:
247246
if isinstance(transposed_agg_key, ColumnReference):
248-
input_keys[transposed_agg_key.name] = transposed_agg_key.accept_shuttle(
249-
alias_remover
247+
input_keys[transposed_agg_key.name] = add_input_name(
248+
transposed_agg_key, None
250249
)
251250
else:
252251
if agg_key_name in join.columns and (
@@ -255,9 +254,7 @@ def transpose_aggregate_join(
255254
# An edge cases that is theoretically possible but never
256255
# encountered so far, and where the behavior is undefined.
257256
raise NotImplementedError("Undefined behavior")
258-
input_keys[agg_key_name] = transposed_agg_key.accept_shuttle(
259-
alias_remover
260-
)
257+
input_keys[agg_key_name] = add_input_name(transposed_agg_key, None)
261258
join.columns[agg_key_name] = ColumnReference(
262259
agg_key_name, agg_key.data_type, agg_input_name
263260
)

pydough/relational/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
"ColumnReference",
66
"ColumnReferenceFinder",
77
"ColumnReferenceInputNameModifier",
8-
"ColumnReferenceInputNameRemover",
98
"CorrelatedReference",
109
"EmptySingleton",
1110
"ExpressionSortInfo",
@@ -34,7 +33,6 @@
3433
ColumnReference,
3534
ColumnReferenceFinder,
3635
ColumnReferenceInputNameModifier,
37-
ColumnReferenceInputNameRemover,
3836
CorrelatedReference,
3937
ExpressionSortInfo,
4038
LiteralExpression,

pydough/relational/relational_expressions/README.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,6 @@ The relational_expressions module provides functionality to define and manage va
5757

5858
- `RelationalExpressionShuttle`: Specialized form of the visitor pattern that returns a relational expression. This is used to handle the common case where we need to modify a type of input.
5959

60-
### [column_reference_input_name_remover.py](column_reference_input_name_remover.py)
61-
62-
- `ColumnReferenceInputNameRemover`: Shuttle implementation designed to remove the input name from any column reference whose name is not found in the given set.
63-
6460
### [column_reference_input_name_modifier.py](column_reference_input_name_modifier.py)
6561

6662
- `ColumnReferenceInputNameModifier`: Shuttle implementation designed to update all uses of a column reference's input name to a new input name based on a dictionary.

pydough/relational/relational_expressions/__init__.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
"ColumnReference",
99
"ColumnReferenceFinder",
1010
"ColumnReferenceInputNameModifier",
11-
"ColumnReferenceInputNameRemover",
1211
"CorrelatedReference",
1312
"CorrelatedReferenceFinder",
1413
"ExpressionSortInfo",
@@ -23,7 +22,6 @@
2322
from .column_reference import ColumnReference
2423
from .column_reference_finder import ColumnReferenceFinder
2524
from .column_reference_input_name_modifier import ColumnReferenceInputNameModifier
26-
from .column_reference_input_name_remover import ColumnReferenceInputNameRemover
2725
from .correlated_reference import CorrelatedReference
2826
from .correlated_reference_finder import CorrelatedReferenceFinder
2927
from .expression_sort_info import ExpressionSortInfo

pydough/relational/relational_expressions/column_reference_input_name_remover.py

Lines changed: 0 additions & 47 deletions
This file was deleted.

pydough/sqlglot/sqlglot_relational_visitor.py

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
"""
55

66
import warnings
7-
from collections import defaultdict
87

98
from sqlglot.expressions import AggFunc as SQLGlotAggFunc
109
from sqlglot.expressions import Alias as SQLGlotAlias
@@ -23,13 +22,11 @@
2322
CallExpression,
2423
ColumnReference,
2524
ColumnReferenceInputNameModifier,
26-
ColumnReferenceInputNameRemover,
2725
CorrelatedReference,
2826
EmptySingleton,
2927
ExpressionSortInfo,
3028
Filter,
3129
Join,
32-
JoinType,
3330
Limit,
3431
LiteralExpression,
3532
Project,
@@ -92,9 +89,6 @@ def __init__(
9289
self._alias_modifier: ColumnReferenceInputNameModifier = (
9390
ColumnReferenceInputNameModifier()
9491
)
95-
self._alias_remover: ColumnReferenceInputNameRemover = (
96-
ColumnReferenceInputNameRemover()
97-
)
9892
# Counter for generating unique table alias.
9993
self._alias_counter: int = 0
10094

@@ -399,29 +393,13 @@ def visit_join(self, join: Join) -> None:
399393
self.visit_inputs(join)
400394
inputs: list[Select] = [self._stack.pop() for _ in range(len(join.inputs))]
401395
inputs.reverse()
402-
# Compute a dictionary to find all duplicate names.
403-
seen_names: dict[str, int] = defaultdict(int)
404-
for idx, input in enumerate(join.inputs):
405-
occurrences: int = 1
406-
if join.join_type in (JoinType.SEMI, JoinType.ANTI):
407-
# For SEMI and ANTI joins, we must keep the columns input names
408-
# from the left side and treat them as if they appear in the
409-
# RHS.
410-
occurrences = 2
411-
for column in input.columns.keys():
412-
seen_names[column] += occurrences
413-
# Only keep duplicate names.
414-
kept_names = {key for key, value in seen_names.items() if value > 1}
415396
for i in range(len(join.inputs)):
416397
input_name = join.default_input_aliases[i]
417398
if input_name not in alias_map:
418399
alias_map[input_name] = self._generate_table_alias()
419-
self._alias_remover.set_kept_names(kept_names)
420400
self._alias_modifier.set_map(alias_map)
421401
columns = {
422-
alias: col.accept_shuttle(self._alias_remover).accept_shuttle(
423-
self._alias_modifier
424-
)
402+
alias: col.accept_shuttle(self._alias_modifier)
425403
for alias, col in join.columns.items()
426404
}
427405
column_exprs = [

tests/test_sql_refsols/tpch_q21_ansi.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ WITH _t5 AS (
2626
3
2727
), _s11 AS (
2828
SELECT
29-
_t6.l_orderkey,
3029
_t6.l_linenumber,
30+
_t6.l_orderkey,
3131
orders.o_orderkey
3232
FROM _t5 AS _t6
3333
JOIN tpch.orders AS orders

0 commit comments

Comments
 (0)