Thank you all very much!

You gave me good ideas and pointers!
I hope I will find my way for indexes...

I will be back with news

Enrico

On mar 26 set 2017, 19:50 Julian Hyde <[email protected]> wrote:

> On the subject of indexes. There are a couple of threads on this list
> about how to represent indexes as materialized views (sorted projections)
> so that the planner can consider using them. Phoenix has used this
> technique. I think you could find them if you search.
>
> Julian
>
>
> > On Sep 26, 2017, at 9:38 AM, Michael Mior <[email protected]> wrote:
> >
> > Yes, using Planner does abstract away some of the details for you which
> > could be a good way to get started. The code snippet you posted would be
> a
> > good start. core/src/test/java/org/apache/calcite/tools/PlannerTest.java
> > has a lot of examples of the use of the planner interface. If you're
> > looking for a more comprehensive example, Apache Hive uses Calcite's
> > optimizer.
> >
> > The other things you mentioned should all be possible with Calcite and
> > possible to add incrementally.
> >
> > --
> > Michael Mior
> > [email protected]
> >
> > 2017-09-26 11:35 GMT-04:00 Enrico Olivelli <[email protected]>:
> >
> >> Thank you for your Quick response Michael.
> >> I will try to follow your suggestions
> >> I will be back soon with my results
> >>
> >> There is another API Frameworks.getPlanner() which does something
> similar
> >> Planner planner = Frameworks.getPlanner(config);
> >> SqlNode parsed = planner.parse("SELECT * FROM MYTABLE");
> >> RelRoot rel = planner.rel(parsed);
> >>
> >>
> >> I will have to deal with:
> >> - schema changes
> >> - caching plans
> >> - multiple schemas
> >> - indexes/costs based planer
> >>
> >> Do you (or any one else) have some links to test cases or other usages
> of
> >> Calcite as planner ?
> >>
> >> Cheers
> >> -- Enrico
> >>
> >>
> >>
> >> 2017-09-26 17:27 GMT+02:00 Michael Mior <[email protected]>:
> >>
> >>> That's definitely possible and is definitely the kind of use case
> Calcite
> >>> is designed for. In terms of Calcite APIs, the approach would be
> >> something
> >>> like the following:
> >>>
> >>> Use SqlParser to get a SqlNode representing the query
> >>> Implement CatalogReader to provide access to the schema
> >>> Convert the SqlNode to a RelNode (relational algebra expression) using
> >>> SqlToRelConverter
> >>> Construct a RelOptPlanner instance and set the root of your planner to
> >> the
> >>> RelNode from your query
> >>> Call findBestExp on the planner and then walk the generated expression
> >> tree
> >>> to generate a HerdDB plan
> >>>
> >>> This can hopefully get you pointed in the right direction. Personally,
> >> I'm
> >>> not sure how you would best incorporate the use of indexes, but I'm
> sure
> >>> someone else will be able to chime in.
> >>>
> >>> Cheers,
> >>> --
> >>> Michael Mior
> >>> [email protected]
> >>>
> >>> 2017-09-26 10:36 GMT-04:00 Enrico Olivelli <[email protected]>:
> >>>
> >>>> Hi,
> >>>> I would like to use Calcite as SQLPlanner in my open source project
> >>> HerdDB
> >>>> https://github.com/diennea/herddb
> >>>>
> >>>> HerdDB is a distributed database built in Java, it is essentially a
> >>>> distributed key-value store but is has an SQL layer which is the
> >>> entrypoint
> >>>> for JDBC clients.
> >>>>
> >>>> Currently we have a very simple SQLPlanner, that is a component which
> >>> maps
> >>>> SQL language to an internal AST which represents the access plan to
> >> data.
> >>>>
> >>>> I heard about Calcite and as far as I can see it would be easy to
> >>> integrate
> >>>> Calcite as SQL Planner.
> >>>>
> >>>>
> >>>> I am expecting to have something like this:
> >>>> 1) Give to Calcite an SQL query  + Current schema + available
> >> indexes....
> >>>> 2) Calcite which creates a access plan using Calcite AST
> >>>> 3) Convert Calcite AST to HerdDB access plan AST
> >>>>
> >>>> I am not looking at something on the client-side I would like to use
> >>>> Calcite on the server
> >>>> is is possible ?
> >>>>
> >>>> Thank you in advance
> >>>>
> >>>> Enrico Olivelli
> >>>> [email protected]
> >>>>
> >>>
> >>
>
> --


-- Enrico Olivelli

Reply via email to