Skip to content

partitioning: store start and end bounds in Partitioning::Range #26509

Description

@jayshrivastava

Is your feature request related to a problem or challenge?

See datafusion-contrib/datafusion-distributed#628 (comment)

Original Data

Image

Distributed Query

Image

There's no way to split up / distribute Partitioning::Range without losing information (losing a split point).

This makes it so that coalese operations must use Partitionoing::Unknown because we cannot prove the partitions are dijoint ranges. Similar issues for shuffles.

Describe the solution you'd like

I want to be able to store the start and end bounds in Partitioning::Range. This is a pretty easy migration, we can default to -inf and inf.

That will unlock well defined ranges.

Describe alternatives you've considered

For coalesces, we use Partitioning::Unknown for now, but I would like to use range partitioning if the ranges can be joined together.

Say I'm distributing 13 partitions, A–M, with boundaries 10, 20, …, 120 across 4 workers with 4 partitions each.

  Task 0: [ A |10| B |20| C |30| D ]     splits: [10, 20, 30]
  Task 1: [ E |50| F |60| G |70| - ]     splits: [50, 60, 70]
  Task 2: [ H |80| I |90| J |100| - ]    splits: [80, 90, 100]
  Task 3: [ - |100| K |110| L |120| M ]  splits: [100, 110, 120]

I have to duplicate a split point, 100, which is a smell.

Additional context

No response

Willingness to contribute

None

Activity

  1. changed the title [-]store start and end bounds in Partitioning::Range[/-] [+]partitioning: store start and end bounds in Partitioning::Range[/+] on Oct 19, 2026
  2. jayshrivastava commented on Oct 20, 2026

    @jayshrivastava
    ContributorAuthor

    Another thing which might be useful is to be able to pad empty partitions. Ex. use duplicate split points such as 10, 10, 10, 10 to indicate empty partitions.

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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions