Skip to content

[branch-53] fix: Provide more generic API for the capacity limit parsing (#20372)#20893

Open
alamb wants to merge 1 commit intoapache:branch-53from
alamb:alamb/backport_20372_branch53
Open

[branch-53] fix: Provide more generic API for the capacity limit parsing (#20372)#20893
alamb wants to merge 1 commit intoapache:branch-53from
alamb:alamb/backport_20372_branch53

Conversation

@alamb
Copy link
Contributor

@alamb alamb commented Mar 12, 2026

…20372)

## Which issue does this PR close?
- Closes apache#20371.

## Rationale for this change
Currently, `datafusion.runtime.max_temp_directory_size` is a disk based
config but when it is set as `invalid limit` or `invalid unit`, `memory
limit` is mentioned in error message. This seems to introduce
`inconsistency` between related runtime config and error message like
`disk` vs `memory` limit. This error message can be updated more generic
by setting problematic config name and covering both memory and disk
based capacity/size settings.

**Current:**
```
statement error DataFusion error: Error during planning: Failed to parse number from memory limit 'invalid_size'
SET datafusion.runtime.max_temp_directory_size = 'invalid_size'

statement error DataFusion error: Error during planning: Unsupported unit 'B' in memory limit '1024B'
SET datafusion.runtime.max_temp_directory_size = '1024B'
```

**New:**
```
statement error DataFusion error: Error during planning: Failed to parse number from 'datafusion.runtime.max_temp_directory_size', limit 'invalid_size'
SET datafusion.runtime.max_temp_directory_size = 'invalid_size'

statement error DataFusion error: Error during planning: Unsupported unit 'B' in 'datafusion.runtime.max_temp_directory_size', limit '1024B'. Unit must be one of: 'K', 'M', 'G'
SET datafusion.runtime.max_temp_directory_size = '1024B'
```

## What changes are included in this PR?
Following improvements are being offered:
1. Setting problematic config name in error message to cover all
use-cases (e.g: both memory and disk based capacity/size settings),
2. Allowed units are also added in error message,
3. `SessionContext.parse_memory_limit()` =>
`SessionContext.parse_capacity_limit()` function signature is also being
renamed to cover both memory and disk based capacity/size settings. This
is applied to both `SessionContext` and `Benchmark Utils`,
4. Being added new UT cases to cover these negative use-cases in terms
of above changes.

## Are these changes tested?
Yes and adding new UT cases

## Are there any user-facing changes?
Yes, new more detailed and generic error messages are exposed to
end-users.

---------

Co-authored-by: Martin Grigorov <martin-g@users.noreply.github.com>
@github-actions github-actions bot added core Core DataFusion crate sqllogictest SQL Logic Tests (.slt) labels Mar 12, 2026
Copy link
Member

@erenavsarogullari erenavsarogullari left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

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

Labels

core Core DataFusion crate sqllogictest SQL Logic Tests (.slt)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants