Remove deprecated `Expr::Wildcard` variant
- 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
Assessment
This issue has not been assessed yet.