Skip to content

test(optimizer): Dual-run UnknownStatsJoinTest - #1795

Open
mbasmanova wants to merge 2 commits into
facebookincubator:mainfrom
mbasmanova:export-D117697551
Open

test(optimizer): Dual-run UnknownStatsJoinTest#1795
mbasmanova wants to merge 2 commits into
facebookincubator:mainfrom
mbasmanova:export-D117697551

Conversation

@mbasmanova

Copy link
Copy Markdown
Contributor

Summary:
UnknownStatsJoinTest ran under v1 only. It now runs under both, so every query in the suite has to plan under v2 as well.

9 of the 12 plan assertions hold under both optimizers unchanged. twoJoins needed a filterIf(!useV2_): v2 folds the rand() < 0.1 filter into the join instead of emitting a separate Filter, and the join order the test is about is unaffected.

The remaining three use AXIOM_ASSERT_PLAN_V1 and record a real gap. Two large tables that join only through a third one should hash-join through it. With syntacticJoinOrder = false, v1 does that; v2 cross-joins the two and hash-joins the third afterwards, which is the plan v1 produces only when the syntactic order is pinned.

bypass-github-export-checks

Differential Revision: D117697551

Summary:
`PlanTest` ran under v1 only. It now runs under both, so every query in the suite has to plan under v2 as well.

Half of the plan assertions hold unchanged under both optimizers and stay in `AXIOM_ASSERT_PLAN`. The 10 where v2 produces a different shape use `AXIOM_ASSERT_PLAN_V1`: the query still has to plan under v2, but its shape is not compared. The shapes v2 does not match today:

  - Subfield-filter pushdown into the scan.
  - Filters left after constant folding.
  - `ParallelProject` — v2 emits a single `Project`.

Differential Revision: D117696681
Summary:
`UnknownStatsJoinTest` ran under v1 only. It now runs under both, so every query in the suite has to plan under v2 as well.

9 of the 12 plan assertions hold under both optimizers unchanged. `twoJoins` needed a `filterIf(!useV2_)`: v2 folds the `rand() < 0.1` filter into the join instead of emitting a separate `Filter`, and the join order the test is about is unaffected.

The remaining three use `AXIOM_ASSERT_PLAN_V1` and record a real gap. Two large tables that join only through a third one should hash-join through it. With `syntacticJoinOrder = false`, v1 does that; v2 cross-joins the two and hash-joins the third afterwards, which is the plan v1 produces only when the syntactic order is pinned.

bypass-github-export-checks

Differential Revision: D117697551
@meta-cla meta-cla Bot added the CLA Signed This label is managed by the Meta Open Source bot. label Aug 27, 2026
@meta-codesync

meta-codesync Bot commented Aug 27, 2026

Copy link
Copy Markdown

@mbasmanova has exported this pull request. If you are a Meta employee, you can view the originating Diff in D117697551.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed This label is managed by the Meta Open Source bot.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant