apache / apache/datafusion

Remove deprecated `Expr::Wildcard` variant

Open
#24,543 1 comment 0 reactions 1 assignee Claimed by @vvvdwbvvv View on GitHub
api change enhancement
Dominant language
Rust
Stars
9.3k
Forks
2.4k
Avg merge
3d 7h
Merged PRs (30d)
344

Description

### Is your feature request related to a problem or challenge?

The [API health policy deprecation guidelines] say deprecated APIs remain for

> 6 major versions or 6 months, whichever is longer

`main` is at `55.0.0`, so the next release is `56.0.0` and anything deprecated in `50.0.0` or earlier can now be removed.

| Item | Deprecated in | Replacement |
| --- | --- | --- |
| [`Expr::Wildcard`](https://github.com/apache/datafusion/blob/main/datafusion/expr/src/expr.rs#L401) | 46.0.0 | resolve to concrete columns when building the `LogicalPlan` |

[API health policy deprecation guidelines]: https://datafusion.apache.org/contributor-guide/api-health.html#deprecation-guidelines
[upgrade guide]: https://github.com/apache/datafusion/tree/main/docs/source/library-user-guide/upgrading

### Describe the solution you'd like

Remove the `Expr::Wildcard` variant and supporting code

This one is larger than the other removals in this sweep, so it is not a good first issue:

* There are ~75 `Expr::Wildcard` references across ~26 files (`expr`, `sql`, `optimizer`, `proto`, `functions-aggregate`, `functions-window`, `catalog-listing`, `substrait`)
* Removing an enum variant breaks downstream `match` arms even when they never construct a wildcard
* There is a corresponding [`Wildcard` message](https://github.com/apache/datafusion/blob/main/datafusion/proto-models/proto/datafusion.proto#L527) in `datafusion.proto`, so the serialization surface needs a decision too

Notes:

* While this is a breaking Rust API change, the PR should carry the `api change` label
* Unlike the other removals in this sweep, this one is probably worth a note in the `56.0.0` [upgrade guide], since downstream `match` arms break without a direct compiler-suggested replacement

### Describe alternatives you've considered

N/A

### Additional context

Supersedes #7765, which tracked the same removal.

Follow on to #23080, which did the same sweep at the `49.0.0` cutoff, and #24535.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.