Jungtaek Lim created SPARK-60689:
------------------------------------

             Summary: Add the planning rules for external lookup join
                 Key: SPARK-60689
                 URL: https://issues.apache.org/jira/browse/SPARK-60689
             Project: Spark
          Issue Type: Task
          Components: SQL, Structured Streaming
    Affects Versions: 4.4.0
            Reporter: Jungtaek Lim


Part of SPARK-60031. This ticket adds the logical nodes and the analyzer and 
optimizer rules. They are **not registered** yet, so no query reaches them and 
nothing changes for users; plan-level tests exercise them.

In scope:
- Logical nodes `ExternalLookupJoin` and `PreparedExternalLookupJoin`, and the 
placeholder `ExternalLookupRelation`.
- `ResolveExternalLookupJoin`:
  - rewrites an inner or left outer join with a condition, whose left side is a 
streaming query and whose right side **is** a lookup-only table 
(`EXTERNAL_LOOKUP` without `BATCH_READ`);
  - rejects ineligible joins with named errors: `JOIN_TYPE`, 
`STATIC_LEFT_SIDE`, `LOOKUP_TABLE_ON_LEFT` and `CONFLICTING_JOIN_STRATEGY`;
  - reports `MISSING_JOIN_CONDITION` on the final plan.
- `PrepareExternalLookupJoin`:
  - offers `=` comparisons as candidates and maps the connector's selection 
back by identity;
  - keeps everything else as a residual condition;
  - validates the connector contract (`DATA_SOURCE_INVALID_EXTERNAL_LOOKUP.*`);
  - matches the read schema the way V2 scans do (CHAR/VARCHAR, nested 
nullability).

Out of scope:
- Registering the rules and executing joins.
- Lookup sides beneath hints, aliases, views, projections or filters.
- The `EXTERNAL_LOOKUP` hint and dual-capability opt-in.
- Left semi/anti joins, `<=>` and range predicates.
- Cache.
- Predicate pushdown through the join.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to