I agree! Being able to turn on and off makes a lot of sense. Since
Cosette's installation is dockerized, running locally would not be a
problem. Let me pull together my code and do a few additional gluing so
that you can run them easily. Then we can start from there. I will put
my code on my fork of Calcite, does that sound good?

Best
Shumo

On Thu, Feb 8, 2018 at 4:37 PM, Michael Mior <mm...@uwaterloo.ca> wrote:

> Shumo,
>
> Thanks for the additional info. I think it would be great to have these
> tests run as part of the Calcite test suite. One question I have is what
> the runtime is like for these tests. Especially since using the web API
> would result in a dependency on a service we (as in the Calcite PMC) don't
> control, I would be inclined to have these tests run separately so they can
> be turned off if needed. Per an earlier comment from Julian (
> https://issues.apache.org/jira/browse/CALCITE-1977) one option would be to
> allow Calcite to generate a script that can be fed to Cosette.
>
> Also, while I'm sure I could reproduce something like the test suite you
> currently have in time, if you have code you could share for your current
> test setup with Cosette and Calcite that would likely be helpful in moving
> this along.
>
> Cheers,
> --
> Michael Mior
> mm...@uwaterloo.ca
>
> 2018-02-08 19:13 GMT-05:00 Shumo Chu <shumo....@gmail.com>:
>
> > Currently, I hijack the test cases and call RelToSqlConverter before and
> > after calcite's rewrite. When I get the query before (Q1) and after
> (Q2), I
> > can then generate Cosette source code, need to add a few things, e.g.
> > schema declarations. This Cosette source code is then sent to our solver
> to
> > get the result of equivalence checking.
> >
> > Now everything is run on my own computer. But Cosette does provide a web
> > service that is running on a UW CSE server and has a web API to call (
> > http://cosette.cs.washington.edu/guide#api). So calcite can either call
> > the
> > web API (the advantage is no need to install any dependencies) or try to
> > run Cosette locally (we have dockerized the installation of Cosette).
> >
> > What do you think?
> >
> > Best
> > Shumo
> >
> > On Thu, Feb 8, 2018 at 3:25 PM, Michael Mior <mm...@uwaterloo.ca> wrote:
> >
> > > Shumo and Alvin,
> > >
> > > That's great to hear (especially the part about the lack of bugs)! That
> > > paper is next on my stack to read. I'd love to work on getting these
> > tests
> > > better integrated with Calcite. It would be really helpful if you could
> > > provide more detail on how you're currently running the tests. Ideally
> if
> > > you could provide a way for me to easily replicate your test
> > > infrastructure, that would probably help give me a better idea on how
> we
> > > can help with the integration.
> > >
> > > Cheers,
> > > --
> > > Michael Mior
> > > mm...@apache.org
> > >
> > > 2018-02-08 17:56 GMT-05:00 Shumo Chu <shumo....@gmail.com>:
> > >
> > > > Hi, Calcite Devs!
> > > >
> > > > We wanted to update you on the current status of using Cosette to
> help
> > > > check the correctness of the Calcite planner rules [
> > > > https://issues.apache.org/jira/browse/CALCITE-1977]:
> > > >
> > > > So far we have used Cosette to check whether Calcite's
> transformations
> > > are
> > > > correct by using the test cases in RelOptRulesTest.java.
> > > >
> > > > For each test case, we use RelToSqlConverter to revert the query plan
> > > > before Calcite's rewrite back to SQL (call it Q1) and similarly for
> the
> > > > query plan after Calcite's rewrite (Q2). We then use Cosette to check
> > > > whether Q1 and Q2 are semantically equivalent.
> > > >
> > > > As Calcite's test cases cover many SQL features, some of them are not
> > > > supported by Cosette yet. Out of the 39 (give number) test cases that
> > use
> > > > SQL features supported by Cosette, Cosette is now able to formally
> > prove
> > > > that Calcite's rewrite in 33 of them are correct. This includes a few
> > > > fairly complicated ones, like "testPushFilterPassAggThree" (
> > > > https://github.com/apache/calcite/blob/master/core/src/test
> > > > /java/org/apache/calcite/test/RelOptRulesTest.java#L408) The good
> news
> > > is
> > > > that we haven't found any bugs so far :)
> > > >
> > > > We have also used the test cases to improve Cosette. For example,
> > Cosette
> > > > now supports checking equivalence under database integrity
> constraints
> > as
> > > > preconditions, e.g., Q1 == Q2 iff R.A is a key of R. In case you are
> > > > interested you can read about our latest system at
> > > > https://arxiv.org/abs/1802.02229
> > > >
> > > > We would like to improve Cosette's parser so that we can handle the
> > > > remaining Calcite test cases. Meanwhile, we would also like to
> discuss
> > > how
> > > > to integrate the two tools in a more systematic way, perhaps as part
> of
> > > the
> > > > Calcite test infrastructure rather than us manually extracting the
> test
> > > > cases from RelOptRulesTest (RelToSqlConverter also doesn't always
> > succeed
> > > > in reversion as you may know). Anyone interested in discussing more?
> If
> > > so
> > > > how should we proceed?
> > > >
> > > > Best
> > > > Shumo & Alvin
> > > >
> > > > On Tue, Oct 17, 2017 at 6:36 PM, Shumo Chu <shumo....@gmail.com>
> > wrote:
> > > >
> > > > > I create a link to the image:
> > > > >
> > > > > https://homes.cs.washington.edu/~chushumo/img/calcite_
> break_down.png
> > > > >
> > > > > In terms of integration, what I can imagine is to call Cosette web
> > API
> > > in
> > > > > parallel when running calcite test cases, like RelOptRulesTest,
> then
> > > > > perhaps Cosette result can give developers either extra confidence
> or
> > > > > counterexample if there is a bug.
> > > > >
> > > > >
> > > > >
> > > > > On Tue, Oct 17, 2017 at 5:49 PM, Michael Mior <mm...@uwaterloo.ca>
> > > > wrote:
> > > > >
> > > > >> Shumo,
> > > > >>
> > > > >> Thanks for the update! Unfortunately I don't believe inline images
> > and
> > > > >> attachments are not supported on ASF mailing lists so if you have
> > > > another
> > > > >> way of sharing that, would be interested to see. Glad to hear the
> > test
> > > > >> cases have been useful to you. Also great to see that Calcite
> seems
> > to
> > > > be
> > > > >> faring well so far :)
> > > > >>
> > > > >> You're right that the conversion of plans to SQL definitely has
> some
> > > > >> missing pieces. If there are any that are particularly problematic
> > in
> > > > your
> > > > >> with Cosette, please let us know. For any bugs you encounter, it
> > would
> > > > be
> > > > >> great if you could file a JIRA so we can work on fixing these (
> > > > >> https://issues.apache.org/jira/projects/CALCITE/issues/).
> > > > >>
> > > > >> --
> > > > >> Michael Mior
> > > > >> mm...@apache.org
> > > > >>
> > > > >> 2017-10-17 20:06 GMT-04:00 Shumo Chu <shumo....@gmail.com>:
> > > > >>
> > > > >> > Hi Michael and Calcite Devs:
> > > > >> >
> > > > >> > That's great!
> > > > >> >
> > > > >> > We also hijacked the test harness of RelOpRule Test and
> generated
> > > SQL
> > > > >> > using before and after optimization logical plans. (The reason
> > that
> > > I
> > > > >> use
> > > > >> > query plan rather than the input SQL is that when Calcite
> > generates
> > > > SQLs
> > > > >> > from query plans, it adds the correct table reference of
> > attributes.
> > > > >> > Cosette currently cannot handle unqualified attribute
> references).
> > > We
> > > > >> got
> > > > >> > 232 before and after SQL after some tweaking. You can find the
> SQL
> > > > >> queries
> > > > >> > that we get here: https://github.com/uwdb/Cosett
> > > > >> e/blob/master/examples/c
> > > > >> > alcite/calcite_tests.json.
> > > > >> >
> > > > >> > We then ran all of them using Cosette. Cosette can currently
> > support
> > > > 39
> > > > >> of
> > > > >> > 232 queries. Out of these 39 queries, the results are:
> > > > >> >
> > > > >> > EQ           9
> > > > >> > UNKNOWN     27
> > > > >> > NEQ          3
> > > > >> >
> > > > >> > EQ means our Coq backend found a valid proof for the equivalence
> > of
> > > > the
> > > > >> > two queries.
> > > > >> >
> > > > >> > UNKNOWN means our model checker could not find a counterexample
> to
> > > > prove
> > > > >> > that the queries are not equivalent (within a time bound of 3
> > secs).
> > > > You
> > > > >> > can interpret that as "likely equal".
> > > > >> >
> > > > >> > NEQ means our model checker found a counterexample to prove the
> > > > queries
> > > > >> > are not equivalent. These are all the cases that there are some
> > > > >> > preconditions that Calcite understands but we haven't yet put
> into
> > > > >> Cosette.
> > > > >> > For example (testPushSemiJoinPastJoinRuleLeft):
> > > > >> >
> > > > >> >  query q1 `SELECT EMP.ENAME
> > > > >> >                   FROM EMP AS EMP, DEPT AS DEPT, EMP AS EMP0
> > > > >> >                    WHERE EMP.DEPTNO = DEPT.DEPTNO AND
> > > > >> >                                  EMP.EMPNO = EMP0.EMPNO`;
> > > > >> >
> > > > >> > query q2 `SELECT EMP1.ENAME
> > > > >> >                  FROM EMP AS EMP1 INNER JOIN DEPT AS DEPT0
> > > > >> >                     ON EMP1.DEPTNO = DEPT0.DEPTNO INNER JOIN EMP
> > AS
> > > > EMP2
> > > > >> >                       ON EMP1.EMPNO = EMP2.EMPNO INNER JOIN DEPT
> > AS
> > > > >> DEPT1
> > > > >> >                     ON EMP1.DEPTNO = DEPT1.DEPTNO INNER JOIN EMP
> > AS
> > > > EMP3
> > > > >> >                     ON EMP1.EMPNO = EMP3.EMPNO`;
> > > > >> >
> > > > >> >
> > > > >> > These two queries are equivalent under the precondition that
> EMPNO
> > > is
> > > > >> the
> > > > >> > primary key of EMP, and DEPTNO is the primary key of DEPT, and
> > that
> > > is
> > > > >> > indeed the case!
> > > > >> >
> > > > >> > We are extending Cosette to support preconditions such as
> primary
> > > keys
> > > > >> and
> > > > >> > foreign keys now and we should be able to handle these soon.
> > > > >> >
> > > > >> > For the queries that we cannot handle, here is the break down of
> > the
> > > > >> > issues:
> > > > >> >
> > > > >> > [image: Inline image 1]
> > > > >> >
> > > > >> > We support a large part of group by queries, GROUPBY here means
> > some
> > > > >> > grouping features that we don't support, e.g., group by on
> > arbitrary
> > > > >> > expressions. Although we might not be able to support all of
> these
> > > SQL
> > > > >> > features, we are definitely working on adding more SQL features
> to
> > > > >> Cosette.
> > > > >> >
> > > > >> > With all above, we can try to integrate Cosette as an extra
> layer
> > to
> > > > >> > ensure developer's confidence. Currently, we are working on
> SIGMOD
> > > > >> deadline
> > > > >> > (Nov. 2) but will devote more time into this afterward.
> > > > >> >
> > > > >> > One thing worth mentioning is that we plan to include all these
> > > > calcite
> > > > >> > examples as the regression test for Cosette so that we can make
> > > > Cosette
> > > > >> > more powerful and practical. These queries are great benchmarks
> > for
> > > > >> Cosette
> > > > >> > and are super valuable!
> > > > >> >
> > > > >> > Meanwhile, It would be also great if calcite's logical plan to
> SQL
> > > > >> > converter can be improved. It currently doesn't support all
> > queries
> > > > and
> > > > >> in
> > > > >> > some cases, it actually generates illegal SQL. (happy to submit
> > > > detailed
> > > > >> > bug report if you think that would be helpful).
> > > > >> >
> > > > >> > Best
> > > > >> > Shumo
> > > > >> >
> > > > >> > On Tue, Oct 17, 2017 at 9:43 AM, Michael Mior <
> mm...@uwaterloo.ca
> > >
> > > > >> wrote:
> > > > >> >
> > > > >> >> This took me longer than expected to get around to, but
> hopefully
> > > the
> > > > >> >> below
> > > > >> >> is helpful:
> > > > >> >>
> > > > >> >> https://gist.github.com/fd2d2db412c11ec4d901925548f85ef2
> > > > >> >>
> > > > >> >> I just did some basic (and very hacky) instrumentation of
> > > > >> RelOptRulesTest
> > > > >> >> to dump SQL before and after rules have been applied. The file
> > > > >> consists of
> > > > >> >> the name of the test followed by the original and then the
> > > rewritten
> > > > >> SQL.
> > > > >> >>
> > > > >> >> Many of the tests are missing for various reasons, but there's
> > > still
> > > > >> 189
> > > > >> >> examples there to play with. Let me know if any particular
> > aspects
> > > of
> > > > >> the
> > > > >> >> SQL are problematic. The "before" SQL is handwritten for the
> > tests
> > > > and
> > > > >> the
> > > > >> >> "after" is ANSI SQL as generated by Calcite from the resulting
> > > > logical
> > > > >> >> plan.
> > > > >> >>
> > > > >> >> --
> > > > >> >> Michael Mior
> > > > >> >> mm...@apache.org
> > > > >> >>
> > > > >> >> 2017-09-22 1:03 GMT-04:00 Amogh Margoor <amo...@qubole.com>:
> > > > >> >>
> > > > >> >> > >>> There might be applications in materialized views. A
> query
> > Q
> > > > can
> > > > >> >> use a
> > > > >> >> > materialized view V if V covers Q. In other words if >>>Q ==
> > R(V)
> > > > >> where
> > > > >> >> R
> > > > >> >> > is some sequence of relational operators. Given Q and V,
> > Cosette
> > > > >> could
> > > > >> >> > perhaps analyze and either >>>return R (success) or return
> > that V
> > > > >> does
> > > > >> >> not
> > > > >> >> > cover Q (failure).
> > > > >> >> >
> > > > >> >> > >>This resembles the problem of deciding whether a given
> > relation
> > > > >> >> > (expressed as a query) is contained in another one. It will
> > > >>take
> > > > >> some
> > > > >> >> > work for Cosette to be able to handle this but it definitely
> > > sounds
> > > > >> >> > interesting. Do you have an application in mind? >>One of
> them
> > > > might
> > > > >> be
> > > > >> >> to
> > > > >> >> > determine whether previously cached results can be used.
> > > > >> >> >
> > > > >> >> > One simple idea to start here is to replace a naive solver we
> > > have
> > > > in
> > > > >> >> > Calcite for checking if one predicate implies another
> > predicate.
> > > We
> > > > >> >> call it
> > > > >> >> > RexImplicationChecker in Calcite and if we can replace or
> help
> > it
> > > > >> with
> > > > >> >> > Constraint solver of Cosette which says if a particular
> > > implication
> > > > >> is a
> > > > >> >> > tautology then that would help a great deal.
> > > > >> >> >
> > > > >> >> >
> > > > >> >> >
> > > > >> >> > On Tue, Sep 19, 2017 at 9:29 PM, Alvin Cheung <
> > > > >> >> akche...@cs.washington.edu>
> > > > >> >> > wrote:
> > > > >> >> >
> > > > >> >> > > Hi Julian et al,
> > > > >> >> > >
> > > > >> >> > > Thanks for your interest in Cosette. Your suggestions make
> a
> > > lot
> > > > of
> > > > >> >> > sense.
> > > > >> >> > > We have done some initial work and would like to get your
> > > > feedback
> > > > >> on
> > > > >> >> how
> > > > >> >> > > to integrate the two tools together.
> > > > >> >> > >
> > > > >> >> > > > One obvious idea is to use Cosette to audit Calcite’s
> query
> > > > >> >> > > transformation rules. Each rule is supposed to preserve
> > > semantics
> > > > >> but
> > > > >> >> > > (until Cosette) we had to trust the author of the rule. We
> > > could
> > > > >> >> convert
> > > > >> >> > > the before and after relational expressions to SQL, and
> then
> > > ask
> > > > >> >> Cosette
> > > > >> >> > > whether those are equivalent. We could enable this check in
> > > > >> Calcite’s
> > > > >> >> > test
> > > > >> >> > > suite, during which many thousands of rules are fired.
> > > > >> >> > >
> > > > >> >> > > Indeed. We have browsed through the Calcite rules and
> > > > reformulated
> > > > >> a
> > > > >> >> few
> > > > >> >> > > of them using our Cosette language:
> > > > >> >> > >
> > > > >> >> > > 1. Conjunctive select (https://github.com/apache/cal
> > > > >> >> > > cite/blob/master/core/src/main/java/org/apache/calcite/
> rel/
> > > > >> >> > > rules/FilterMergeRule.java) -->
> > https://demo.cosette.cs.washin
> > > > >> >> gton.edu/
> > > > >> >> > > (click conjunctive select from the dropdown menu)
> > > > >> >> > >
> > > > >> >> > > 2. Join commute (https://github.com/apache/cal
> > > > >> >> > > cite/blob/master/core/src/main/java/org/apache/calcite/
> rel/
> > > > >> >> > > rules/JoinCommuteRule.java) --> Join commute from the demo
> > > > website
> > > > >> >> above
> > > > >> >> > >
> > > > >> >> > > 3. Join/Project transpose (https://github.com/apache/cal
> > > > >> >> > > cite/blob/master/core/src/main/java/org/apache/calcite/
> rel/
> > > > >> >> > > rules/JoinProjectTransposeRule.java) --> Join Proj. Trans.
> > > from
> > > > >> the
> > > > >> >> demo
> > > > >> >> > > website above
> > > > >> >> > >
> > > > >> >> > > As we are not very familiar with the Calcite code base, we
> > have
> > > > >> tried
> > > > >> >> our
> > > > >> >> > > best to guess the intention of each rule based on the
> > > > >> documentation,
> > > > >> >> > please
> > > > >> >> > > feel free to point out if we made mistakes.
> > > > >> >> > >
> > > > >> >> > > As you can see, the Cosette language is pretty much like
> > > standard
> > > > >> SQL,
> > > > >> >> > > except for declarations of schemas and relations. You will
> > also
> > > > >> notice
> > > > >> >> > the
> > > > >> >> > > "??" in some schema declarations (e.g., in rule 1. above)
> ---
> > > > they
> > > > >> >> stand
> > > > >> >> > > for "symbolic" attributes that can represent any attribute.
> > In
> > > > >> other
> > > > >> >> > words,
> > > > >> >> > > if Cosette can prove that a rule with symbolic attributes
> is
> > > > true,
> > > > >> >> then
> > > > >> >> > it
> > > > >> >> > > will be true regardless of what the symbolic attributes are
> > > > >> >> instantiated
> > > > >> >> > > with. Symbolic predicates (e.g., in rule 1.) works
> similarly,
> > > > hence
> > > > >> >> > giving
> > > > >> >> > > Cosette a mechanism to prove (or disprove) classes of
> rewrite
> > > > >> rules.
> > > > >> >> See
> > > > >> >> > > our documentation at http://cosette.cs.washington.
> edu/guide
> > > for
> > > > >> >> details.
> > > > >> >> > >
> > > > >> >> > > I believe the challenge here is how we can "reverse
> engineer"
> > > the
> > > > >> >> > > intention of each of the existing rules so that they can be
> > > > >> expressed
> > > > >> >> in
> > > > >> >> > > Cosette. Any suggestions on how to do this? We have a few
> > > > students
> > > > >> >> > working
> > > > >> >> > > on Cosette and can help, but we will probably need help
> from
> > > > >> Calcite
> > > > >> >> to
> > > > >> >> > > fully understand all of the existing rules. Another
> > possibility
> > > > is
> > > > >> to
> > > > >> >> > print
> > > > >> >> > > out the input and output of each rule application during
> > > testing,
> > > > >> and
> > > > >> >> > send
> > > > >> >> > > them to Cosette. If the printout is in a form that
> resembles
> > > SQL
> > > > we
> > > > >> >> can
> > > > >> >> > > probably patch it into Cosette.
> > > > >> >> > >
> > > > >> >> > > For new rules, can we can ask Calcite authors to express
> them
> > > in
> > > > >> >> Cosette
> > > > >> >> > > as well, perhaps as part of the documentation? This way we
> > will
> > > > >> only
> > > > >> >> need
> > > > >> >> > > to handle the existing rules.
> > > > >> >> > >
> > > > >> >> > > > A few rules might use other information besides the input
> > > > >> relational
> > > > >> >> > > expression, such as predicates that are known to hold or
> > column
> > > > >> >> > > combinations that are known to be unique. But let’s see
> what
> > > > >> happens.
> > > > >> >> > >
> > > > >> >> > > This is something that we are actively working on. Can you
> > > point
> > > > >> us to
> > > > >> >> > > specific rules with such properties? One possibility is the
> > > join
> > > > >> >> > > commutativity rule noted above. You will notice that we
> > didn't
> > > > >> prove
> > > > >> >> the
> > > > >> >> > > "general form" of the rule with symbolic attributes, but
> > rather
> > > > one
> > > > >> >> with
> > > > >> >> > > concrete schemas. This is because Cosette currently
> > implements
> > > > the
> > > > >> >> > unnamed
> > > > >> >> > > approach to attribute naming (see Section 3.2 in
> > > > >> >> > > http://webdam.inria.fr/Alice/pdfs/Chapter-3.pdf), hence
> the
> > > > >> general
> > > > >> >> form
> > > > >> >> > > of the rule is only true if we know that the two input
> > schemas
> > > > have
> > > > >> >> > > distinct attributes.
> > > > >> >> > >
> > > > >> >> > > > This is a very loose integration of Cosette / Calcite,
> but
> > we
> > > > can
> > > > >> >> make
> > > > >> >> > > closer integrations (e.g. within the same JVM, even at
> > runtime)
> > > > as
> > > > >> we
> > > > >> >> > > discover synergies. After all, optimization and
> > theorem-proving
> > > > are
> > > > >> >> > related
> > > > >> >> > > endeavors.
> > > > >> >> > >
> > > > >> >> > > Agreed. Cosette is implemented using Coq and Racket. We
> > realize
> > > > >> that
> > > > >> >> > those
> > > > >> >> > > are not the most popular languages for implementing systems
> > :)
> > > ,
> > > > so
> > > > >> >> > Cosette
> > > > >> >> > > comes with a POST API as well:
> http://cosette.cs.washington.
> > > > >> >> > edu/guide#api
> > > > >> >> > > . It takes in the program text written in Cosette, and
> > returns
> > > > the
> > > > >> >> answer
> > > > >> >> > > (or times out). Does this make it easier to run the tool?
> We
> > > are
> > > > >> open
> > > > >> >> to
> > > > >> >> > > implementing other bindings as well.
> > > > >> >> > >
> > > > >> >> > > > Another area that would be useful would be to devise test
> > > data.
> > > > >> >> > >
> > > > >> >> > > How about this: Each SQL implementation has its own
> > > > interpretation
> > > > >> of
> > > > >> >> > SQL,
> > > > >> >> > > with Cosette being one of them. Let's implement different
> SQL
> > > > >> >> semantics
> > > > >> >> > > using Cosette (say, Calcite's and Postgres'). Then, given a
> > > > query,
> > > > >> ask
> > > > >> >> > > Cosette to find a counterexample (i.e., an input relation)
> > > where
> > > > >> the
> > > > >> >> two
> > > > >> >> > > implementations will return different results when executed
> > on
> > > a
> > > > >> given
> > > > >> >> > > query. If such a counterexample exists, then Calcite
> > developers
> > > > can
> > > > >> >> > > determine whether this is a "bug" or a "feature". Does this
> > > sound
> > > > >> >> similar
> > > > >> >> > > to what you have in mind?
> > > > >> >> > >
> > > > >> >> > > > There might be applications in materialized views. A
> query
> > Q
> > > > can
> > > > >> >> use a
> > > > >> >> > > materialized view V if V covers Q. In other words if Q ==
> > R(V)
> > > > >> where
> > > > >> >> R is
> > > > >> >> > > some sequence of relational operators. Given Q and V,
> Cosette
> > > > could
> > > > >> >> > perhaps
> > > > >> >> > > analyze and either return R (success) or return that V does
> > not
> > > > >> cover
> > > > >> >> Q
> > > > >> >> > > (failure).
> > > > >> >> > >
> > > > >> >> > > This resembles the problem of deciding whether a given
> > relation
> > > > >> >> > (expressed
> > > > >> >> > > as a query) is contained in another one. It will take some
> > work
> > > > for
> > > > >> >> > Cosette
> > > > >> >> > > to be able to handle this but it definitely sounds
> > interesting.
> > > > Do
> > > > >> you
> > > > >> >> > have
> > > > >> >> > > an application in mind? One of them might be to determine
> > > whether
> > > > >> >> > > previously cached results can be used.
> > > > >> >> > >
> > > > >> >> > > We definitely see lots of synergies between the two tools.
> To
> > > > start
> > > > >> >> with
> > > > >> >> > > something easy :) , I propose we first discuss how to use
> the
> > > > >> current
> > > > >> >> > > Cosette implementation to audit existing Calcite rules,
> and a
> > > way
> > > > >> to
> > > > >> >> > > integrate Cosette into development of future Calcite rules
> as
> > > > part
> > > > >> of
> > > > >> >> > code
> > > > >> >> > > review / regression tests. What do you think?
> > > > >> >> > >
> > > > >> >> > > Thanks,
> > > > >> >> > > Alvin (on behalf of the Cosette team)
> > > > >> >> > >
> > > > >> >> >
> > > > >> >>
> > > > >> >
> > > > >> >
> > > > >> >
> > > > >> > --
> > > > >> > shumochu.com
> > > > >> >
> > > > >>
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > > shumochu.com
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > shumochu.com
> > > >
> > >
> >
> >
> >
> > --
> > shumochu.com
> >
>



-- 
shumochu.com

Reply via email to