Skip to content

Add a typed SessionConfigExt setter for ballista.execution.mode #2729

Open

Description

@andygrove

Is your feature request related to a problem or challenge?

To use pipelined execution (#2652) from Rust today, you set the mode by its string key:

let config = SessionConfig::new_with_ballista()
    .set_str("ballista.execution.mode", "pipelined");

Most other Ballista session settings have a typed helper on SessionConfigExt, such as with_ballista_adaptive_query_planner(bool). The execution mode doesn't have one, so you have to know the key and its string values. This came up in review of the pipelined execution user guide (#2713 (comment)).

Describe the solution you'd like

Add a typed setter and getter to SessionConfigExt, following the existing with_ballista_* convention:

fn with_ballista_execution_mode(self, mode: ExecutionMode) -> Self;
fn ballista_execution_mode(&self) -> ExecutionMode;

so enabling the mode becomes:

let config = SessionConfig::new_with_ballista()
    .with_ballista_execution_mode(ExecutionMode::Pipelined);

ExecutionMode would need to be reachable from the client crate's prelude or re-exports. The Rust snippet in docs/source/user-guide/pipelined-execution.md should then switch to the helper.

Describe alternatives you've considered

A dedicated constructor, SessionConfig::new_with_ballista_pipelined(). That would add a constructor per mode, and it wouldn't compose with configs built some other way. A setter matches how the other settings are exposed.

Additional context

The getter could also replace the scattered ballista_config().execution_mode() calls that parse the string.

Activity

  1. Atharva884 commented on Nov 1, 2026

    @Atharva884

    Can I work on this issue if it’s not taken up by someone else?

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions