Abdullahsab3 opened a new issue, #12569:
URL: https://github.com/apache/datafusion/issues/12569
### Is your feature request related to a problem or challenge?
Property based testing is a testing technique that can be used to ensure a
certain property holds for a certain set of input. For example the associative
property of addition:
```math
$$
\forall a, b, c \in \mathbb{R} :\quad (a + b) + c = a + (b + c)
$$
```
Property based testing is often used to test soundness/correctness of
interpreter, compilers and static analysis tools. As an example, property based
testing is used to test certain lattice properties in the following static
analysis tool (written in Scala)
https://github.com/Abdullahsab3/maf/blob/master/code/shared/src/test/scala/maf/test/lattice/LatticeTests.scala
It might be interesting to use it for Apache Datafusion as well? I think
bugs such as https://github.com/apache/datafusion/issues/12190 can be detected
easier when this kind of tests are present. It might help improve the stability
of Datafusion in the long run.
In the context of Datafusion, on top of my head, I think it might be useful
to use this technique to test arithmetic properties between scalar values, time
values, etc. There are likely more advanced use cases for property based
testing in Datafusion wrt logical or physical plans.
In Rust the popular property based testing libraries are proptest (great
documentation https://proptest-rs.github.io/proptest/intro.html) and Quickcheck
(https://github.com/BurntSushi/quickcheck). Not sure how easy or feasible it is
to use this technique in Datafusion or Arrow. Just an idea to share
### Describe the solution you'd like
_No response_
### Describe alternatives you've considered
_No response_
### Additional context
_No response_
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]