Re: Using indexes rather than table scans with Calcite

2020-06-01 Thread Haisheng Yuan
Hi Roman, There are some potential advantages. Let's still use this as example. SELECT * FROM foo WHERE a > 100 or b < 1000; Both column a and b have B-Tree indexes, note that it doesn't have to be bitmap index. Bitmap Table Scan on foo -> BitmapOr -> Bitmap Index Scan on

Re: Regarding CALCITE-3997

2020-06-01 Thread Stamatis Zampetakis
Hello, Since I was among the people who raised some concerns about this during the vote I would like to mention that it was mostly about the fact it came very late in the release cycle. It is better to avoid breaking changes in the RC phase since it may be difficult for people to react or test

Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-06-01 Thread Stamatis Zampetakis
I've seen the commit coming through and I do like the approach of keeping the execution logic separate, thanks Julian! Best, Stamatis On Mon, Jun 1, 2020 at 9:02 PM Julian Hyde wrote: > Just to finish this thread... I've now merged 3946. > > I did what Stamatis suggested, and moved the DDL

Re: Using indexes rather than table scans with Calcite

2020-06-01 Thread Julian Hyde
I'm pleased there are a variety of approaches. People should use whichever works for them and their use case. The so-called "rule-based" approach is definitely useful for OLTP-style queries where you are accessing a few rows and you need to plan quickly. Haisheng mentioned bitmap indexes a while

Re: [DISCUSS] DDL parsing, and relationship between "server" and "babel" modules

2020-06-01 Thread Julian Hyde
Just to finish this thread... I've now merged 3946. I did what Stamatis suggested, and moved the DDL classes into core. However, I kept the execution logic (e.g. creating the table when someone sends a SqlCreateTable command) in server. To do this, I created a new interface DdlExecutor, and moved

Re: Using indexes rather than table scans with Calcite

2020-06-01 Thread Roman Kondakov
Hi Xiening, the example was synthetic. What is still not clear for me is how to exploit index sortedness with a rule based approach. As far as I understand with this approach we need to write complex rules (for example [1]) that should decide which index is useful and which is not useful. These

Re: Using indexes rather than table scans with Calcite

2020-06-01 Thread Xiening Dai
Hi Roman, The example you mentioned is an advanced scenario. Note that there are different types of index, such as clustered index, secondary index, covered and non-covered index. In your case, typical OLTP/OLAP optimizer would create an index-based join on top of the range table scan (or

[jira] [Created] (CALCITE-4037) AggregateProjectMergeRule doesn't always respect column aliases

2020-06-01 Thread Sylvain Crozon (Jira)
Sylvain Crozon created CALCITE-4037: --- Summary: AggregateProjectMergeRule doesn't always respect column aliases Key: CALCITE-4037 URL: https://issues.apache.org/jira/browse/CALCITE-4037 Project: