Shuxian,

It would be great to carry on this integration. I downloaded and built your 
project. (I also opened a pull request[1], adding a maven wrapper and a README.)

It’s difficult to get at the RelNodes in RelOptRulesTest if you’re outside 
Calcite. (Because it is a test, we don’t currently include it in a library.) 
Therefore I suggest that you create a fork of Calcite and modify the 
RelOptTestCase.Sql.checkPlanning method[2] to call your checker. Of course 
you’ll have to modify core/build.gradle.kts and add your checker library as a 
testImplementation.

Julian

[1] https://github.com/cosette-solver/cosette-parser/pull/1 

[2] 
https://github.com/apache/calcite/blob/d46137a197a2840ea5ff9f3b38bb86d423c9af11/core/src/test/java/org/apache/calcite/test/RelOptTestBase.java#L87

> On Jul 29, 2021, at 2:26 AM, Shuxian Wang <[email protected]> wrote:
> 
> Hello Calcite developers,
> 
> I am a Berkeley student working on a new version for the [Cosette SQL 
> prover](https://cosette.cs.washington.edu/).
> This [new implementation](https://github.com/cosette-solver/cosette-rs) aims 
> for higher performance and better SQL feature coverage.
> One goal for us is to formally check as much rewrite rules in Calcite as 
> possible, which are those located in 
> https://github.com/apache/calcite/blob/master/core/src/test/java/org/apache/calcite/test/RelOptRulesTest.java.
> 
> The prover initially relies on a custom SQL parser, but we’ve decided to 
> build a [new one](https://github.com/cosette-solver/cosette-parser) depending 
> on Calcite’s parser instead.
> This parser takes in SQL and use Calcite to get a corresponding RelNode.
> Later on the parser translates that RelNode into a JSON format that will be 
> recognized by the prover.
> This makes integrating with the Calcite testing component very feasible, 
> given a way to extract the RelNode before/after each rewrite test and send 
> them to the prover in JSON.
> 
> I writing to ask if there is any general interest in such integration? If so, 
> some help on extracting the RelNode from the Calcite test cases would be 
> appreciated.
> 
> Sincerely,
> 
> Shuxian Wang

Reply via email to