Skip to content

Commit c94c105

Browse files
committed
Remove subquery support
1 parent ccd261c commit c94c105

File tree

3 files changed

+0
-157
lines changed

3 files changed

+0
-157
lines changed

pymongosql/sql/handler.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -956,22 +956,9 @@ def can_handle(self, ctx: Any) -> bool:
956956
"""Check if this is a from context"""
957957
return hasattr(ctx, "tableReference")
958958

959-
# Subquery alias parsing and filter-key rewriting has been delegated to SubqueryResolver.
960-
# See `pymongosql/sql/subquery.py` for the implementation.
961-
pass
962-
963959
def handle_visitor(self, ctx: PartiQLParser.FromClauseContext, parse_result: "ParseResult") -> Any:
964960
if hasattr(ctx, "tableReference") and ctx.tableReference():
965961
table_text = ctx.tableReference().getText()
966-
967-
# Detect wrapped subquery pattern: (SELECT ...) alias
968-
from .subquery import SubqueryResolver
969-
970-
if SubqueryResolver.is_wrapped_subquery_text(table_text):
971-
resolver = SubqueryResolver()
972-
return resolver.resolve_and_apply(table_text, parse_result)
973-
974-
# Default: simple table reference
975962
collection_name = table_text
976963
parse_result.collection = collection_name
977964
return collection_name

pymongosql/sql/subquery.py

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

tests/test_sql_parser_general.py

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -300,21 +300,6 @@ def test_parser_error_handling(self):
300300
parser = SQLParser("INVALID SQL SYNTAX")
301301
parser.get_execution_plan()
302302

303-
def test_superset_wrapped_subquery(self):
304-
"""Support Superset wrapping subquery with alias 'virtual'"""
305-
sql = "SELECT virtual.a, virtual.b FROM (SELECT a, b FROM users WHERE c = 1) virtual"
306-
parser = SQLParser(sql)
307-
308-
assert not parser.has_errors, f"Parser errors: {parser.errors}"
309-
310-
execution_plan = parser.get_execution_plan()
311-
# After unwrapping, collection should be inner collection
312-
assert execution_plan.collection == "users"
313-
# Projections should be remapped to inner fields
314-
assert execution_plan.projection_stage == {"a": 1, "b": 1}
315-
# Inner filter should be preserved
316-
assert execution_plan.filter_stage == {"c": 1}
317-
318303
def test_different_collection_names(self):
319304
"""Test parsing with different collection names"""
320305
test_cases = [

0 commit comments

Comments
 (0)