Skip to content

[EPIC] Enable Adaptive Query Execution (AQE) by default #2092

Description

@andygrove

Goal

Adaptive Query Execution (AQE) is currently EXPERIMENTAL and disabled by default. This epic tracks the correctness, fault-tolerance, performance, and feature work required to make the adaptive planner the default execution path and eventually remove the experimental warning.

The design and initial implementation of the adaptive planner are tracked in the design epic #1359. This epic is the "graduation" checklist: the remaining work to flip the default from off to on.

Current state

AQE is gated behind these configuration flags, all off by default:

  • ballista.planner.adaptive.enabled — master switch (AdaptiveExecutionGraph / AdaptivePlanner)
  • ballista.planner.coalesce.enabled — coalesce shuffle partitions rule
  • ballista.planner.propagate_empty.enabled — propagate-empty rule
  • ballista.planner.adaptive_join.enabled — dynamic join selection (SelectJoinRule / DynamicJoinSelectionExec)

The scheduler emits "Adaptive Query Planning is EXPERIMENTAL, should be used for testing purposes only!" when the master switch is on.

Exit criteria

Before flipping the default we want:

  1. No AQE-specific correctness failures on the TPC-H and TPC-DS suites at scale.
  2. AQE on is at least as fast as AQE off across the benchmark suites (no regressions).
  3. The adaptive path has the same fault-tolerance guarantees as the static path (executor loss, shuffle-fetch retry, stage/task retry).
  4. The adaptive feature set (coalesce, propagate-empty, dynamic join selection, runtime join/aggregate switching) is complete and enabled.
  5. Operational parity with the static planner (intermediate-shuffle reclaim, stats plumbing).

Blocking issues

Correctness (AQE-specific)

Fault tolerance / high availability

Planning quality / performance regressions

Statistics plumbing

Feature completeness

Operational

Already resolved

For context, these AQE blockers are already fixed:

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions