fix(tlp): avoid false positives in TLP#6
Conversation
|
Thank you for working on this! The current expression generation strategy is to try to produce an expression of the target type on a best-effort basis. For example, This design is simpler and introduces more randomness, which makes it more likely to detect panics or crashes from invalid queries. The tradeoff introduced by this PR is that we now need to implement a dedicated generator for valid boolean expressions. This also requires updating it whenever new boolean-returning expressions are added. In return, the valid query rate for TLP oracle testing improves from ~80% to 100%. I’d like to think about this a bit more. For now, I prefer to keep things simple. However:
|
|
Sounds good! I will explore this further. |
Summary
This PR fixes false positives in the TLP oracles.
The main change is that TLP
WHEREandHAVINGpredicates now use a safe boolean generator. That keeps the predicates well-typed and valid for TLP checks.The
NoCrashpath still keeps broader invalid-expression coverage, so this does not reduce the general crash-fuzzing goal.Why
Before this change, the fuzzer could generate invalid predicates for TLP queries.
That caused cases where:
Those were reported like oracle failures, but they were fuzzer-side false positives rather than real DataFusion correctness bugs.
What changed