You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by M Singh <ma...@yahoo.com.INVALID> on 2022/01/14 14:08:55 UTC

Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

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

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by Gavin Ray <ra...@gmail.com>.
Julian, sounds very interesting!

> " 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?"

What might something like this look like, out of curiosity?

On Wed, Jan 26, 2022 at 3:28 AM Nicola Vitucci <ni...@gmail.com>
wrote:

> 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 <jh...@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 <za...@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 <ra...@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 <mans2singh@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.gavin97@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 <mans2singh@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
> > >>>> <ma...@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
> > >>>
> > >>
> >
> >
>

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by Nicola Vitucci <ni...@gmail.com>.
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 <jh...@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 <za...@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 <ra...@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 <ma...@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.gavin97@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 <ma...@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
> >>>> <ma...@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
> >>>
> >>
>
>

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by Julian Hyde <jh...@gmail.com>.
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 <za...@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 <ra...@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 <ma...@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.gavin97@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 <ma...@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
>>>> <ma...@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
>>> 
>> 


Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by Stamatis Zampetakis <za...@gmail.com>.
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 <ra...@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 <ma...@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.gavin97@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 <ma...@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
> > > <ma...@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
> >
>

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by Gavin Ray <ra...@gmail.com>.
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 <ma...@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.gavin97@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 <ma...@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
> > <ma...@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
>

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by M Singh <ma...@yahoo.com.INVALID>.
 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 <ra...@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 <ma...@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
> <ma...@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
  

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by Gavin Ray <ra...@gmail.com>.
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 <ma...@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
> <ma...@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

Re: Apache Calcite - Usage of Querable table/Querable/RawQueryable/etc interfaces

Posted by M Singh <ma...@yahoo.com.INVALID>.
 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 <ma...@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