fix: make Unsupported require a reason string#3885
Draft
andygrove wants to merge 1 commit intoapache:mainfrom
Draft
fix: make Unsupported require a reason string#3885andygrove wants to merge 1 commit intoapache:mainfrom
andygrove wants to merge 1 commit intoapache:mainfrom
Conversation
97eecf4 to
40478e3
Compare
Change Unsupported case class from Option[String] to String to prevent empty fallback reasons in explain output. This ensures every unsupported feature has a descriptive message explaining why it is not supported.
40478e3 to
9186e25
Compare
andygrove
commented
Apr 2, 2026
Comment on lines
+625
to
+626
| case _ => | ||
| Unsupported("Only array_compact (ArrayFilter with IsNotNull) is supported") |
Member
Author
There was a problem hiding this comment.
This was previously not reported
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Which issue does this PR close?
N/A (minor bug fix discovered during plan inspection)
Rationale for this change
The
Unsupportedcase class usesOption[String]for its notes field, which allows constructingUnsupported()orUnsupported(None)without a reason. When this happens, the explain output shows empty fallback messages likeGenerate [COMET: ]which are not helpful for debugging why an operator was not converted.What changes are included in this PR?
Unsupportedfromcase class Unsupported(notes: Option[String] = None)tocase class Unsupported(notes: String), making a reason string required at compile time.Some(...)wrapping from all existingUnsupported(Some("..."))call sites.notes.getOrElse("")withnotesat the three match sites that consume the value.Unsupported()without a reason:CometShuffleExchangeExecandCometArrayFilter.How are these changes tested?
This is a mechanical refactor that makes the type system enforce non-empty reasons. The existing test suite covers operator conversion logic. Verified the change compiles and passes spotless formatting.