[
https://issues.apache.org/jira/browse/CALCITE-1977?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16165257#comment-16165257
]
Julian Hyde commented on CALCITE-1977:
--------------------------------------
Or even easier, have Calcite generate a script. Cosette can be invoked offline.
> Use Cosette to check whether planner rules are valid
> ----------------------------------------------------
>
> Key: CALCITE-1977
> URL: https://issues.apache.org/jira/browse/CALCITE-1977
> Project: Calcite
> Issue Type: Bug
> Reporter: Julian Hyde
> Assignee: Julian Hyde
>
> Use [Cosette|http://cosette.cs.washington.edu/], an automated SQL solver from
> University of Washington, to check whether planner rules are valid.
> I don't know whether Cosette is written in Java, so the simplest approach
> might be to instrument the planner to generate a script. Suppose
> {{FilterProjectTransposeRule}} has just fired successfully. Then
> {{RelOptRuleCall#transformTo}} would generate the line
> {code}
> assertEquivalent(
> "select * from (select empno from emp) where empno > 10",
> "select empno from (select * from emp where empno > 10)")
> {code}
> (Those SQL statements are the result of converting the before and after
> {{RelNode}} instances to SQL.)
> We could run the Calcite test suite to produce a large script with probably
> thousands of those statements. Then the Cosette researchers can take that
> script and run it through Cosette (using whatever language they develop in).
> It would find bugs in Cosette (at first mostly deficiencies in Cosette's SQL
> parser, I fear) but also would find bugs in Calcite if the transformation is
> not valid. (Not too many, I hope!)
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)