I like the idea. But I have the same worry as Haisheng.

Best,
Chunwei


On Wed, Nov 25, 2020 at 3:07 PM Xin Wang <[email protected]> wrote:

> +1 for this idea. We only use the parser/optimizer part.
>
> JiaTao Tao <[email protected]> 于2020年11月25日周三 下午2:38写道:
>
> > +1 for this idea, I have been developing Calcite for a long time(counting
> > during project Kylin), we all treat calcite as an optimizer, but we need
> to
> > consider overhead.
> >
> > I aggre with Stamatis: "since those dependencies were not causing any
> real
> > trouble."
> >
> >
> > What really troubling me is that when we do some in logical, we may have
> to
> > consider the implemnt, for an example, we used keep "In", not convert to
> > join or "OR", but calcite have no impl about "In".
> >
> >
> > Regards!
> >
> > Aron Tao
> >
> >
> >
> > Haisheng Yuan <[email protected]> 于2020年11月25日周三 下午12:57写道:
> >
> > > > I would like to propose to decouple the "core" module from "ling4j"
> and
> > > Avatica.
> > > I like the idea.
> > >
> > > Moving Enumerable out of core may be time consuming and disruptive,
> > > because many core tests are using Enumerable to verify plan quality and
> > > correctness.
> > >
> > > Best,
> > > Haisheng
> > >
> > > On 2020/11/24 23:42:19, Stamatis Zampetakis <[email protected]> wrote:
> > > > Hi Vladimir,
> > > >
> > > > Personally, I like the idea.
> > > > I had similar thoughts in the past but it didn't try to break it down
> > > since
> > > > those dependencies were not causing any real trouble.
> > > >
> > > > Let's see what the others think.
> > > >
> > > > Best,
> > > > Stamatis
> > > >
> > > >
> > > > On Tue, Nov 24, 2020 at 7:30 PM Vladimir Ozerov <[email protected]>
> > > wrote:
> > > >
> > > > > Hi colleagues,
> > > > >
> > > > > Many Calcite integrations use only part of the framework.
> > > Specifically, it
> > > > > is common to use only the parser/optimizer part. JDBC and runtime
> are
> > > used
> > > > > less frequently because they are not very well suited for mature
> > > processing
> > > > > engines (e.g. Enumerable runs out of memory easily).
> > > > >
> > > > > However, in order to use the parser/optimizer from the core module,
> > you
> > > > > also need to add "linq4j" and Avatica modules to the classpath,
> which
> > > is
> > > > > not convenient - why to include modules, that you do not use?
> > > > >
> > > > > It turns out that most of the dependencies are indeed leaky
> > > abstractions,
> > > > > that could be decoupled easily. For example, the RelOptUtil class
> > from
> > > the
> > > > > "core" depends on ... two string constants from the Avatica module.
> > > > >
> > > > > I would like to propose to decouple the "core" module from "ling4j"
> > and
> > > > > Avatica. For example, we may introduce the new "common" module,
> that
> > > will
> > > > > hold common constants, utility classes, and interfaces (e.g. Meta).
> > > Then,
> > > > > we can organize the dependencies like this:
> > > > > common -> core
> > > > > common -> linq4j
> > > > > common -> Avatica
> > > > >
> > > > > Finally, we may shade and relocate the "common" module into the
> > "core"
> > > > > during the build. In the end, we will have -2 runtime dependencies
> > with
> > > > > relatively little effort. In principle, the same approach could be
> > > applied
> > > > > to Janino and Jackson dependencies, but it could be more complex,
> so
> > my
> > > > > proposal is only about "linq4" and Avatica.
> > > > >
> > > > > How do you feel about it? Does this proposal sense to the
> community?
> > If
> > > > > yes, I can try implementing the POC for this.
> > > > >
> > > > > Regards,
> > > > > Vladimir.
> > > > >
> > > >
> > >
> >
>
>
> --
> Thanks,
> Xin
>

Reply via email to