Hi Julian,

That would be excellent. It would help simplify the development quite a
bit, and reduce repetition too. Do you already have any ideas on how to do
it?

Nicola


Il mar 25 gen 2022, 20:33 Julian Hyde <jhyde.apa...@gmail.com> ha scritto:

> This reminds me that there’s an opportunity to make it easier to write
> adapters. There is a continuum of backends for adapters, from simple (such
> as CSV, which supports project and maybe filter) to powerful (such as
> Elasticsearch, which supports full relational algebra and then some). I am
> thinking about the latter case.
>
> Let’s suppose we are writing an adapter for a database Foo which is
> approximately as powerful as SQL. Typically we write such adapters by
> creating a Foo convention, then a FooToEnumerableConverter, and then write
> rules to push each relational operator down through the membrane.
>
> (Elasticsearch, Cassandra and Druid are all in this category, and all use
> the basic ‘membrane’ principle, but it is worrying that their adapters are
> so dissimilar.)
>
> If Foo has ten relational operators, you need to write ten RelNode classes
> and ten rules. That is a considerable amount of code, which ends up looking
> like boilerplate. I wonder whether we can remove the need to create those
> Foo-specific classes and rules.  Could people just write a FooQuery
> relational expression that had a sequence of lightweight relational
> operations inside it?
>
> Note that in MutableRel we have lightweight equivalents to RelNodes, for
> example MutableProject [1], and they could be repurposed.
>
> The adapter would still have some hard work to do: translating RexNode to
> their expression language (splitting or rejecting expressions that they
> can’t handle), figuring out which sequences of relational operations are
> valid, and translating the FooQuery. But if we reduce the boilerplate, the
> adapter author can focus on the hard parts.
>
> Julian
>
> [1]
> https://github.com/apache/calcite/blob/4bc916619fd286b2c0cc4d5c653c96a68801d74e/core/src/main/java/org/apache/calcite/rel/mutable/MutableProject.java#L34
>
> > On Jan 23, 2022, at 12:28 PM, Stamatis Zampetakis <zabe...@gmail.com>
> wrote:
> >
> > To the best of my knowledge there is no document getting into details
> about
> > the Queryable interface etc. The best way to approach this as Gavin
> > mentioned is to see how it is used in the project and outside of it.
> >
> > One thing that I wanted to mention is that you can build a system using
> > Calcite without using these interfaces at all. If you consider for
> instance
> > the druid module in Calcite I think it doesn't rely on Queryable at all.
> >
> > Best,
> > Stamatis
> >
> >
> > On Wed, Jan 19, 2022 at 4:00 PM Gavin Ray <ray.gavi...@gmail.com> wrote:
> >
> >> My apologies, I didn't realize that the updated search wasn't public now
> >> (it opened for me a few days ago)
> >>
> >> Regular GH links:
> >> https://github.com/search?q=rawqueryable+language%3AJava&type=code
> >>
> >> Searching "CalciteConnection" across all repos, but removing
> >> "apache/calcite" from the results:
> >>
> >>
> https://github.com/search?q=CalciteConnection+-repo%3Aapache%2Fcalcite&type=code
> >>
> >>
> >>
> >> On Tue, Jan 18, 2022 at 12:17 PM M Singh <mans2si...@yahoo.com.invalid>
> >> wrote:
> >>
> >>> Thanks Gavin for your pointers.  I am in the waiting list for the
> search
> >>> tool you mentioned.  I will continue to search on google in the
> >> meanwhile.
> >>> Mans
> >>>
> >>>
> >>>    On Tuesday, January 18, 2022, 08:44:31 AM EST, Gavin Ray <
> >>> ray.gavi...@gmail.com> wrote:
> >>>
> >>> Not to be dismissive, but one thing I've done that has been helpful for
> >>> me,
> >>> is to search all public repos for usage/examples of the thing I am
> trying
> >>> to understand.
> >>> For example, this "RawQueryable" does not appear to be utilized in any
> >>> user-facing code on Github, so it may not be useful for you:
> >>>
> >>>
> >>
> https://cs.github.com/?q=rawqueryable%20language%3AJava&scopeName=All%20repos&scope=
> >>>
> >>> However, take something like "CalciteConnection" or "RelNode", try to
> >>> remove the Calcite repo itself, and you'll get a lot of hits and usage
> >>> examples:
> >>>
> >>>
> >>
> https://cs.github.com/?scopeName=All+repos&scope=&q=CalciteConnection+%28NOT+path%3A%22calcite%2F%22%29
> >>>
> >>> (I find that searching Scala repos usually gives more relevant results,
> >> due
> >>> to lots of Java results being duplicates)
> >>>
> >>> This isn't nearly as good as getting a direct answer, but sometimes you
> >>> might be able to find what you're looking for
> >>>
> >>>
> >>>
> >>>
> >>> On Tue, Jan 18, 2022 at 5:39 AM M Singh <mans2si...@yahoo.com.invalid>
> >>> wrote:
> >>>
> >>>> Hey Folks:
> >>>> Just wanted to see if you have any pointers to help me understand the
> >>>> queryable concepts.
> >>>> Thanks
> >>>>   On Friday, January 14, 2022, 09:09:06 AM EST, M Singh
> >>>> <mans2si...@yahoo.com.invalid> wrote:
> >>>>
> >>>> Hi Folks:
> >>>> A few newbie questions -
> >>>> 1. I wanted to find out what are the benefits of a queryable table (
> >>>>
> >>>
> >>
> https://calcite.apache.org/javadocAggregate/org/apache/calcite/schema/QueryableTable.html
> >> )
> >>> and
> >>>> what are the pros and cons of using it.
> >>>> 2. What is the role of Querable interface (
> >>>>
> >>>
> >>
> https://calcite.apache.org/javadocAggregate/org/apache/calcite/linq4j/Queryable.html
> >>> )
> >>>> ?3. There is a getExpression methods in queryabletable (
> >>>>
> >>>
> >>
> https://calcite.apache.org/javadocAggregate/org/apache/calcite/linq4j/tree/Expression.html
> >>> ),
> >>>> and I wanted to find out if it is required and what are the pros/cons
> >> of
> >>>> implementing it.
> >>>> 4. What role does RawQueralbe play ? (
> >>>>
> >>>
> >>
> https://calcite.apache.org/javadocAggregate/org/apache/calcite/linq4j/RawQueryable.html
> >>> ).
> >>>> It has a method  getProvider method that returns QueryProvider.  What
> >>> roles
> >>>> does query provider play ?5. What role does ExtendedQuerable play ?
> >>>> Please let me know if there are any basic
> >>>> examples/blogs/documentation/etc.
> >>>> Thanks for your help.
> >>>> Mans
> >>>
> >>
>
>

Reply via email to