Re: Extend parser.jj in calcite, to support the operator '<=>'

2022-01-07 Thread Gunnar Morling
> We’d want to support it in Babel but not the core parser.

I've come across that differentiation a few times when reading
earlier e-mails. Is there any resource explaining the difference between
these two parsers, what they are used for, and which sort of change should
be done in which?

Thanks a lot,

--Gunnar


Am Fr., 7. Jan. 2022 um 20:58 Uhr schrieb Julian Hyde <
jhyde.apa...@gmail.com>:

> It seems analogous to the Postgres-style ‘::’ cast operator. We’d want to
> support it in Babel but not the core parser. Can you log a JIRA case
> analogous to https://issues.apache.org/jira/browse/CALCITE-2843 <
> https://issues.apache.org/jira/browse/CALCITE-2843>.
>
> > On Jan 7, 2022, at 3:06 AM, 徐仁和  wrote:
> >
> > Hi calcite community.
> >
> > In my case, we need calcite's parser support operator '<=>' of mysql.
> >
> > Link:
> >
> https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html#operator_equal-to
> >
> > I debug it, I find I need to modify the Parser.jj in calcite, to define a
> > new token for '<=>'.
> >
> > So, could I expand the Parser.jj of calcite, and support this new
> operator.
> >
> > Best,
> > XuRenhe
>
>


Re: Extend parser.jj in calcite, to support the operator '<=>'

2022-01-07 Thread Julian Hyde
It seems analogous to the Postgres-style ‘::’ cast operator. We’d want to 
support it in Babel but not the core parser. Can you log a JIRA case analogous 
to https://issues.apache.org/jira/browse/CALCITE-2843 
.

> On Jan 7, 2022, at 3:06 AM, 徐仁和  wrote:
> 
> Hi calcite community.
> 
> In my case, we need calcite's parser support operator '<=>' of mysql.
> 
> Link:
> https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html#operator_equal-to
> 
> I debug it, I find I need to modify the Parser.jj in calcite, to define a
> new token for '<=>'.
> 
> So, could I expand the Parser.jj of calcite, and support this new operator.
> 
> Best,
> XuRenhe



Re: [SITE-IMPROVEMENT] Issue need to confirm about the API web

2022-01-07 Thread Julian Hyde
You’re right, those 3 examples don’t look great. They all seem to be caused by 
Jekyll’s code block (back-ticks), e.g. 
https://github.com/apache/calcite/blame/cbda134d8e75a8a5c63a1aa9bcddab6fc6756021/site/_docs/howto.md#L73
 
.

Does anyone who knows a bit more Jekyll or CSS than me (not a very high bar!) 
have any ideas how to make this better? Maybe make the code font one or two 
points smaller? Insert optional line-breaks in long strings?

Julian


> On Jan 7, 2022, at 9:23 AM, Zhe Hu  wrote:
> 
> Hi, I have one small suggestion for the SITE_IMPROVEMENT.
> Recently,when I browse howto.html through Chrome Explorer, I’ve found that 
> some lines are too long, which causes a little bit format disorder(just based 
> on my personal preference). I’ll pick several cases in howto.md below:
> (1) Line 73: However, if your IDE does not generate sources…
> (2) Line 262: `Exception in thread “main”...
> (3) Line 785: “Troubleshooting” character
> 
> 
> Best,
> ZheHu
> 
> 
> 
> 
> On 12/29/2021 06:44,xiong duan wrote:
> After checking the regenerate the Web, I noticed a small problem with the
> Calcite API URI https://calcite.apache.org/javadocAggregate/ . The doc
> title should be "Apache Calcite API", but is "Apache Calcite calcite API".
> Same as Avatica, The doc title should be " Apache Calcite Avatica API", but
> is "Apache Calcite Avatica calcite-avatica API". I think this is a problem.
> Do you think so?



Re: Apache Calcite - Generated code

2022-01-07 Thread Julian Hyde
+1 everything Scott said

But also, if you can use a JDBC PreparedStatement, do so. Calcite will only 
generate the code once, even if you execute multiple times. All of the caches 
in Calcite are unnecessary if you use PreparedStatement in your application. 

> On Jan 7, 2022, at 9:31 AM, Scott Reynolds  wrote:
> 
> I am going to attempt to answer a few of your questions. The Enumberable
> implementation generates java code as a String. There is a Java Property
> caching per unique Java Code String and therefore, when the same Java Code
> is generated the same compiled byte code will be used.
> 
> Where the Property is used
> https://github.com/apache/calcite/blob/9c0e3130e6692d1960a34a680dc13d11083ff1c8/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpretable.java#L159-L166
> 
> The Property definition:
> https://github.com/apache/calcite/blob/a8a6569e6ba75efe9d5725c49338a7f181d3ab5c/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java#L353
> 
> Therefore, if you set calcite.bindable.cache.maxSize Java Property (however
> you chose to do set the Property), you will get a cache of the byte code.
> 
>> requires changing the query and the data at run time
> 
> I am unclear on what this means and let me explain. Calcite takes in a
> Logical Query and will "rewrite it" (better known as optimize it) via
> RelRules (
> https://github.com/apache/calcite/blob/a8a6569e6ba75efe9d5725c49338a7f181d3ab5c/core/src/main/java/org/apache/calcite/plan/RelRule.java#L112).
> Once the query is optimized then Java Code String is generated and then it
> is compiled and cached. This means every query goes through the
> optimization process and so if you want to change how it fetches the data,
> the most straightforward place is in your own RelRule.
> 
> On Fri, Jan 7, 2022 at 9:11 AM M Singh  wrote:
> 
>> Hi:
>> I am working on a project that requires changing the query and the data at
>> run time.  The data to be processed will be stored in memory as a list of
>> strings.  I am using java 8 at the moment.
>> I wanted to understand how the classes are generated in Calcite using
>> janino at run time.
>> Questions:
>> 1. If the query is executed on the same data twice, does it generate the
>> code twice ? If so, are all the classes regenerated or only specific ones
>> ?2. If the query changes are all the classes regenerated ?3. If the process
>> keeps running, will the regenerated classes cause oom ?  If so, is there
>> any way to avoid this. 4. Is there a way to remove the generated classes at
>> runtime ?5. Is there any way in Calcite to avoid generating the classes if
>> the data or query changes while the process is running ?
>> I tried one of the csv example tests at added the following sql line twice
>> (as shown in the snippet below) (
>> https://github.com/apache/calcite/blob/master/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java#L351)
>> and it does appear to generate some classes twice but please feel free to
>> correct me if I am mistaken.
>> 
>>  @Test void testFilterableWhereTwice() throws SQLException {final
>> String sql ="select empno, gender, name from EMPS where name =
>> 'John'";sql("filterable-model", sql).returns("EMPNO=110;
>> GENDER=M; NAME=John").ok();
>>sql("filterable-model", sql).returns("EMPNO=110; GENDER=M;
>> NAME=John").ok();  }
>> 
>> 
>> If there is any documentation, example, or advice, on how code generation
>> works, is there a way to avoid it, please let me know.
>> Thanks



Re: [DISCUSS] Draft board report for Jan 2022

2022-01-07 Thread Julian Hyde
I would add that we are rotating the PMC chair, continuing our annual rotation 
tradition. Thanks for serving, Haisheng.

The statement 'overall the discussion is good for community development and 
health’ is a bromide. Some of the discussions reached consensus, others merely 
reached a conclusion. But one major and long-time committer resigned from the 
project. The best we can say is that we are trying to learn from the situation.

Julian
 

> On Jan 7, 2022, at 9:32 AM, Haisheng Yuan  wrote:
> 
> Attached below is a draft of this month's board report. I plan to submit it
> on Jan 11.
> Please let me know if you have additions or corrections.
> 
> ## Description:
> Apache Calcite is a highly customizable framework for parsing and planning
> queries on data in a wide variety of formats. It allows database-like
> access,
> and in particular a SQL interface and advanced query optimization, for data
> not
> residing in a traditional database.
> 
> Avatica is a sub-project within Calcite and provides a framework for
> building
> local and remote JDBC and ODBC database drivers. Avatica has an independent
> release schedule and its own repository.
> 
> ## Issues:
> There are no issues requiring board attention.
> 
> ## Membership Data:
> Apache Calcite was founded 2015-10-21 (6 years ago)
> There are currently 56 committers and 23 PMC members in this project.
> The Committer-to-PMC ratio is roughly 7:3.
> 
> Community changes, past quarter:
> - No new PMC members. Last addition was Ruben Q L on 2020-08-09.
> - Alessandro Solimando was added as committer on 2021-12-17.
> - Xiong Duan was added as committer on 2021-10-18.
> 
> ## Project Activity:
> Calcite 1.28.0 was released on 2021-10-19, with new features including
> the UNIQUE sub-query predicate, the MODE aggregate function,
> PERCENTILE_CONT and PERCENTILE_DISC inverse distribution functions,
> an Exasol dialect for the JDBC adapter, and improvements to
> materialized view recognition.
> 
> Calcite 1.29.0 was released on 2021-12-26, which upgrades log4j2 to
> 2.17.0 to fix security vulnerabilities.
> 
> Calcite Avatica 1.19.0 was released on 2021-10-11, which adds support
> for BIT and NULL data types, fixes issues with values of type ARRAY.
> 
> Calcite Avatica 1.20.0 was released on 2021-12-13, which upgrades Log4j2 to
> version 2.15.0 (to address CVE-2021-44228), and makes the SPNEGO
> protocol much more efficient.
> 
> ## Community Health:
> The overall activity in the community has increased slightly in the past
> few months, specifically 20% more commits, 8% more closed PRs on GitHub.
> 
> There are some discussions about the proposal of changing workflow, e.g.
> github issues vs JIRAs, merging Avatica with Calcite, people argued with
> different opinions, but overall the discussion is good for community
> development and health.
> 
> The number of non-committer (contributor) commits per month:
> +-+-+-+
> |year |month| contributor_commits |
> +-+-+-+
> | 2021| 10  | 14  |
> | 2021| 11  | 2   |
> | 2021| 12  | 8   |
> +-+-+-+
> 
> The number of active reviewers per month:
> +-+-+-+
> |year |month|  active_reviewers   |
> +-+-+-+
> | 2021| 10  | 7   |
> | 2021| 11  | 2   |
> | 2021| 12  | 5   |
> +-+-+-+
> 
> Top reviewers in the last 3 months:
> +---+-+
> | committer |   reviews   |
> +---+-+
> | Julian Hyde  | 7   |
> | Stamatis Zampetakis  | 4   |
> | NobiGo  | 3   |
> | Jesus Camacho Rodriguez  | 3   |
> | rubenada  | 2   |
> | chunwei <37774589+chunwei...@users.noreply.github.com> | 1
>|
> | Haisheng Yuan  | 1   |
> | chunwei.lcw  | 1   |
> | Wang Yanlin <1989yanlinw...@163.com> | 1   |
> | Jacques Nadeau  | 1   |
> +---+-+
> 
> Thanks,
> Haisheng Yuan



[DISCUSS] Draft board report for Jan 2022

2022-01-07 Thread Haisheng Yuan
Attached below is a draft of this month's board report. I plan to submit it
on Jan 11.
Please let me know if you have additions or corrections.

## Description:
Apache Calcite is a highly customizable framework for parsing and planning
queries on data in a wide variety of formats. It allows database-like
access,
and in particular a SQL interface and advanced query optimization, for data
not
residing in a traditional database.

Avatica is a sub-project within Calcite and provides a framework for
building
local and remote JDBC and ODBC database drivers. Avatica has an independent
release schedule and its own repository.

## Issues:
There are no issues requiring board attention.

## Membership Data:
Apache Calcite was founded 2015-10-21 (6 years ago)
There are currently 56 committers and 23 PMC members in this project.
The Committer-to-PMC ratio is roughly 7:3.

Community changes, past quarter:
- No new PMC members. Last addition was Ruben Q L on 2020-08-09.
- Alessandro Solimando was added as committer on 2021-12-17.
- Xiong Duan was added as committer on 2021-10-18.

## Project Activity:
Calcite 1.28.0 was released on 2021-10-19, with new features including
the UNIQUE sub-query predicate, the MODE aggregate function,
PERCENTILE_CONT and PERCENTILE_DISC inverse distribution functions,
an Exasol dialect for the JDBC adapter, and improvements to
materialized view recognition.

Calcite 1.29.0 was released on 2021-12-26, which upgrades log4j2 to
2.17.0 to fix security vulnerabilities.

Calcite Avatica 1.19.0 was released on 2021-10-11, which adds support
for BIT and NULL data types, fixes issues with values of type ARRAY.

Calcite Avatica 1.20.0 was released on 2021-12-13, which upgrades Log4j2 to
version 2.15.0 (to address CVE-2021-44228), and makes the SPNEGO
protocol much more efficient.

## Community Health:
The overall activity in the community has increased slightly in the past
few months, specifically 20% more commits, 8% more closed PRs on GitHub.

There are some discussions about the proposal of changing workflow, e.g.
github issues vs JIRAs, merging Avatica with Calcite, people argued with
different opinions, but overall the discussion is good for community
development and health.

The number of non-committer (contributor) commits per month:
+-+-+-+
|year |month| contributor_commits |
+-+-+-+
| 2021| 10  | 14  |
| 2021| 11  | 2   |
| 2021| 12  | 8   |
+-+-+-+

The number of active reviewers per month:
+-+-+-+
|year |month|  active_reviewers   |
+-+-+-+
| 2021| 10  | 7   |
| 2021| 11  | 2   |
| 2021| 12  | 5   |
+-+-+-+

Top reviewers in the last 3 months:
+---+-+
| committer |   reviews   |
+---+-+
| Julian Hyde  | 7   |
| Stamatis Zampetakis  | 4   |
| NobiGo  | 3   |
| Jesus Camacho Rodriguez  | 3   |
| rubenada  | 2   |
| chunwei <37774589+chunwei...@users.noreply.github.com> | 1
|
| Haisheng Yuan  | 1   |
| chunwei.lcw  | 1   |
| Wang Yanlin <1989yanlinw...@163.com> | 1   |
| Jacques Nadeau  | 1   |
+---+-+

Thanks,
Haisheng Yuan


Re: Apache Calcite - Generated code

2022-01-07 Thread Scott Reynolds
I am going to attempt to answer a few of your questions. The Enumberable
implementation generates java code as a String. There is a Java Property
caching per unique Java Code String and therefore, when the same Java Code
is generated the same compiled byte code will be used.

Where the Property is used
https://github.com/apache/calcite/blob/9c0e3130e6692d1960a34a680dc13d11083ff1c8/core/src/main/java/org/apache/calcite/adapter/enumerable/EnumerableInterpretable.java#L159-L166

The Property definition:
https://github.com/apache/calcite/blob/a8a6569e6ba75efe9d5725c49338a7f181d3ab5c/core/src/main/java/org/apache/calcite/config/CalciteSystemProperty.java#L353

Therefore, if you set calcite.bindable.cache.maxSize Java Property (however
you chose to do set the Property), you will get a cache of the byte code.

>requires changing the query and the data at run time

I am unclear on what this means and let me explain. Calcite takes in a
Logical Query and will "rewrite it" (better known as optimize it) via
RelRules (
https://github.com/apache/calcite/blob/a8a6569e6ba75efe9d5725c49338a7f181d3ab5c/core/src/main/java/org/apache/calcite/plan/RelRule.java#L112).
Once the query is optimized then Java Code String is generated and then it
is compiled and cached. This means every query goes through the
optimization process and so if you want to change how it fetches the data,
the most straightforward place is in your own RelRule.

On Fri, Jan 7, 2022 at 9:11 AM M Singh  wrote:

> Hi:
> I am working on a project that requires changing the query and the data at
> run time.  The data to be processed will be stored in memory as a list of
> strings.  I am using java 8 at the moment.
> I wanted to understand how the classes are generated in Calcite using
> janino at run time.
> Questions:
> 1. If the query is executed on the same data twice, does it generate the
> code twice ? If so, are all the classes regenerated or only specific ones
> ?2. If the query changes are all the classes regenerated ?3. If the process
> keeps running, will the regenerated classes cause oom ?  If so, is there
> any way to avoid this. 4. Is there a way to remove the generated classes at
> runtime ?5. Is there any way in Calcite to avoid generating the classes if
> the data or query changes while the process is running ?
> I tried one of the csv example tests at added the following sql line twice
> (as shown in the snippet below) (
> https://github.com/apache/calcite/blob/master/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java#L351)
> and it does appear to generate some classes twice but please feel free to
> correct me if I am mistaken.
> 
>   @Test void testFilterableWhereTwice() throws SQLException {final
> String sql ="select empno, gender, name from EMPS where name =
> 'John'";sql("filterable-model", sql).returns("EMPNO=110;
> GENDER=M; NAME=John").ok();
> sql("filterable-model", sql).returns("EMPNO=110; GENDER=M;
> NAME=John").ok();  }
> 
>
> If there is any documentation, example, or advice, on how code generation
> works, is there a way to avoid it, please let me know.
> Thanks


Re:[SITE-IMPROVEMENT] Issue need to confirm about the API web

2022-01-07 Thread Zhe Hu
Hi, I have one small suggestion for the SITE_IMPROVEMENT.
Recently,when I browse howto.html through Chrome Explorer, I’ve found that some 
lines are too long, which causes a little bit format disorder(just based on my 
personal preference). I’ll pick several cases in howto.md below:
(1) Line 73: However, if your IDE does not generate sources…
(2) Line 262: `Exception in thread “main”...
(3) Line 785: “Troubleshooting” character


Best,
ZheHu




On 12/29/2021 06:44,xiong duan wrote:
After checking the regenerate the Web, I noticed a small problem with the
Calcite API URI https://calcite.apache.org/javadocAggregate/ . The doc
title should be "Apache Calcite API", but is "Apache Calcite calcite API".
Same as Avatica, The doc title should be " Apache Calcite Avatica API", but
is "Apache Calcite Avatica calcite-avatica API". I think this is a problem.
Do you think so?


Apache Calcite - Generated code

2022-01-07 Thread M Singh
Hi:
I am working on a project that requires changing the query and the data at run 
time.  The data to be processed will be stored in memory as a list of strings.  
I am using java 8 at the moment.
I wanted to understand how the classes are generated in Calcite using janino at 
run time.  
Questions:
1. If the query is executed on the same data twice, does it generate the code 
twice ? If so, are all the classes regenerated or only specific ones ?2. If the 
query changes are all the classes regenerated ?3. If the process keeps running, 
will the regenerated classes cause oom ?  If so, is there any way to avoid 
this. 4. Is there a way to remove the generated classes at runtime ?5. Is there 
any way in Calcite to avoid generating the classes if the data or query changes 
while the process is running ?
I tried one of the csv example tests at added the following sql line twice (as 
shown in the snippet below) 
(https://github.com/apache/calcite/blob/master/example/csv/src/test/java/org/apache/calcite/test/CsvTest.java#L351)
 and it does appear to generate some classes twice but please feel free to 
correct me if I am mistaken.

  @Test void testFilterableWhereTwice() throws SQLException {    final String 
sql =        "select empno, gender, name from EMPS where name = 'John'";    
sql("filterable-model", sql)        .returns("EMPNO=110; GENDER=M; 
NAME=John").ok();
    sql("filterable-model", sql)        .returns("EMPNO=110; GENDER=M; 
NAME=John").ok();  }


If there is any documentation, example, or advice, on how code generation 
works, is there a way to avoid it, please let me know.
Thanks

Jenkins build is back to normal : Calcite » Calcite-snapshots #43

2022-01-07 Thread Apache Jenkins Server
See 




Build failed in Jenkins: Calcite » Calcite-snapshots #42

2022-01-07 Thread Apache Jenkins Server
See 


Changes:

[Stamatis Zampetakis] Site: Improve HTML tables display & update CSV tutorial

[Stamatis Zampetakis] Site: Add syntax highlighting to SQL statements

[Stamatis Zampetakis] Site: For tables that display results, center the content 
horizontally


--
[...truncated 357.27 KB...]
docker[redis:2.8.19] 2022-01-07 12:01:31,646 
[docker-java-stream--1133810895] INFO  - Pulling image layers:  0 pending,  9 
downloaded,  6 extracted, (45 MB/46 MB)
docker[redis:2.8.19] 2022-01-07 12:01:34,860 
[docker-java-stream--1133810895] INFO  - Pulling image layers:  0 pending,  9 
downloaded,  7 extracted, (46 MB/46 MB)
docker[redis:2.8.19] 2022-01-07 12:01:35,432 
[docker-java-stream--1133810895] INFO  - Pulling image layers:  0 pending,  9 
downloaded,  8 extracted, (46 MB/46 MB)
docker[redis:2.8.19] 2022-01-07 12:01:39,669 
[docker-java-stream--1133810895] INFO  - Pulling image layers:  0 pending,  9 
downloaded,  9 extracted, (46 MB/46 MB)
docker[redis:2.8.19] 2022-01-07 12:01:42,268 
[docker-java-stream--1133810895] INFO  - Pull complete. 9 layers, pulled in 25s 
(downloaded 46 MB at 1 MB/s)
docker[redis:2.8.19] 2022-01-07 12:01:42,310 [ForkJoinPool-1-worker-25] 
INFO  - Creating container for image: redis:2.8.19
docker[redis:2.8.19] 2022-01-07 12:01:44,391 [ForkJoinPool-1-worker-25] 
INFO  - Starting container with ID: 
04e8559ce9f16f62a3589ec37b8b75064b705eb6ae208f56f3a52feef288c5e5

> Task :elasticsearch:test

Gradle Test Executor 19 STANDARD_OUT
2022-01-07 12:01:34,133 [ForkJoinPool-1-worker-26] WARN  - 
gateway.auto_import_dangling_indices is disabled, dangling indices will not be 
automatically detected or imported and must be managed manually

> Task :redis:test
docker[redis:2.8.19] 2022-01-07 12:01:45,747 [ForkJoinPool-1-worker-25] 
INFO  - Container redis:2.8.19 is starting: 
04e8559ce9f16f62a3589ec37b8b75064b705eb6ae208f56f3a52feef288c5e5
docker[redis:2.8.19] 2022-01-07 12:01:45,956 [ForkJoinPool-1-worker-25] 
INFO  - Container redis:2.8.19 started in PT31.07S
  3.4sec, 
org.apache.calcite.adapter.redis.RedisAdapterCaseBase > 
testSqlWithJoin()
 65.0sec,2 completed,   0 failed,   0 skipped, 
org.apache.calcite.adapter.redis.RedisAdapterCaseBase
WARNING  68.1sec,3 completed,   0 failed,   1 
skipped, Gradle Test Run :redis:test

> Task :plus:test
 49.4sec, org.apache.calcite.adapter.tpch.TpchTest 
> testQuery05()

> Task :elasticsearch:test
  3.6sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
integerCat()
  3.6sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
cat1Cat3()
  3.6sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
cat1Cat2Cat3()
  3.6sec, 
org.apache.calcite.adapter.elasticsearch.Projection2Test > 
projection()
  3.7sec, 
org.apache.calcite.adapter.elasticsearch.Projection2Test > 
projection2()
 52.7sec,1 completed,   0 failed,   0 skipped, 
org.apache.calcite.adapter.elasticsearch.MatchTest
  3.8sec, 
org.apache.calcite.adapter.elasticsearch.Projection2Test > 
projection3()
  3.8sec, 
org.apache.calcite.adapter.elasticsearch.Projection2Test > 
simpleProjectionNoScripting()
  3.9sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
aggregationWithCast()
  3.8sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
cat1Cat2()
  4.0sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
cat2()
  4.0sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
anyValue()
  4.2sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
approximateCountDistinct()
  4.2sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
cat1()
  4.3sec, 
org.apache.calcite.adapter.elasticsearch.AggregationTest > 
all()
 53.4sec,1 completed,   0 failed,   0 skipped, 
org.apache.calcite.adapter.elasticsearch.ProjectionTest
  4.5sec, 
org.apache.calcite.adapter.elasticsearch.Projection2Test > 
projectionStringLiteral()
  4.6sec, 
org.apache.calcite.adapter.elasticsearch.Projection2Test > 
projectionStringLiteralAndColumn()
  4.8sec, 

Extend parser.jj in calcite, to support the operator '<=>'

2022-01-07 Thread 徐仁和
Hi calcite community.

In my case, we need calcite's parser support operator '<=>' of mysql.

Link:
https://dev.mysql.com/doc/refman/8.0/en/comparison-operators.html#operator_equal-to

I debug it, I find I need to modify the Parser.jj in calcite, to define a
new token for '<=>'.

So, could I expand the Parser.jj of calcite, and support this new operator.

Best,
XuRenhe