You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by za...@apache.org on 2022/01/07 12:18:58 UTC
[calcite-site] branch master updated: Site: Improve HTML tables display & update CSV tutorial
This is an automated email from the ASF dual-hosted git repository.
zabetak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite-site.git
The following commit(s) were added to refs/heads/master by this push:
new dd01785 Site: Improve HTML tables display & update CSV tutorial
dd01785 is described below
commit dd01785beb41ae77523648fb51c06584891e55db
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Fri Jan 7 13:14:52 2022 +0100
Site: Improve HTML tables display & update CSV tutorial
1. Allow code pre-wrap in tables.
2. Display horizontal scrollbar in tables when content is too large
and cannot be wrapped.
3. Update CSV tutorial example based on current code.
4. For tables that display results, center the content horizontally
5. Add syntax highlighting to SQL statements
The use of nokogiri plugins causes a few additional newlines after
certain tags like <li> but it's not big deal cause it is only gonna
appear in the diff once.
---
community/index.html | 180 ++-
css/screen.css | 8 +
develop/index.html | 23 +-
docs/adapter.html | 85 +-
docs/algebra.html | 302 ++--
docs/api/index.html | 1 +
docs/avatica_json_reference.html | 11 +-
docs/avatica_overview.html | 11 +-
docs/avatica_protobuf_reference.html | 11 +-
docs/avatica_roadmap.html | 11 +-
docs/cassandra_adapter.html | 5 +-
docs/druid_adapter.html | 11 +-
docs/elasticsearch_adapter.html | 5 +-
docs/file_adapter.html | 5 +-
docs/geode_adapter.html | 11 +-
docs/history.html | 1581 +++++++++++++-------
docs/howto.html | 99 +-
docs/index.html | 14 +-
docs/innodb_adapter.html | 5 +-
docs/kafka_adapter.html | 5 +-
docs/lattice.html | 5 +-
docs/materialized_views.html | 252 ++--
docs/model.html | 25 +-
docs/os_adapter.html | 39 +-
docs/pig_adapter.html | 5 +-
docs/powered_by.html | 9 +-
docs/redis_adapter.html | 5 +-
docs/reference.html | 1127 ++++++++------
docs/spatial.html | 34 +-
docs/stream.html | 63 +-
docs/tutorial.html | 62 +-
downloads/index.html | 108 +-
index.html | 2 +-
.../2014/08/19/release-0.9.0-incubating/index.html | 9 +-
.../2014/10/02/release-0.9.1-incubating/index.html | 9 +-
.../2014/11/05/release-0.9.2-incubating/index.html | 9 +-
.../2015/01/31/release-1.0.0-incubating/index.html | 9 +-
.../2015/03/13/release-1.1.0-incubating/index.html | 9 +-
.../2015/04/07/release-1.2.0-incubating/index.html | 9 +-
news/2015/04/24/new-committers/index.html | 9 +-
.../2015/05/30/release-1.3.0-incubating/index.html | 9 +-
news/2015/06/05/algebra-builder/index.html | 9 +-
.../2015/07/31/xldb-best-lightning-talk/index.html | 9 +-
.../2015/09/02/release-1.4.0-incubating/index.html | 9 +-
news/2015/10/22/calcite-graduates/index.html | 11 +-
news/2015/11/08/new-committers/index.html | 9 +-
news/2015/11/10/release-1.5.0/index.html | 9 +-
news/2016/01/22/release-1.6.0/index.html | 9 +-
news/2016/02/17/elser-pmc/index.html | 9 +-
news/2016/02/17/streaming-sql-talk/index.html | 9 +-
news/2016/03/22/cassandra-adapter/index.html | 9 +-
news/2016/03/22/release-1.7.0/index.html | 9 +-
news/2016/06/13/release-1.8.0/index.html | 9 +-
news/2016/09/22/release-1.9.0/index.html | 9 +-
news/2016/10/12/release-1.10.0/index.html | 9 +-
news/2017/01/09/release-1.11.0/index.html | 15 +-
news/2017/03/24/release-1.12.0/index.html | 12 +-
news/2017/03/31/new-avatica-repository/index.html | 9 +-
news/2017/06/26/release-1.13.0/index.html | 9 +-
news/2017/10/02/release-1.14.0/index.html | 9 +-
news/2017/12/11/release-1.15.0/index.html | 9 +-
news/2018/03/19/release-1.16.0/index.html | 9 +-
news/2018/07/20/release-1.17.0/index.html | 12 +-
news/2018/12/21/release-1.18.0/index.html | 9 +-
news/2019/03/25/release-1.19.0/index.html | 9 +-
news/2019/06/24/release-1.20.0/index.html | 9 +-
news/2019/09/11/release-1.21.0/index.html | 9 +-
news/2020/03/05/release-1.22.0/index.html | 12 +-
news/2020/05/23/release-1.23.0/index.html | 9 +-
news/2020/07/23/release-1.24.0/index.html | 18 +-
news/2020/08/22/release-1.25.0/index.html | 12 +-
news/2020/10/06/release-1.26.0/index.html | 9 +-
news/2021/01/11/meetup/index.html | 9 +-
news/2021/06/03/release-1.27.0/index.html | 9 +-
news/2021/10/19/release-1.28.0/index.html | 12 +-
news/2021/12/25/release-1.29.0/index.html | 9 +-
news/index.html | 2 +-
news/releases/index.html | 2 +-
78 files changed, 2831 insertions(+), 1712 deletions(-)
diff --git a/community/index.html b/community/index.html
index 6bec9d2..485da66 100644
--- a/community/index.html
+++ b/community/index.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Community</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -64,7 +65,8 @@
<li><a href="#project-members" id="markdown-toc-project-members">Project Members</a></li>
<li><a href="#mailing-lists" id="markdown-toc-mailing-lists">Mailing Lists</a></li>
<li><a href="#help" id="markdown-toc-help">Help</a></li>
- <li><a href="#talks" id="markdown-toc-talks">Talks</a> <ul>
+ <li>
+<a href="#talks" id="markdown-toc-talks">Talks</a> <ul>
<li><a href="#morel-a-functional-query-language-julian-hyde" id="markdown-toc-morel-a-functional-query-language-julian-hyde">Morel, a functional query language (Julian Hyde)</a></li>
<li><a href="#building-modern-sql-query-optimizers-with-apache-calcite" id="markdown-toc-building-modern-sql-query-optimizers-with-apache-calcite">Building modern SQL query optimizers with Apache Calcite</a></li>
<li><a href="#apache-calcite-tutorial" id="markdown-toc-apache-calcite-tutorial">Apache Calcite Tutorial</a></li>
@@ -91,7 +93,7 @@
<h1 id="project-members">Project Members</h1>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Name (Apache ID)</th>
@@ -103,334 +105,339 @@
<tbody>
<tr>
<td style="text-align: left">Aman Sinha (<a href="https://people.apache.org/phonebook.html?uid=amansinha">amansinha</a>)</td>
- <td style="text-align: left"><a href="https://github.com/amansinha100"><img width="64" src="https://github.com/amansinha100.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/amansinha100"><img width="64" src="https://github.com/amansinha100.png"></a></td>
<td style="text-align: left">MapR</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Andrei Sereda (<a href="https://people.apache.org/phonebook.html?uid=sereda">sereda</a>)</td>
- <td style="text-align: left"><a href="https://github.com/asereda-gs"><img width="64" src="https://github.com/asereda-gs.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/asereda-gs"><img width="64" src="https://github.com/asereda-gs.png"></a></td>
<td style="text-align: left"> </td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Ashutosh Chauhan (<a href="https://people.apache.org/phonebook.html?uid=hashutosh">hashutosh</a>)</td>
- <td style="text-align: left"><a href="https://github.com/ashutoshc"><img width="64" src="https://github.com/ashutoshc.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/ashutoshc"><img width="64" src="https://github.com/ashutoshc.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Chris Baynes (<a href="https://people.apache.org/phonebook.html?uid=cbaynes">cbaynes</a>)</td>
- <td style="text-align: left"><a href="https://github.com/chris-baynes"><img width="64" src="https://github.com/chris-baynes.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/chris-baynes"><img width="64" src="https://github.com/chris-baynes.png"></a></td>
<td style="text-align: left">Contiamo</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Christian Beikov (<a href="https://people.apache.org/phonebook.html?uid=cbeikov">cbeikov</a>)</td>
- <td style="text-align: left"><a href="https://github.com/beikov"><img width="64" src="https://github.com/beikov.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/beikov"><img width="64" src="https://github.com/beikov.png"></a></td>
<td style="text-align: left">Blazebit</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Chunwei Lei (<a href="https://people.apache.org/phonebook.html?uid=chunwei">chunwei</a>)</td>
- <td style="text-align: left"><a href="https://github.com/chunweilei"><img width="64" src="https://github.com/chunweilei.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/chunweilei"><img width="64" src="https://github.com/chunweilei.png"></a></td>
<td style="text-align: left">Alibaba</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Danny Chan (<a href="https://people.apache.org/phonebook.html?uid=danny0405">danny0405</a>)</td>
- <td style="text-align: left"><a href="https://github.com/danny0405"><img width="64" src="https://github.com/danny0405.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/danny0405"><img width="64" src="https://github.com/danny0405.png"></a></td>
<td style="text-align: left">Alibaba</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Edmon Begoli (<a href="https://people.apache.org/phonebook.html?uid=ebegoli">ebegoli</a>)</td>
- <td style="text-align: left"><a href="https://github.com/ebegoli"><img width="64" src="https://github.com/ebegoli.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/ebegoli"><img width="64" src="https://github.com/ebegoli.png"></a></td>
<td style="text-align: left">Oak Ridge National Laboratory</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Feng Zhu (<a href="https://people.apache.org/phonebook.html?uid=fengzhu">fengzhu</a>) he/him</td>
- <td style="text-align: left"><a href="https://github.com/DonnyZone"><img width="64" src="https://github.com/DonnyZone.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/DonnyZone"><img width="64" src="https://github.com/DonnyZone.png"></a></td>
<td style="text-align: left">eBay</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Forward Xu (<a href="https://people.apache.org/phonebook.html?uid=forwardxu">forwardxu</a>)</td>
- <td style="text-align: left"><a href="https://github.com/XuQianJin-Stars"><img width="64" src="https://github.com/XuQianJin-Stars.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/XuQianJin-Stars"><img width="64" src="https://github.com/XuQianJin-Stars.png"></a></td>
<td style="text-align: left">Tencent</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Francis Chuang (<a href="https://people.apache.org/phonebook.html?uid=francischuang">francischuang</a>)</td>
- <td style="text-align: left"><a href="https://github.com/F21"><img width="64" src="https://github.com/F21.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/F21"><img width="64" src="https://github.com/F21.png"></a></td>
<td style="text-align: left">Boostport</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Gian Merlino (<a href="https://people.apache.org/phonebook.html?uid=gian">gian</a>)</td>
- <td style="text-align: left"><a href="https://github.com/gianm"><img width="64" src="https://github.com/gianm.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/gianm"><img width="64" src="https://github.com/gianm.png"></a></td>
<td style="text-align: left">Imply</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Haisheng Yuan (<a href="https://people.apache.org/phonebook.html?uid=hyuan">hyuan</a>)</td>
- <td style="text-align: left"><a href="https://github.com/hsyuan"><img width="64" src="https://github.com/hsyuan.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/hsyuan"><img width="64" src="https://github.com/hsyuan.png"></a></td>
<td style="text-align: left">Alibaba</td>
<td style="text-align: left">PMC Chair</td>
</tr>
<tr>
<td style="text-align: left">Hongze Zhang (<a href="https://people.apache.org/phonebook.html?uid=hongze">hongze</a>)</td>
- <td style="text-align: left"><a href="https://github.com/zhztheplayer"><img width="64" src="https://github.com/zhztheplayer.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/zhztheplayer"><img width="64" src="https://github.com/zhztheplayer.png"></a></td>
<td style="text-align: left">Tencent</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">James R. Taylor (<a href="https://people.apache.org/phonebook.html?uid=jamestaylor">jamestaylor</a>)</td>
- <td style="text-align: left"><a href="https://github.com/JamesRTaylor"><img width="64" src="https://github.com/JamesRTaylor.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/JamesRTaylor"><img width="64" src="https://github.com/JamesRTaylor.png"></a></td>
<td style="text-align: left">Salesforce</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Jacques Nadeau (<a href="https://people.apache.org/phonebook.html?uid=jacques">jacques</a>)</td>
- <td style="text-align: left"><a href="https://github.com/jacques-n"><img width="64" src="https://github.com/jacques-n.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/jacques-n"><img width="64" src="https://github.com/jacques-n.png"></a></td>
<td style="text-align: left">Dremio</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Jess Balint (<a href="https://people.apache.org/phonebook.html?uid=jbalint">jbalint</a>)</td>
- <td style="text-align: left"><a href="https://github.com/jbalint"><img width="64" src="https://github.com/jbalint.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/jbalint"><img width="64" src="https://github.com/jbalint.png"></a></td>
<td style="text-align: left">Stardog</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Jesús Camacho Rodríguez (<a href="https://people.apache.org/phonebook.html?uid=jcamacho">jcamacho</a>)</td>
- <td style="text-align: left"><a href="https://github.com/jcamachor"><img width="64" src="https://github.com/jcamachor.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/jcamachor"><img width="64" src="https://github.com/jcamachor.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Jinfeng Ni (<a href="https://people.apache.org/phonebook.html?uid=jni">jni</a>)</td>
- <td style="text-align: left"><a href="https://github.com/jinfengni"><img width="64" src="https://github.com/jinfengni.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/jinfengni"><img width="64" src="https://github.com/jinfengni.png"></a></td>
<td style="text-align: left">MapR</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Jin Xing (<a href="https://people.apache.org/phonebook.html?uid=jinxing">jinxing</a>)</td>
- <td style="text-align: left"><a href="https://github.com/jinxing64"><img width="64" src="https://github.com/jinxing64.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/jinxing64"><img width="64" src="https://github.com/jinxing64.png"></a></td>
<td style="text-align: left">Ant Financial</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">John Pullokkaran (<a href="https://people.apache.org/phonebook.html?uid=jpullokk">jpullokk</a>)</td>
- <td style="text-align: left"><a href="https://github.com/jpullokkaran"><img width="64" src="https://github.com/jpullokkaran.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/jpullokkaran"><img width="64" src="https://github.com/jpullokkaran.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Josh Elser (<a href="https://people.apache.org/phonebook.html?uid=elserj">elserj</a>)</td>
- <td style="text-align: left"><a href="https://github.com/joshelser"><img width="64" src="https://github.com/joshelser.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/joshelser"><img width="64" src="https://github.com/joshelser.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Julian Feinauer (<a href="https://people.apache.org/phonebook.html?uid=jfeinauer">jfeinauer</a>)</td>
- <td style="text-align: left"><a href="https://github.com/JulianFeinauer"><img width="64" src="https://github.com/JulianFeinauer.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/JulianFeinauer"><img width="64" src="https://github.com/JulianFeinauer.png"></a></td>
<td style="text-align: left">Pragmatic Minds</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
- <td style="text-align: left"><a href="http://people.apache.org/~jhyde">Julian Hyde</a> (<a href="https://people.apache.org/phonebook.html?uid=jhyde">jhyde</a>) he/him</td>
- <td style="text-align: left"><a href="https://github.com/julianhyde"><img width="64" src="https://github.com/julianhyde.png" /></a></td>
+ <td style="text-align: left">
+<a href="http://people.apache.org/~jhyde">Julian Hyde</a> (<a href="https://people.apache.org/phonebook.html?uid=jhyde">jhyde</a>) he/him</td>
+ <td style="text-align: left"><a href="https://github.com/julianhyde"><img width="64" src="https://github.com/julianhyde.png"></a></td>
<td style="text-align: left">Google</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Kevin Liew (<a href="https://people.apache.org/phonebook.html?uid=kliew">kliew</a>)</td>
- <td style="text-align: left"><a href="https://github.com/kliewkliew"><img width="64" src="https://github.com/kliewkliew.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/kliewkliew"><img width="64" src="https://github.com/kliewkliew.png"></a></td>
<td style="text-align: left"> </td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Kevin Risden (<a href="https://people.apache.org/phonebook.html?uid=krisden">krisden</a>)</td>
- <td style="text-align: left"><a href="https://github.com/risdenk"><img width="64" src="https://github.com/risdenk.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/risdenk"><img width="64" src="https://github.com/risdenk.png"></a></td>
<td style="text-align: left"> </td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Laurent Goujon (<a href="https://people.apache.org/phonebook.html?uid=laurent">laurent</a>)</td>
- <td style="text-align: left"><a href="https://github.com/laurentgo"><img width="64" src="https://github.com/laurentgo.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/laurentgo"><img width="64" src="https://github.com/laurentgo.png"></a></td>
<td style="text-align: left">Dremio</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Liya Fan (<a href="https://people.apache.org/phonebook.html?uid=liyafan">liyafan</a>)</td>
- <td style="text-align: left"><a href="https://github.com/liyafan82"><img width="64" src="https://github.com/liyafan82.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/liyafan82"><img width="64" src="https://github.com/liyafan82.png"></a></td>
<td style="text-align: left">Alibaba</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Maryann Xue (<a href="https://people.apache.org/phonebook.html?uid=maryannxue">maryannxue</a>)</td>
- <td style="text-align: left"><a href="https://github.com/maryannxue"><img width="64" src="https://github.com/maryannxue.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/maryannxue"><img width="64" src="https://github.com/maryannxue.png"></a></td>
<td style="text-align: left">Intel</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
- <td style="text-align: left"><a href="https://michael.mior.ca/">Michael Mior</a> (<a href="https://people.apache.org/phonebook.html?uid=mmior">mmior</a>) he/him</td>
- <td style="text-align: left"><a href="https://github.com/michaelmior"><img width="64" src="https://github.com/michaelmior.png" /></a></td>
+ <td style="text-align: left">
+<a href="https://michael.mior.ca/">Michael Mior</a> (<a href="https://people.apache.org/phonebook.html?uid=mmior">mmior</a>) he/him</td>
+ <td style="text-align: left"><a href="https://github.com/michaelmior"><img width="64" src="https://github.com/michaelmior.png"></a></td>
<td style="text-align: left">Rochester Institute of Technology</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
- <td style="text-align: left"><a href="http://milinda.pathirage.org/">Milinda Pathirage</a> (<a href="https://people.apache.org/phonebook.html?uid=milinda">milinda</a>)</td>
- <td style="text-align: left"><a href="https://github.com/milinda"><img width="64" src="https://github.com/milinda.png" /></a></td>
+ <td style="text-align: left">
+<a href="http://milinda.pathirage.org/">Milinda Pathirage</a> (<a href="https://people.apache.org/phonebook.html?uid=milinda">milinda</a>)</td>
+ <td style="text-align: left"><a href="https://github.com/milinda"><img width="64" src="https://github.com/milinda.png"></a></td>
<td style="text-align: left">Indiana University</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">MinJi Kim (<a href="https://people.apache.org/phonebook.html?uid=minji">minji</a>)</td>
- <td style="text-align: left"><a href="https://github.com/minji-kim"><img width="64" src="https://github.com/minji-kim.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/minji-kim"><img width="64" src="https://github.com/minji-kim.png"></a></td>
<td style="text-align: left">Oracle</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Muhammad Gelbana (<a href="https://people.apache.org/phonebook.html?uid=mgelbana">mgelbana</a>)</td>
- <td style="text-align: left"><a href="https://github.com/MGelbana"><img width="64" src="https://github.com/MGelbana.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/MGelbana"><img width="64" src="https://github.com/MGelbana.png"></a></td>
<td style="text-align: left">Incorta</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
- <td style="text-align: left"><a href="http://www.n10k.com">Nick Dimiduk</a> (<a href="https://people.apache.org/phonebook.html?uid=ndimiduk">ndimiduk</a>)</td>
- <td style="text-align: left"><a href="https://github.com/ndimiduk"><img width="64" src="https://github.com/ndimiduk.png" /></a></td>
+ <td style="text-align: left">
+<a href="http://www.n10k.com">Nick Dimiduk</a> (<a href="https://people.apache.org/phonebook.html?uid=ndimiduk">ndimiduk</a>)</td>
+ <td style="text-align: left"><a href="https://github.com/ndimiduk"><img width="64" src="https://github.com/ndimiduk.png"></a></td>
<td style="text-align: left"> </td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Nishant Bangarwa (<a href="https://people.apache.org/phonebook.html?uid=nishant">nishant</a>)</td>
- <td style="text-align: left"><a href="https://github.com/nishantmonu51"><img width="64" src="https://github.com/nishantmonu51.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/nishantmonu51"><img width="64" src="https://github.com/nishantmonu51.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Ruben Quesada Lopez (<a href="https://people.apache.org/phonebook.html?uid=rubenql">rubenql</a>)</td>
- <td style="text-align: left"><a href="https://github.com/rubenada"><img width="64" src="https://github.com/rubenada.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/rubenada"><img width="64" src="https://github.com/rubenada.png"></a></td>
<td style="text-align: left">TIBCO</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Rui Wang (<a href="https://people.apache.org/phonebook.html?uid=amaliujia">amaliujia</a>)</td>
- <td style="text-align: left"><a href="https://github.com/amaliujia"><img width="64" src="https://github.com/amaliujia.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/amaliujia"><img width="64" src="https://github.com/amaliujia.png"></a></td>
<td style="text-align: left">Google</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Sergey Nuyanzin (<a href="https://people.apache.org/phonebook.html?uid=snuyanzin">snuyanzin</a>)</td>
- <td style="text-align: left"><a href="https://github.com/snuyanzin"><img width="64" src="https://github.com/snuyanzin.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/snuyanzin"><img width="64" src="https://github.com/snuyanzin.png"></a></td>
<td style="text-align: left">EPAM</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Shuyi Chen (<a href="https://people.apache.org/phonebook.html?uid=shuyichen">shuyichen</a>)</td>
- <td style="text-align: left"><a href="https://github.com/suez1224"><img width="64" src="https://github.com/suez1224.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/suez1224"><img width="64" src="https://github.com/suez1224.png"></a></td>
<td style="text-align: left">Uber</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Slim Bouguerra (<a href="https://people.apache.org/phonebook.html?uid=bslim">bslim</a>)</td>
- <td style="text-align: left"><a href="https://github.com/b-slim"><img width="64" src="https://github.com/b-slim.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/b-slim"><img width="64" src="https://github.com/b-slim.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
- <td style="text-align: left"><a href="https://people.apache.org/~zabetak/">Stamatis Zampetakis</a> (<a href="https://people.apache.org/phonebook.html?uid=zabetak">zabetak</a>) he/him</td>
- <td style="text-align: left"><a href="https://github.com/zabetak"><img width="64" src="https://github.com/zabetak.png" /></a></td>
+ <td style="text-align: left">
+<a href="https://people.apache.org/~zabetak/">Stamatis Zampetakis</a> (<a href="https://people.apache.org/phonebook.html?uid=zabetak">zabetak</a>) he/him</td>
+ <td style="text-align: left"><a href="https://github.com/zabetak"><img width="64" src="https://github.com/zabetak.png"></a></td>
<td style="text-align: left">Cloudera</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Steven Noels (<a href="https://people.apache.org/phonebook.html?uid=stevenn">stevenn</a>)</td>
- <td style="text-align: left"><a href="https://github.com/stevenn"><img width="64" src="https://github.com/stevenn.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/stevenn"><img width="64" src="https://github.com/stevenn.png"></a></td>
<td style="text-align: left">NGData</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Ted Dunning (<a href="https://people.apache.org/phonebook.html?uid=tdunning">tdunning</a>)</td>
- <td style="text-align: left"><a href="https://github.com/tdunning"><img width="64" src="https://mapr.com/blog/author/ted-dunning/assets/tdunning-panama.jpg" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/tdunning"><img width="64" src="https://mapr.com/blog/author/ted-dunning/assets/tdunning-panama.jpg"></a></td>
<td style="text-align: left">MapR</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Vineet Garg (<a href="https://people.apache.org/phonebook.html?uid=vgarg">vgarg</a>)</td>
- <td style="text-align: left"><a href="https://github.com/vineetgarg02"><img width="64" src="https://github.com/vineetgarg02.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/vineetgarg02"><img width="64" src="https://github.com/vineetgarg02.png"></a></td>
<td style="text-align: left">Cloudera</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Vladimir Sitnikov (<a href="https://people.apache.org/phonebook.html?uid=vladimirsitnikov">vladimirsitnikov</a>)</td>
- <td style="text-align: left"><a href="https://github.com/vlsi"><img width="64" src="https://github.com/vlsi.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/vlsi"><img width="64" src="https://github.com/vlsi.png"></a></td>
<td style="text-align: left">NetCracker</td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Vladimir Ozerov (<a href="https://people.apache.org/phonebook.html?uid=vozerov">vozerov</a>)</td>
- <td style="text-align: left"><a href="https://github.com/devozerov"><img width="64" src="https://github.com/devozerov.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/devozerov"><img width="64" src="https://github.com/devozerov.png"></a></td>
<td style="text-align: left">Querify Labs</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Volodymyr Vysotskyi (<a href="https://people.apache.org/phonebook.html?uid=volodymyr">volodymyr</a>)</td>
- <td style="text-align: left"><a href="https://github.com/vvysotskyi"><img width="64" src="https://github.com/vvysotskyi.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/vvysotskyi"><img width="64" src="https://github.com/vvysotskyi.png"></a></td>
<td style="text-align: left"> </td>
<td style="text-align: left">PMC</td>
</tr>
<tr>
<td style="text-align: left">Wang Yanlin (<a href="https://people.apache.org/phonebook.html?uid=yanlin">yanlin</a>)</td>
- <td style="text-align: left"><a href="https://github.com/yanlin-Lynn"><img width="64" src="https://github.com/yanlin-Lynn.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/yanlin-Lynn"><img width="64" src="https://github.com/yanlin-Lynn.png"></a></td>
<td style="text-align: left">Ant Financial</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Xiong Duan (<a href="https://people.apache.org/phonebook.html?uid=xiong">xiong</a>) he/him</td>
- <td style="text-align: left"><a href="https://github.com/NobiGo"><img width="64" src="https://github.com/NobiGo.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/NobiGo"><img width="64" src="https://github.com/NobiGo.png"></a></td>
<td style="text-align: left">Hikvision</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Zhaohui Xu (<a href="https://people.apache.org/phonebook.html?uid=zhaohui">zhaohui</a>)</td>
- <td style="text-align: left"><a href="https://github.com/xy2953396112"><img width="64" src="https://github.com/xy2953396112.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/xy2953396112"><img width="64" src="https://github.com/xy2953396112.png"></a></td>
<td style="text-align: left">Ant Financial</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Zhen Wang (<a href="https://people.apache.org/phonebook.html?uid=zhenw">zhenw</a>)</td>
- <td style="text-align: left"><a href="https://github.com/zinking"><img width="64" src="https://github.com/zinking.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/zinking"><img width="64" src="https://github.com/zinking.png"></a></td>
<td style="text-align: left"> </td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Zhiqiang He (<a href="https://people.apache.org/phonebook.html?uid=zhiqianghe">zhiqianghe</a>)</td>
- <td style="text-align: left"><a href="https://github.com/Zhiqiang-He"><img width="64" src="https://github.com/Zhiqiang-He.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/Zhiqiang-He"><img width="64" src="https://github.com/Zhiqiang-He.png"></a></td>
<td style="text-align: left">Huawei</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Zhiwei Peng (<a href="https://people.apache.org/phonebook.html?uid=zhiwei">zhiwei</a>)</td>
- <td style="text-align: left"><a href="https://github.com/pengzhiwei2018"><img width="64" src="https://github.com/pengzhiwei2018.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/pengzhiwei2018"><img width="64" src="https://github.com/pengzhiwei2018.png"></a></td>
<td style="text-align: left">Ant Financial Group</td>
<td style="text-align: left">Committer</td>
</tr>
<tr>
<td style="text-align: left">Zoltan Haindrich (<a href="https://people.apache.org/phonebook.html?uid=kgyrtkirk">kgyrtkirk</a>)</td>
- <td style="text-align: left"><a href="https://github.com/kgyrtkirk"><img width="64" src="https://github.com/kgyrtkirk.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/kgyrtkirk"><img width="64" src="https://github.com/kgyrtkirk.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">Committer</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Emeritus members</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Name (Apache ID)</th>
@@ -442,23 +449,26 @@
<tbody>
<tr>
<td style="text-align: left">Alan Gates (<a href="https://people.apache.org/phonebook.html?uid=gates">gates</a>)</td>
- <td style="text-align: left"><a href="https://github.com/alanfgates"><img width="64" src="https://github.com/alanfgates.png" /></a></td>
+ <td style="text-align: left"><a href="https://github.com/alanfgates"><img width="64" src="https://github.com/alanfgates.png"></a></td>
<td style="text-align: left">Hortonworks</td>
<td style="text-align: left">PMC</td>
</tr>
</tbody>
-</table>
+</table></div>
<h1 id="mailing-lists">Mailing Lists</h1>
<p>There are several mailing lists for Calcite:</p>
<ul>
- <li><a href="mailto:dev@calcite.apache.org">dev@calcite.apache.org</a> — Development discussions
+ <li>
+<a href="mailto:dev@calcite.apache.org">dev@calcite.apache.org</a> — Development discussions
[<a href="https://mail-archives.apache.org/mod_mbox/calcite-dev/">archive</a>]</li>
- <li><a href="mailto:issues@calcite.apache.org">issues@calcite.apache.org</a> — Bug tracking
+ <li>
+<a href="mailto:issues@calcite.apache.org">issues@calcite.apache.org</a> — Bug tracking
[<a href="https://mail-archives.apache.org/mod_mbox/calcite-issues/">archive</a>]</li>
- <li><a href="mailto:commits@calcite.apache.org">commits@calcite.apache.org</a> — Git tracking
+ <li>
+<a href="mailto:commits@calcite.apache.org">commits@calcite.apache.org</a> — Git tracking
[<a href="https://mail-archives.apache.org/mod_mbox/calcite-commits/">archive</a>]</li>
</ul>
@@ -471,22 +481,26 @@
<p>Need help with Calcite? Try these resources:</p>
<ul>
- <li><strong>Mailing Lists</strong>.
+ <li>
+<strong>Mailing Lists</strong>.
The best option is to send email to the developers list
<a href="mailto:dev@calcite.apache.org">dev@calcite.apache.org</a>. All
of the historic traffic is available in the
<a href="https://mail-archives.apache.org/mod_mbox/calcite-dev/">archive</a>. To
subscribe to the user list, please send email to
<a href="mailto:dev-subscribe@calcite.apache.org">dev-subscribe@calcite.apache.org</a>.</li>
- <li><strong>Bug Reports</strong>.
+ <li>
+<strong>Bug Reports</strong>.
Please file any issues you encounter or fixes you’d like on the
<a href="https://issues.apache.org/jira/browse/CALCITE">Calcite Jira</a>. We welcome
patches and pull-requests!</li>
- <li><strong>StackOverflow</strong>.
+ <li>
+<strong>StackOverflow</strong>.
<a href="https://stackoverflow.com/questions/tagged/calcite">StackOverflow</a> is a wonderful resource for
any developer. Take a look over there to see if someone has answered
your question.</li>
- <li><strong>Browse the code</strong>.
+ <li>
+<strong>Browse the code</strong>.
One of the advantages of open source software is that you can browse the code.
The code is available on <a href="https://github.com/apache/calcite/tree/master">github</a>.</li>
</ul>
@@ -602,12 +616,18 @@ and <a href="https://beam-summit.firebaseapp.com/schedule/">Beam Summit Europe 2
<h2 id="more-talks">More talks</h2>
<ul>
- <li><a href="https://github.com/julianhyde/share/blob/master/slides/calcite-algebra-edw-2015.pdf?raw=true">Why you care about relational algebra (even though you didn’t know it)</a> (Washington DC, 2015)</li>
- <li><a href="https://github.com/julianhyde/share/blob/master/slides/hive-cbo-seattle-2014.pdf?raw=true">Cost-based optimization in Hive 0.14</a> (Seattle, 2014)</li>
- <li><a href="https://github.com/julianhyde/share/blob/master/slides/dmmq-summit-2014.pdf?raw=true">Discardable, in-memory materialized query for Hadoop</a> (<a href="https://www.youtube.com/watch?v=CziGOa8GXqI">video</a>) (Hadoop Summit, 2014)</li>
- <li><a href="https://github.com/julianhyde/share/blob/master/slides/optiq-nosql-now-2013.pdf?raw=true">SQL Now!</a> (NoSQL Now! conference, 2013)</li>
- <li><a href="https://github.com/julianhyde/share/blob/master/slides/optiq-drill-user-group-2013.pdf?raw=true">Drill / SQL / Optiq</a> (2013)</li>
- <li><a href="https://www.slideshare.net/julianhyde/how-to-integrate-splunk-with-any-data-solution">How to integrate Splunk with any data solution</a> (Splunk User Conference, 2012)</li>
+ <li>
+<a href="https://github.com/julianhyde/share/blob/master/slides/calcite-algebra-edw-2015.pdf?raw=true">Why you care about relational algebra (even though you didn’t know it)</a> (Washington DC, 2015)</li>
+ <li>
+<a href="https://github.com/julianhyde/share/blob/master/slides/hive-cbo-seattle-2014.pdf?raw=true">Cost-based optimization in Hive 0.14</a> (Seattle, 2014)</li>
+ <li>
+<a href="https://github.com/julianhyde/share/blob/master/slides/dmmq-summit-2014.pdf?raw=true">Discardable, in-memory materialized query for Hadoop</a> (<a href="https://www.youtube.com/watch?v=CziGOa8GXqI">video</a>) (Hadoop Summit, 2014)</li>
+ <li>
+<a href="https://github.com/julianhyde/share/blob/master/slides/optiq-nosql-now-2013.pdf?raw=true">SQL Now!</a> (NoSQL Now! conference, 2013)</li>
+ <li>
+<a href="https://github.com/julianhyde/share/blob/master/slides/optiq-drill-user-group-2013.pdf?raw=true">Drill / SQL / Optiq</a> (2013)</li>
+ <li>
+<a href="https://www.slideshare.net/julianhyde/how-to-integrate-splunk-with-any-data-solution">How to integrate Splunk with any data solution</a> (Splunk User Conference, 2012)</li>
</ul>
</article>
@@ -626,11 +646,11 @@ and <a href="https://beam-summit.firebaseapp.com/schedule/">Beam Summit Europe 2
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/css/screen.css b/css/screen.css
index ddc8477..c0565eb 100644
--- a/css/screen.css
+++ b/css/screen.css
@@ -1160,6 +1160,7 @@ blockquote {
/* Tables */
table {
+ /* Allow code inside tables to wrap when there is no space */
width: 100%;
background-color: #555;
margin: .5em 0;
@@ -1169,6 +1170,13 @@ table {
-webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); }
+ table pre,
+ table code {
+ white-space: pre-wrap; }
+
+/* The CSS class is added via _plugins/wrap_table.rb plugin to enable horizontal scrolling */
+.scroll-table-style {
+ overflow-x: auto; }
thead {
-webkit-border-top-left-radius: 5px;
diff --git a/develop/index.html b/develop/index.html
index 506d564..88ae067 100644
--- a/develop/index.html
+++ b/develop/index.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Developing Calcite</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -260,8 +261,10 @@ You might find a detailed documentation at https://checkerframework.org/</p>
<p>Here’s a small introduction to null-safe programming:</p>
<ul>
- <li>By default, parameters, return values and fields are non-nullable, so refrain from using <code class="highlighter-rouge">@NonNull</code></li>
- <li>Local variables infer nullness from the expression, so you can write <code class="highlighter-rouge">Object v = ...</code> instead of <code class="highlighter-rouge">@Nullable Object v = ...</code></li>
+ <li>By default, parameters, return values and fields are non-nullable, so refrain from using <code class="highlighter-rouge">@NonNull</code>
+</li>
+ <li>Local variables infer nullness from the expression, so you can write <code class="highlighter-rouge">Object v = ...</code> instead of <code class="highlighter-rouge">@Nullable Object v = ...</code>
+</li>
<li>
<p>Avoid the use of <code class="highlighter-rouge">javax.annotation.*</code> annotations. The annotations from <code class="highlighter-rouge">jsr305</code> do not support cases like <code class="highlighter-rouge">List<@Nullable String></code>
so it is better to stick with <code class="highlighter-rouge">org.checkerframework.checker.nullness.qual.Nullable</code>.
@@ -292,7 +295,8 @@ It is important the files have <code class="highlighter-rouge">.astub</code> ext
<p>In array types, a type annotation appears immediately before the type component (either the array or the array component) it refers to.
This is explained in the <a href="https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.7.4">Java Language Specification</a>.</p>
- <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> String nonNullable;
+ <div class="highlighter-rouge">
+<div class="highlight"><pre class="highlight"><code> String nonNullable;
@Nullable String nullable;
java.lang.@Nullable String fullyQualifiedNullable;
@@ -329,7 +333,8 @@ This is explained in the <a href="https://docs.oracle.com/javase/specs/jls/se8/h
<li>
<p>By default, generic parameters can be both nullable and non-nullable:</p>
- <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> class Holder<T> { // can be both nullable
+ <div class="highlighter-rouge">
+<div class="highlight"><pre class="highlight"><code> class Holder<T> { // can be both nullable
final T value;
T get() {
return value; // works
@@ -343,7 +348,8 @@ This is explained in the <a href="https://docs.oracle.com/javase/specs/jls/se8/h
<p>However, default bounds are non-nullable, so if you write <code class="highlighter-rouge"><T extends Number></code>,
then it is the same as <code class="highlighter-rouge"><T extends @NonNull Number></code>.</p>
- <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> class Holder<T extends Number> { // note how this T never permits nulls
+ <div class="highlighter-rouge">
+<div class="highlight"><pre class="highlight"><code> class Holder<T extends Number> { // note how this T never permits nulls
final T value;
Holder(T value) {
this.value = value;
@@ -359,7 +365,8 @@ then it is the same as <code class="highlighter-rouge"><T extends @NonNull Nu
<li>
<p>If you need to ensure the type is <strong>always</strong> nullable, then use <code class="highlighter-rouge"><@Nullable T></code> as follows:</p>
- <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> class Holder<@Nullable T> { // note how this requires T to always be nullable
+ <div class="highlighter-rouge">
+<div class="highlight"><pre class="highlight"><code> class Holder<@Nullable T> { // note how this requires T to always be nullable
protected T get() { // Default implementation.
// Default implementation returns null, so it requires that T must always be nullable
return null;
@@ -418,11 +425,11 @@ or just by answering questions on the list.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/adapter.html b/docs/adapter.html
index 7d33a14..00114cc 100644
--- a/docs/adapter.html
+++ b/docs/adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Adapters</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -83,19 +84,28 @@
presenting the data as tables within a schema.</p>
<ul>
- <li><a href="cassandra_adapter.html">Cassandra adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/cassandra/package-summary.html">calcite-cassandra</a>)</li>
+ <li>
+<a href="cassandra_adapter.html">Cassandra adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/cassandra/package-summary.html">calcite-cassandra</a>)</li>
<li>CSV adapter (<a href="/javadocAggregate/org/apache/calcite/adapter/csv/package-summary.html">example/csv</a>)</li>
- <li><a href="druid_adapter.html">Druid adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/druid/package-summary.html">calcite-druid</a>)</li>
- <li><a href="elasticsearch_adapter.html">Elasticsearch adapter</a>
+ <li>
+<a href="druid_adapter.html">Druid adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/druid/package-summary.html">calcite-druid</a>)</li>
+ <li>
+<a href="elasticsearch_adapter.html">Elasticsearch adapter</a>
(<a href="/javadocAggregate/org/apache/calcite/adapter/elasticsearch/package-summary.html">calcite-elasticsearch</a>)</li>
- <li><a href="file_adapter.html">File adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/file/package-summary.html">calcite-file</a>)</li>
- <li><a href="geode_adapter.html">Geode adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/geode/package-summary.html">calcite-geode</a>)</li>
- <li><a href="innodb_adapter.html">InnoDB adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/innodb/package-summary.html">calcite-innodb</a>)</li>
+ <li>
+<a href="file_adapter.html">File adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/file/package-summary.html">calcite-file</a>)</li>
+ <li>
+<a href="geode_adapter.html">Geode adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/geode/package-summary.html">calcite-geode</a>)</li>
+ <li>
+<a href="innodb_adapter.html">InnoDB adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/innodb/package-summary.html">calcite-innodb</a>)</li>
<li>JDBC adapter (part of <a href="/javadocAggregate/org/apache/calcite/adapter/jdbc/package-summary.html">calcite-core</a>)</li>
<li>MongoDB adapter (<a href="/javadocAggregate/org/apache/calcite/adapter/mongodb/package-summary.html">calcite-mongodb</a>)</li>
- <li><a href="os_adapter.html">OS adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/os/package-summary.html">calcite-os</a>)</li>
- <li><a href="pig_adapter.html">Pig adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/pig/package-summary.html">calcite-pig</a>)</li>
- <li><a href="redis_adapter.html">Redis adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/redis/package-summary.html">calcite-redis</a>)</li>
+ <li>
+<a href="os_adapter.html">OS adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/os/package-summary.html">calcite-os</a>)</li>
+ <li>
+<a href="pig_adapter.html">Pig adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/pig/package-summary.html">calcite-pig</a>)</li>
+ <li>
+<a href="redis_adapter.html">Redis adapter</a> (<a href="/javadocAggregate/org/apache/calcite/adapter/redis/package-summary.html">calcite-redis</a>)</li>
<li>Solr cloud adapter (<a href="https://github.com/bluejoe2008/solr-sql">solr-sql</a>)</li>
<li>Spark adapter (<a href="/javadocAggregate/org/apache/calcite/adapter/spark/package-summary.html">calcite-spark</a>)</li>
<li>Splunk adapter (<a href="/javadocAggregate/org/apache/calcite/adapter/splunk/package-summary.html">calcite-splunk</a>)</li>
@@ -106,7 +116,8 @@ presenting the data as tables within a schema.</p>
<h3 id="other-language-interfaces">Other language interfaces</h3>
<ul>
- <li>Piglet (<a href="/javadocAggregate/org/apache/calcite/piglet/package-summary.html">calcite-piglet</a>) runs queries in a subset of <a href="https://pig.apache.org/docs/r0.7.0/piglatin_ref1.html">Pig Latin</a></li>
+ <li>Piglet (<a href="/javadocAggregate/org/apache/calcite/piglet/package-summary.html">calcite-piglet</a>) runs queries in a subset of <a href="https://pig.apache.org/docs/r0.7.0/piglatin_ref1.html">Pig Latin</a>
+</li>
</ul>
<h2 id="engines">Engines</h2>
@@ -140,7 +151,7 @@ as implemented by Avatica’s
<h2 id="jdbc-connect-string-parameters">JDBC connect string parameters</h2>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Property</th>
@@ -245,19 +256,19 @@ as implemented by Avatica’s
<td style="text-align: left">Whether to make implicit type coercion when type mismatch during sql node validation, default is true.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>To make a connection to a single schema based on a built-in schema type, you don’t need to specify
a model. For example,</p>
-<p><code class="highlighter-rouge">jdbc:calcite:schemaType=JDBC; schema.jdbcUser=SCOTT; schema.jdbcPassword=TIGER; schema.jdbcUrl=jdbc:hsqldb:res:foodmart</code></p>
+<figure class="highlight"><pre><code class="language-text" data-lang="text">jdbc:calcite:schemaType=JDBC; schema.jdbcUser=SCOTT; schema.jdbcPassword=TIGER; schema.jdbcUrl=jdbc:hsqldb:res:foodmart</code></pre></figure>
<p>creates a connection with a schema mapped via the JDBC schema adapter to the foodmart database.</p>
<p>Similarly, you can connect to a single schema based on a user-defined schema adapter.
For example,</p>
-<p><code class="highlighter-rouge">jdbc:calcite:schemaFactory=org.apache.calcite.adapter.cassandra.CassandraSchemaFactory; schema.host=localhost; schema.keyspace=twissandra</code></p>
+<figure class="highlight"><pre><code class="language-text" data-lang="text">jdbc:calcite:schemaFactory=org.apache.calcite.adapter.cassandra.CassandraSchemaFactory; schema.host=localhost; schema.keyspace=twissandra</code></pre></figure>
<p>makes a connection to the Cassandra adapter, equivalent to writing the following model file:</p>
@@ -293,13 +304,26 @@ It extends the SQL parser,
adding some DDL commands:</p>
<ul>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP SCHEMA</code></li>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP FOREIGN SCHEMA</code></li>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP TABLE</code> (including <code class="highlighter-rouge">CREATE TABLE ... AS SELECT</code>)</li>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP MATERIALIZED VIEW</code></li>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP VIEW</code></li>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP FUNCTION</code></li>
- <li><code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP TYPE</code></li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP SCHEMA</code>
+</li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP FOREIGN SCHEMA</code>
+</li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP TABLE</code> (including <code class="highlighter-rouge">CREATE TABLE ... AS SELECT</code>)</li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP MATERIALIZED VIEW</code>
+</li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP VIEW</code>
+</li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP FUNCTION</code>
+</li>
+ <li>
+<code class="highlighter-rouge">CREATE</code> and <code class="highlighter-rouge">DROP TYPE</code>
+</li>
</ul>
<p>Commands are described in the <a href="reference.html#ddl-extensions">SQL reference</a>.</p>
@@ -395,10 +419,14 @@ but each function has several corresponding Java methods, one for each
stage in the life-cycle of an aggregate:</p>
<ul>
- <li><code class="highlighter-rouge">init</code> creates an accumulator;</li>
- <li><code class="highlighter-rouge">add</code> adds one row’s value to an accumulator;</li>
- <li><code class="highlighter-rouge">merge</code> combines two accumulators into one;</li>
- <li><code class="highlighter-rouge">result</code> finalizes an accumulator and converts it to a result.</li>
+ <li>
+<code class="highlighter-rouge">init</code> creates an accumulator;</li>
+ <li>
+<code class="highlighter-rouge">add</code> adds one row’s value to an accumulator;</li>
+ <li>
+<code class="highlighter-rouge">merge</code> combines two accumulators into one;</li>
+ <li>
+<code class="highlighter-rouge">result</code> finalizes an accumulator and converts it to a result.</li>
</ul>
<p>For example, the methods (in pseudo-code) for <code class="highlighter-rouge">SUM(int)</code> are as follows:</p>
@@ -444,7 +472,8 @@ appear in more than one window. For example, 10:37 appears in both the
For this, window functions have an extra life-cycle operation:</p>
<ul>
- <li><code class="highlighter-rouge">remove</code> removes a value from an accumulator.</li>
+ <li>
+<code class="highlighter-rouge">remove</code> removes a value from an accumulator.</li>
</ul>
<p>It pseudo-code for <code class="highlighter-rouge">SUM(int)</code> would be:</p>
@@ -1031,11 +1060,11 @@ is computed only once.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/algebra.html b/docs/algebra.html
index 45acee4..112c6b4 100644
--- a/docs/algebra.html
+++ b/docs/algebra.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Algebra</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -249,9 +250,11 @@ will be called something like DEPTNO_1.</p>
<p>Some relational expression methods give you more control over field names:</p>
<ul>
- <li><code class="highlighter-rouge">project</code> lets you wrap expressions using <code class="highlighter-rouge">alias(expr, fieldName)</code>. It
+ <li>
+<code class="highlighter-rouge">project</code> lets you wrap expressions using <code class="highlighter-rouge">alias(expr, fieldName)</code>. It
removes the wrapper but keeps the suggested name (as long as it is unique).</li>
- <li><code class="highlighter-rouge">values(String[] fieldNames, Object... values)</code> accepts an array of field
+ <li>
+<code class="highlighter-rouge">values(String[] fieldNames, Object... values)</code> accepts an array of field
names. If any element of the array is null, the builder will generate a unique
name.</li>
</ul>
@@ -345,7 +348,7 @@ A SQL recursive query, e.g. this one that generates the sequence 1, 2, 3, …10:
push it onto the stack, and
return the <code class="highlighter-rouge">RelBuilder</code>.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -358,7 +361,9 @@ return the <code class="highlighter-rouge">RelBuilder</code>.</p>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/TableScan.html">TableScan</a>.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">functionScan(operator, n, expr...)</code><br /><code class="highlighter-rouge">functionScan(operator, n, exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">functionScan(operator, n, expr...)</code><br><code class="highlighter-rouge">functionScan(operator, n, exprList)</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/TableFunctionScan.html">TableFunctionScan</a> of the <code class="highlighter-rouge">n</code> most recent relational expressions.</td>
</tr>
<tr>
@@ -366,23 +371,33 @@ return the <code class="highlighter-rouge">RelBuilder</code>.</p>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/TableScan.html">TableScan</a> on a <a href="/javadocAggregate/org/apache/calcite/schema/TransientTable.html">TransientTable</a> with the given type (if not specified, the most recent relational expression’s type will be used).</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">values(fieldNames, value...)</code><br /><code class="highlighter-rouge">values(rowType, tupleList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">values(fieldNames, value...)</code><br><code class="highlighter-rouge">values(rowType, tupleList)</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Values.html">Values</a>.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">filter([variablesSet, ] exprList)</code><br /><code class="highlighter-rouge">filter([variablesSet, ] expr...)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">filter([variablesSet, ] exprList)</code><br><code class="highlighter-rouge">filter([variablesSet, ] expr...)</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Filter.html">Filter</a> over the AND of the given predicates; if <code class="highlighter-rouge">variablesSet</code> is specified, the predicates may reference those variables.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">project(expr...)</code><br /><code class="highlighter-rouge">project(exprList [, fieldNames])</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">project(expr...)</code><br><code class="highlighter-rouge">project(exprList [, fieldNames])</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Project.html">Project</a>. To override the default name, wrap expressions using <code class="highlighter-rouge">alias</code>, or specify the <code class="highlighter-rouge">fieldNames</code> argument.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">projectPlus(expr...)</code><br /><code class="highlighter-rouge">projectPlus(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">projectPlus(expr...)</code><br><code class="highlighter-rouge">projectPlus(exprList)</code>
+</td>
<td style="text-align: left">Variant of <code class="highlighter-rouge">project</code> that keeps original fields and appends the given expressions.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">projectExcept(expr...)</code><br /><code class="highlighter-rouge">projectExcept(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">projectExcept(expr...)</code><br><code class="highlighter-rouge">projectExcept(exprList)</code>
+</td>
<td style="text-align: left">Variant of <code class="highlighter-rouge">project</code> that keeps original fields and removes the given expressions.</td>
</tr>
<tr>
@@ -394,7 +409,9 @@ return the <code class="highlighter-rouge">RelBuilder</code>.</p>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Project.html">Project</a> that converts the fields to the given types, optionally also renaming them.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">aggregate(groupKey, aggCall...)</code><br /><code class="highlighter-rouge">aggregate(groupKey, aggCallList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">aggregate(groupKey, aggCall...)</code><br><code class="highlighter-rouge">aggregate(groupKey, aggCallList)</code>
+</td>
<td style="text-align: left">Creates an <a href="/javadocAggregate/org/apache/calcite/rel/core/Aggregate.html">Aggregate</a>.</td>
</tr>
<tr>
@@ -410,11 +427,15 @@ return the <code class="highlighter-rouge">RelBuilder</code>.</p>
<td style="text-align: left">Adds an unpivot operation, implemented by generating a <a href="/javadocAggregate/org/apache/calcite/rel/core/Join.html">Join</a> to a <a href="/javadocAggregate/org/apache/calcite/rel/core/Values.html">Values</a> that converts each row to several rows</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">sort(fieldOrdinal...)</code><br /><code class="highlighter-rouge">sort(expr...)</code><br /><code class="highlighter-rouge">sort(exprList)</code></td>
- <td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Sort.html">Sort</a>.<br /><br />In the first form, field ordinals are 0-based, and a negative ordinal indicates descending; for example, -2 means field 1 descending.<br /><br />In the other forms, you can wrap expressions in <code class="highlighter-rouge">as</code>, <code class="highlighter-rouge">nullsFirst</code> or <code class="highlighter-rouge">nullsLast</code>.</td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">sort(fieldOrdinal...)</code><br><code class="highlighter-rouge">sort(expr...)</code><br><code class="highlighter-rouge">sort(exprList)</code>
+</td>
+ <td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Sort.html">Sort</a>.<br><br>In the first form, field ordinals are 0-based, and a negative ordinal indicates descending; for example, -2 means field 1 descending.<br><br>In the other forms, you can wrap expressions in <code class="highlighter-rouge">as</code>, <code class="highlighter-rouge">nullsFirst</code> or <code class="highlighter-rouge">nullsLast</code>.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">sortLimit(offset, fetch, expr...)</code><br /><code class="highlighter-rouge">sortLimit(offset, fetch, exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">sortLimit(offset, fetch, expr...)</code><br><code class="highlighter-rouge">sortLimit(offset, fetch, exprList)</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Sort.html">Sort</a> with offset and limit.</td>
</tr>
<tr>
@@ -430,12 +451,16 @@ return the <code class="highlighter-rouge">RelBuilder</code>.</p>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/SortExchange.html">SortExchange</a>.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">correlate(joinType, correlationId, requiredField...)</code><br /><code class="highlighter-rouge">correlate(joinType, correlationId, requiredFieldList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">correlate(joinType, correlationId, requiredField...)</code><br><code class="highlighter-rouge">correlate(joinType, correlationId, requiredFieldList)</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Correlate.html">Correlate</a> of the two most recent relational expressions, with a variable name and required field expressions for the left relation.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">join(joinType, expr...)</code><br /><code class="highlighter-rouge">join(joinType, exprList)</code><br /><code class="highlighter-rouge">join(joinType, fieldName...)</code></td>
- <td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Join.html">Join</a> of the two most recent relational expressions.<br /><br />The first form joins on a boolean expression (multiple conditions are combined using AND).<br /><br />The last form joins on named fields; each side must have a field of each name.</td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">join(joinType, expr...)</code><br><code class="highlighter-rouge">join(joinType, exprList)</code><br><code class="highlighter-rouge">join(joinType, fieldName...)</code>
+</td>
+ <td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Join.html">Join</a> of the two most recent relational expressions.<br><br>The first form joins on a boolean expression (multiple conditions are combined using AND).<br><br>The last form joins on named fields; each side must have a field of each name.</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">semiJoin(expr)</code></td>
@@ -466,59 +491,105 @@ return the <code class="highlighter-rouge">RelBuilder</code>.</p>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Snapshot.html">Snapshot</a> of the given snapshot period.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">match(pattern, strictStart,</code> <code class="highlighter-rouge">strictEnd, patterns, measures,</code> <code class="highlighter-rouge">after, subsets, allRows,</code> <code class="highlighter-rouge">partitionKeys, orderKeys,</code> <code class="highlighter-rouge">interval)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">match(pattern, strictStart,</code> <code class="highlighter-rouge">strictEnd, patterns, measures,</code> <code class="highlighter-rouge">after, subsets, allRows,</code> <code class="highlighter-rouge">partitionKeys, orderKeys,</code> <code class="highlighter-rouge">interval)</code>
+</td>
<td style="text-align: left">Creates a <a href="/javadocAggregate/org/apache/calcite/rel/core/Match.html">Match</a>.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Argument types:</p>
<ul>
- <li><code class="highlighter-rouge">expr</code>, <code class="highlighter-rouge">interval</code> <a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a></li>
- <li><code class="highlighter-rouge">expr...</code>, <code class="highlighter-rouge">requiredField...</code> Array of
-<a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a></li>
- <li><code class="highlighter-rouge">exprList</code>, <code class="highlighter-rouge">measureList</code>, <code class="highlighter-rouge">partitionKeys</code>, <code class="highlighter-rouge">orderKeys</code>,
+ <li>
+<code class="highlighter-rouge">expr</code>, <code class="highlighter-rouge">interval</code> <a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a>
+</li>
+ <li>
+<code class="highlighter-rouge">expr...</code>, <code class="highlighter-rouge">requiredField...</code> Array of
+<a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a>
+</li>
+ <li>
+<code class="highlighter-rouge">exprList</code>, <code class="highlighter-rouge">measureList</code>, <code class="highlighter-rouge">partitionKeys</code>, <code class="highlighter-rouge">orderKeys</code>,
<code class="highlighter-rouge">requiredFieldList</code> Iterable of
-<a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a></li>
- <li><code class="highlighter-rouge">fieldOrdinal</code> Ordinal of a field within its row (starting from 0)</li>
- <li><code class="highlighter-rouge">fieldName</code> Name of a field, unique within its row</li>
- <li><code class="highlighter-rouge">fieldName...</code> Array of String</li>
- <li><code class="highlighter-rouge">fieldNames</code> Iterable of String</li>
- <li><code class="highlighter-rouge">rowType</code> <a href="/javadocAggregate/org/apache/calcite/rel/type/RelDataType.html">RelDataType</a></li>
- <li><code class="highlighter-rouge">groupKey</code> <a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.GroupKey.html">RelBuilder.GroupKey</a></li>
- <li><code class="highlighter-rouge">aggCall...</code> Array of <a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.AggCall.html">RelBuilder.AggCall</a></li>
- <li><code class="highlighter-rouge">aggCallList</code> Iterable of <a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.AggCall.html">RelBuilder.AggCall</a></li>
- <li><code class="highlighter-rouge">value...</code> Array of Object</li>
- <li><code class="highlighter-rouge">value</code> Object</li>
- <li><code class="highlighter-rouge">tupleList</code> Iterable of List of <a href="/javadocAggregate/org/apache/calcite/rex/RexLiteral.html">RexLiteral</a></li>
- <li><code class="highlighter-rouge">all</code>, <code class="highlighter-rouge">distinct</code>, <code class="highlighter-rouge">strictStart</code>, <code class="highlighter-rouge">strictEnd</code>, <code class="highlighter-rouge">allRows</code> boolean</li>
- <li><code class="highlighter-rouge">alias</code> String</li>
- <li><code class="highlighter-rouge">correlationId</code> <a href="/javadocAggregate/org/apache/calcite/rel/core/CorrelationId.html">CorrelationId</a></li>
- <li><code class="highlighter-rouge">variablesSet</code> Iterable of
-<a href="/javadocAggregate/org/apache/calcite/rel/core/CorrelationId.html">CorrelationId</a></li>
- <li><code class="highlighter-rouge">varHolder</code> <a href="/javadocAggregate/org/apache/calcite/util/Holder.html">Holder</a> of <a href="/javadocAggregate/org/apache/calcite/rex/RexCorrelVariable.html">RexCorrelVariable</a></li>
- <li><code class="highlighter-rouge">patterns</code> Map whose key is String, value is <a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a></li>
- <li><code class="highlighter-rouge">subsets</code> Map whose key is String, value is a sorted set of String</li>
- <li><code class="highlighter-rouge">distribution</code> <a href="/javadocAggregate/org/apache/calcite/rel/RelDistribution.html">RelDistribution</a></li>
- <li><code class="highlighter-rouge">collation</code> <a href="/javadocAggregate/org/apache/calcite/rel/RelCollation.html">RelCollation</a></li>
- <li><code class="highlighter-rouge">operator</code> <a href="/javadocAggregate/org/apache/calcite/sql/SqlOperator.html">SqlOperator</a></li>
- <li><code class="highlighter-rouge">joinType</code> <a href="/javadocAggregate/org/apache/calcite/rel/core/JoinRelType.html">JoinRelType</a></li>
+<a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a>
+</li>
+ <li>
+<code class="highlighter-rouge">fieldOrdinal</code> Ordinal of a field within its row (starting from 0)</li>
+ <li>
+<code class="highlighter-rouge">fieldName</code> Name of a field, unique within its row</li>
+ <li>
+<code class="highlighter-rouge">fieldName...</code> Array of String</li>
+ <li>
+<code class="highlighter-rouge">fieldNames</code> Iterable of String</li>
+ <li>
+<code class="highlighter-rouge">rowType</code> <a href="/javadocAggregate/org/apache/calcite/rel/type/RelDataType.html">RelDataType</a>
+</li>
+ <li>
+<code class="highlighter-rouge">groupKey</code> <a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.GroupKey.html">RelBuilder.GroupKey</a>
+</li>
+ <li>
+<code class="highlighter-rouge">aggCall...</code> Array of <a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.AggCall.html">RelBuilder.AggCall</a>
+</li>
+ <li>
+<code class="highlighter-rouge">aggCallList</code> Iterable of <a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.AggCall.html">RelBuilder.AggCall</a>
+</li>
+ <li>
+<code class="highlighter-rouge">value...</code> Array of Object</li>
+ <li>
+<code class="highlighter-rouge">value</code> Object</li>
+ <li>
+<code class="highlighter-rouge">tupleList</code> Iterable of List of <a href="/javadocAggregate/org/apache/calcite/rex/RexLiteral.html">RexLiteral</a>
+</li>
+ <li>
+<code class="highlighter-rouge">all</code>, <code class="highlighter-rouge">distinct</code>, <code class="highlighter-rouge">strictStart</code>, <code class="highlighter-rouge">strictEnd</code>, <code class="highlighter-rouge">allRows</code> boolean</li>
+ <li>
+<code class="highlighter-rouge">alias</code> String</li>
+ <li>
+<code class="highlighter-rouge">correlationId</code> <a href="/javadocAggregate/org/apache/calcite/rel/core/CorrelationId.html">CorrelationId</a>
+</li>
+ <li>
+<code class="highlighter-rouge">variablesSet</code> Iterable of
+<a href="/javadocAggregate/org/apache/calcite/rel/core/CorrelationId.html">CorrelationId</a>
+</li>
+ <li>
+<code class="highlighter-rouge">varHolder</code> <a href="/javadocAggregate/org/apache/calcite/util/Holder.html">Holder</a> of <a href="/javadocAggregate/org/apache/calcite/rex/RexCorrelVariable.html">RexCorrelVariable</a>
+</li>
+ <li>
+<code class="highlighter-rouge">patterns</code> Map whose key is String, value is <a href="/javadocAggregate/org/apache/calcite/rex/RexNode.html">RexNode</a>
+</li>
+ <li>
+<code class="highlighter-rouge">subsets</code> Map whose key is String, value is a sorted set of String</li>
+ <li>
+<code class="highlighter-rouge">distribution</code> <a href="/javadocAggregate/org/apache/calcite/rel/RelDistribution.html">RelDistribution</a>
+</li>
+ <li>
+<code class="highlighter-rouge">collation</code> <a href="/javadocAggregate/org/apache/calcite/rel/RelCollation.html">RelCollation</a>
+</li>
+ <li>
+<code class="highlighter-rouge">operator</code> <a href="/javadocAggregate/org/apache/calcite/sql/SqlOperator.html">SqlOperator</a>
+</li>
+ <li>
+<code class="highlighter-rouge">joinType</code> <a href="/javadocAggregate/org/apache/calcite/rel/core/JoinRelType.html">JoinRelType</a>
+</li>
</ul>
<p>The builder methods perform various optimizations, including:</p>
<ul>
- <li><code class="highlighter-rouge">project</code> returns its input if asked to project all columns in order</li>
- <li><code class="highlighter-rouge">filter</code> flattens the condition (so an <code class="highlighter-rouge">AND</code> and <code class="highlighter-rouge">OR</code> may have more than 2 children),
+ <li>
+<code class="highlighter-rouge">project</code> returns its input if asked to project all columns in order</li>
+ <li>
+<code class="highlighter-rouge">filter</code> flattens the condition (so an <code class="highlighter-rouge">AND</code> and <code class="highlighter-rouge">OR</code> may have more than 2 children),
simplifies (converting say <code class="highlighter-rouge">x = 1 AND TRUE</code> to <code class="highlighter-rouge">x = 1</code>)</li>
- <li>If you apply <code class="highlighter-rouge">sort</code> then <code class="highlighter-rouge">limit</code>, the effect is as if you had called <code class="highlighter-rouge">sortLimit</code></li>
+ <li>If you apply <code class="highlighter-rouge">sort</code> then <code class="highlighter-rouge">limit</code>, the effect is as if you had called <code class="highlighter-rouge">sortLimit</code>
+</li>
</ul>
<p>There are annotation methods that add information to the top relational
expression on the stack:</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -535,11 +606,11 @@ expression on the stack:</p>
<td style="text-align: left">Creates a correlation variable referencing the top relational expression</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="stack-methods">Stack methods</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -564,7 +635,7 @@ expression on the stack:</p>
<td style="text-align: left">Returns the relational expression most recently put onto the stack, but does not remove it</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="scalar-expression-methods">Scalar expression methods</h4>
@@ -575,7 +646,7 @@ expression on the stack:</p>
returns a reference to the “DEPTNO” field of the relational expression just
added to the stack.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -632,15 +703,21 @@ added to the stack.</p>
<td style="text-align: left">List of expressions, <code class="highlighter-rouge">exprList</code>, such that <code class="highlighter-rouge">sort(exprList)</code> would replicate collation</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">call(op, expr...)</code><br /><code class="highlighter-rouge">call(op, exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">call(op, expr...)</code><br><code class="highlighter-rouge">call(op, exprList)</code>
+</td>
<td style="text-align: left">Call to a function or operator</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">and(expr...)</code><br /><code class="highlighter-rouge">and(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">and(expr...)</code><br><code class="highlighter-rouge">and(exprList)</code>
+</td>
<td style="text-align: left">Logical AND. Flattens nested ANDs, and optimizes cases involving TRUE and FALSE.</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">or(expr...)</code><br /><code class="highlighter-rouge">or(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">or(expr...)</code><br><code class="highlighter-rouge">or(exprList)</code>
+</td>
<td style="text-align: left">Logical OR. Flattens nested ORs, and optimizes cases involving TRUE and FALSE.</td>
</tr>
<tr>
@@ -664,7 +741,9 @@ added to the stack.</p>
<td style="text-align: left">Renames an expression (only valid as an argument to <code class="highlighter-rouge">project</code>)</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">cast(expr, typeName)</code><br /><code class="highlighter-rouge">cast(expr, typeName, precision)</code><br /><code class="highlighter-rouge">cast(expr, typeName, precision, scale)</code><br /></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">cast(expr, typeName)</code><br><code class="highlighter-rouge">cast(expr, typeName, precision)</code><br><code class="highlighter-rouge">cast(expr, typeName, precision, scale)</code><br>
+</td>
<td style="text-align: left">Converts an expression to a given type</td>
</tr>
<tr>
@@ -684,7 +763,7 @@ added to the stack.</p>
<td style="text-align: left">Reference to <code class="highlighter-rouge">input</code>th (0-based) relational input of a <code class="highlighter-rouge">TableFunctionScan</code> with <code class="highlighter-rouge">n</code> inputs (see <code class="highlighter-rouge">functionScan</code>)</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="sub-query-methods">Sub-query methods</h4>
@@ -700,7 +779,7 @@ and returns a <code class="highlighter-rouge">RelNode</code>. You typically impl
calls your code with a <code class="highlighter-rouge">RelBuilder</code> that has the correct context, and your code
returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub-query.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -714,23 +793,28 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">arrayQuery(relFn)</code></td>
- <td style="text-align: left">Returns the rows of a sub-query as an <code class="highlighter-rouge">ARRAY</code></td>
+ <td style="text-align: left">Returns the rows of a sub-query as an <code class="highlighter-rouge">ARRAY</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">exists(relFn)</code></td>
<td style="text-align: left">Tests whether sub-query is non-empty</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">in(expr, relFn)</code><br /><code class="highlighter-rouge">in(exprList, relFn)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">in(expr, relFn)</code><br><code class="highlighter-rouge">in(exprList, relFn)</code>
+</td>
<td style="text-align: left">Tests whether a value occurs in a sub-query</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">mapQuery(relFn)</code></td>
- <td style="text-align: left">Returns the rows of a sub-query as a <code class="highlighter-rouge">MAP</code></td>
+ <td style="text-align: left">Returns the rows of a sub-query as a <code class="highlighter-rouge">MAP</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">multisetQuery(relFn)</code></td>
- <td style="text-align: left">Returns the rows of a sub-query as a <code class="highlighter-rouge">MULTISET</code></td>
+ <td style="text-align: left">Returns the rows of a sub-query as a <code class="highlighter-rouge">MULTISET</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">scalarQuery(relFn)</code></td>
@@ -745,13 +829,13 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
<td style="text-align: left">Returns whether the rows of a sub-query are unique</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="pattern-methods">Pattern methods</h4>
<p>The following methods return patterns for use in <code class="highlighter-rouge">match</code>.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -780,14 +864,14 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
<td style="text-align: left">Excludes a pattern</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="group-key-methods">Group key methods</h4>
<p>The following methods return a
<a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.GroupKey.html">RelBuilder.GroupKey</a>.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -796,7 +880,9 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
</thead>
<tbody>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">groupKey(fieldName...)</code><br /><code class="highlighter-rouge">groupKey(fieldOrdinal...)</code><br /><code class="highlighter-rouge">groupKey(expr...)</code><br /><code class="highlighter-rouge">groupKey(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">groupKey(fieldName...)</code><br><code class="highlighter-rouge">groupKey(fieldOrdinal...)</code><br><code class="highlighter-rouge">groupKey(expr...)</code><br><code class="highlighter-rouge">groupKey(exprList)</code>
+</td>
<td style="text-align: left">Creates a group key of the given expressions</td>
</tr>
<tr>
@@ -808,14 +894,14 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
<td style="text-align: left">Creates a group key of the given input columns, with multiple grouping sets if <code class="highlighter-rouge">bitSets</code> is specified</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="aggregate-call-methods">Aggregate call methods</h4>
<p>The following methods return an
<a href="/javadocAggregate/org/apache/calcite/tools/RelBuilder.AggCall.html">RelBuilder.AggCall</a>.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -824,11 +910,15 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
</thead>
<tbody>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">aggregateCall(op, expr...)</code><br /><code class="highlighter-rouge">aggregateCall(op, exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">aggregateCall(op, expr...)</code><br><code class="highlighter-rouge">aggregateCall(op, exprList)</code>
+</td>
<td style="text-align: left">Creates a call to a given aggregate function</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">count([ distinct, alias, ] expr...)</code><br /><code class="highlighter-rouge">count([ distinct, alias, ] exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">count([ distinct, alias, ] expr...)</code><br><code class="highlighter-rouge">count([ distinct, alias, ] exprList)</code>
+</td>
<td style="text-align: left">Creates a call to the <code class="highlighter-rouge">COUNT</code> aggregate function</td>
</tr>
<tr>
@@ -848,11 +938,11 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
<td style="text-align: left">Creates a call to the <code class="highlighter-rouge">MAX</code> aggregate function</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>To further modify the <code class="highlighter-rouge">AggCall</code>, call its methods:</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -862,7 +952,8 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
<tbody>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">approximate(approximate)</code></td>
- <td style="text-align: left">Allows approximate value for the aggregate of <code class="highlighter-rouge">approximate</code></td>
+ <td style="text-align: left">Allows approximate value for the aggregate of <code class="highlighter-rouge">approximate</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">as(alias)</code></td>
@@ -874,18 +965,23 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">distinct(distinct)</code></td>
- <td style="text-align: left">Eliminates duplicate values before aggregating if <code class="highlighter-rouge">distinct</code></td>
+ <td style="text-align: left">Eliminates duplicate values before aggregating if <code class="highlighter-rouge">distinct</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">filter(expr)</code></td>
<td style="text-align: left">Filters rows before aggregating (see SQL <code class="highlighter-rouge">FILTER (WHERE ...)</code>)</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">sort(expr...)</code><br /><code class="highlighter-rouge">sort(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">sort(expr...)</code><br><code class="highlighter-rouge">sort(exprList)</code>
+</td>
<td style="text-align: left">Sorts rows before aggregating (see SQL <code class="highlighter-rouge">WITHIN GROUP</code>)</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">unique(expr...)</code><br /><code class="highlighter-rouge">unique(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">unique(expr...)</code><br><code class="highlighter-rouge">unique(exprList)</code>
+</td>
<td style="text-align: left">Makes rows unique before aggregating (see SQL <code class="highlighter-rouge">WITHIN DISTINCT</code>)</td>
</tr>
<tr>
@@ -893,7 +989,7 @@ returns the <code class="highlighter-rouge">RelNode</code> that is to be the sub
<td style="text-align: left">Converts this <code class="highlighter-rouge">AggCall</code> into a windowed aggregate (see <code class="highlighter-rouge">OverCall</code> below)</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="windowed-aggregate-call-methods">Windowed aggregate call methods</h4>
@@ -904,7 +1000,7 @@ call and then call its <code class="highlighter-rouge">over()</code> method, for
<p>To further modify the <code class="highlighter-rouge">OverCall</code>, call its methods:</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Method</th>
@@ -914,42 +1010,54 @@ call and then call its <code class="highlighter-rouge">over()</code> method, for
<tbody>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rangeUnbounded()</code></td>
- <td style="text-align: left">Creates an unbounded range-based window, <code class="highlighter-rouge">RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING</code></td>
+ <td style="text-align: left">Creates an unbounded range-based window, <code class="highlighter-rouge">RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rangeFrom(lower)</code></td>
- <td style="text-align: left">Creates a range-based window bounded below, <code class="highlighter-rouge">RANGE BETWEEN lower AND CURRENT ROW</code></td>
+ <td style="text-align: left">Creates a range-based window bounded below, <code class="highlighter-rouge">RANGE BETWEEN lower AND CURRENT ROW</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rangeTo(upper)</code></td>
- <td style="text-align: left">Creates a range-based window bounded above, <code class="highlighter-rouge">RANGE BETWEEN CURRENT ROW AND upper</code></td>
+ <td style="text-align: left">Creates a range-based window bounded above, <code class="highlighter-rouge">RANGE BETWEEN CURRENT ROW AND upper</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rangeBetween(lower, upper)</code></td>
- <td style="text-align: left">Creates a range-based window, <code class="highlighter-rouge">RANGE BETWEEN lower AND upper</code></td>
+ <td style="text-align: left">Creates a range-based window, <code class="highlighter-rouge">RANGE BETWEEN lower AND upper</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rowsUnbounded()</code></td>
- <td style="text-align: left">Creates an unbounded row-based window, <code class="highlighter-rouge">ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING</code></td>
+ <td style="text-align: left">Creates an unbounded row-based window, <code class="highlighter-rouge">ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rowsFrom(lower)</code></td>
- <td style="text-align: left">Creates a row-based window bounded below, <code class="highlighter-rouge">ROWS BETWEEN lower AND CURRENT ROW</code></td>
+ <td style="text-align: left">Creates a row-based window bounded below, <code class="highlighter-rouge">ROWS BETWEEN lower AND CURRENT ROW</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rowsTo(upper)</code></td>
- <td style="text-align: left">Creates a row-based window bounded above, <code class="highlighter-rouge">ROWS BETWEEN CURRENT ROW AND upper</code></td>
+ <td style="text-align: left">Creates a row-based window bounded above, <code class="highlighter-rouge">ROWS BETWEEN CURRENT ROW AND upper</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">rowsBetween(lower, upper)</code></td>
- <td style="text-align: left">Creates a rows-based window, <code class="highlighter-rouge">ROWS BETWEEN lower AND upper</code></td>
+ <td style="text-align: left">Creates a rows-based window, <code class="highlighter-rouge">ROWS BETWEEN lower AND upper</code>
+</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">partitionBy(expr...)</code><br /><code class="highlighter-rouge">partitionBy(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">partitionBy(expr...)</code><br><code class="highlighter-rouge">partitionBy(exprList)</code>
+</td>
<td style="text-align: left">Partitions the window on the given expressions (see SQL <code class="highlighter-rouge">PARTITION BY</code>)</td>
</tr>
<tr>
- <td style="text-align: left"><code class="highlighter-rouge">orderBy(expr...)</code><br /><code class="highlighter-rouge">sort(exprList)</code></td>
+ <td style="text-align: left">
+<code class="highlighter-rouge">orderBy(expr...)</code><br><code class="highlighter-rouge">sort(exprList)</code>
+</td>
<td style="text-align: left">Sorts the rows in the window (see SQL <code class="highlighter-rouge">ORDER BY</code>)</td>
</tr>
<tr>
@@ -962,14 +1070,16 @@ call and then call its <code class="highlighter-rouge">over()</code> method, for
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">as(alias)</code></td>
- <td style="text-align: left">Assigns a column alias (see SQL <code class="highlighter-rouge">AS</code>) and converts this <code class="highlighter-rouge">OverCall</code> to a <code class="highlighter-rouge">RexNode</code></td>
+ <td style="text-align: left">Assigns a column alias (see SQL <code class="highlighter-rouge">AS</code>) and converts this <code class="highlighter-rouge">OverCall</code> to a <code class="highlighter-rouge">RexNode</code>
+</td>
</tr>
<tr>
<td style="text-align: left"><code class="highlighter-rouge">toRex()</code></td>
- <td style="text-align: left">Converts this <code class="highlighter-rouge">OverCall</code> to a <code class="highlighter-rouge">RexNode</code></td>
+ <td style="text-align: left">Converts this <code class="highlighter-rouge">OverCall</code> to a <code class="highlighter-rouge">RexNode</code>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
@@ -1249,11 +1359,11 @@ call and then call its <code class="highlighter-rouge">over()</code> method, for
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/api/index.html b/docs/api/index.html
index f65afe3..1b78087 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html>
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>API</title>
<meta http-equiv="refresh" content="0;url=/javadocAggregate">
diff --git a/docs/avatica_json_reference.html b/docs/avatica_json_reference.html
index 3b97c56..72f5d4a 100644
--- a/docs/avatica_json_reference.html
+++ b/docs/avatica_json_reference.html
@@ -1,11 +1,16 @@
<!DOCTYPE html>
<html lang="en-US">
- <meta charset="utf-8">
- <title>Redirecting…</title>
+ <head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+ <title>Redirecting…</title>
<link rel="canonical" href="https://calcite.apache.org/avatica/docs/json_reference.html">
<meta http-equiv="refresh" content="0; url=https://calcite.apache.org/avatica/docs/json_reference.html">
<meta name="robots" content="noindex">
- <h1>Redirecting…</h1>
+ </head>
+<body>
+<h1>Redirecting…</h1>
<a href="https://calcite.apache.org/avatica/docs/json_reference.html">Click here if you are not redirected.</a>
<script>location="https://calcite.apache.org/avatica/docs/json_reference.html"</script>
+</body>
</html>
diff --git a/docs/avatica_overview.html b/docs/avatica_overview.html
index e19e231..09686d6 100644
--- a/docs/avatica_overview.html
+++ b/docs/avatica_overview.html
@@ -1,11 +1,16 @@
<!DOCTYPE html>
<html lang="en-US">
- <meta charset="utf-8">
- <title>Redirecting…</title>
+ <head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+ <title>Redirecting…</title>
<link rel="canonical" href="https://calcite.apache.org/avatica/docs/index.html">
<meta http-equiv="refresh" content="0; url=https://calcite.apache.org/avatica/docs/index.html">
<meta name="robots" content="noindex">
- <h1>Redirecting…</h1>
+ </head>
+<body>
+<h1>Redirecting…</h1>
<a href="https://calcite.apache.org/avatica/docs/index.html">Click here if you are not redirected.</a>
<script>location="https://calcite.apache.org/avatica/docs/index.html"</script>
+</body>
</html>
diff --git a/docs/avatica_protobuf_reference.html b/docs/avatica_protobuf_reference.html
index 1f66584..99a94df 100644
--- a/docs/avatica_protobuf_reference.html
+++ b/docs/avatica_protobuf_reference.html
@@ -1,11 +1,16 @@
<!DOCTYPE html>
<html lang="en-US">
- <meta charset="utf-8">
- <title>Redirecting…</title>
+ <head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+ <title>Redirecting…</title>
<link rel="canonical" href="https://calcite.apache.org/avatica/docs/protobuf_reference.html">
<meta http-equiv="refresh" content="0; url=https://calcite.apache.org/avatica/docs/protobuf_reference.html">
<meta name="robots" content="noindex">
- <h1>Redirecting…</h1>
+ </head>
+<body>
+<h1>Redirecting…</h1>
<a href="https://calcite.apache.org/avatica/docs/protobuf_reference.html">Click here if you are not redirected.</a>
<script>location="https://calcite.apache.org/avatica/docs/protobuf_reference.html"</script>
+</body>
</html>
diff --git a/docs/avatica_roadmap.html b/docs/avatica_roadmap.html
index 63d2941..d7eba35 100644
--- a/docs/avatica_roadmap.html
+++ b/docs/avatica_roadmap.html
@@ -1,11 +1,16 @@
<!DOCTYPE html>
<html lang="en-US">
- <meta charset="utf-8">
- <title>Redirecting…</title>
+ <head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta charset="utf-8">
+ <title>Redirecting…</title>
<link rel="canonical" href="https://calcite.apache.org/avatica/docs/roadmap.html">
<meta http-equiv="refresh" content="0; url=https://calcite.apache.org/avatica/docs/roadmap.html">
<meta name="robots" content="noindex">
- <h1>Redirecting…</h1>
+ </head>
+<body>
+<h1>Redirecting…</h1>
<a href="https://calcite.apache.org/avatica/docs/roadmap.html">Click here if you are not redirected.</a>
<script>location="https://calcite.apache.org/avatica/docs/roadmap.html"</script>
+</body>
</html>
diff --git a/docs/cassandra_adapter.html b/docs/cassandra_adapter.html
index 7a456ae..ba26262 100644
--- a/docs/cassandra_adapter.html
+++ b/docs/cassandra_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Cassandra adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -462,11 +463,11 @@ prove useful.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/druid_adapter.html b/docs/druid_adapter.html
index 3bcecea..7ac388c 100644
--- a/docs/druid_adapter.html
+++ b/docs/druid_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Druid adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -224,8 +225,10 @@ see [<a href="https://issues.apache.org/jira/browse/CALCITE-1206">CALCITE-1206</
Currently there are two types:</p>
<ul>
- <li><code class="highlighter-rouge">hyperUnique</code> - HyperLogLog data sketch used to estimate the cardinality of a dimension</li>
- <li><code class="highlighter-rouge">thetaSketch</code> - Theta sketch used to also estimate the cardinality of a dimension,
+ <li>
+<code class="highlighter-rouge">hyperUnique</code> - HyperLogLog data sketch used to estimate the cardinality of a dimension</li>
+ <li>
+<code class="highlighter-rouge">thetaSketch</code> - Theta sketch used to also estimate the cardinality of a dimension,
but can be used to perform set operations as well.</li>
</ul>
@@ -636,11 +639,11 @@ and the two tables in Druid (<code class="highlighter-rouge">foodmart</code> and
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/elasticsearch_adapter.html b/docs/elasticsearch_adapter.html
index 4d8a5de..ee4bb78 100644
--- a/docs/elasticsearch_adapter.html
+++ b/docs/elasticsearch_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Elasticsearch adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -502,11 +503,11 @@ Also, types are not supported (this adapter only supports indices).</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/file_adapter.html b/docs/file_adapter.html
index e822c11..2f19789 100644
--- a/docs/file_adapter.html
+++ b/docs/file_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>File adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -666,11 +667,11 @@ files) and being able to form URLs dynamically to push down filters.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/geode_adapter.html b/docs/geode_adapter.html
index 3001c2f..225bc9e 100644
--- a/docs/geode_adapter.html
+++ b/docs/geode_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Apache Geode adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -207,13 +208,15 @@ syntax:</p>
about Geode adapter:</p>
<ul>
- <li><a href="https://www.slideshare.net/slideshow/embed_code/key/2Mil7I0ZPMLuJU">Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite</a>
+ <li>
+<a href="https://www.slideshare.net/slideshow/embed_code/key/2Mil7I0ZPMLuJU">Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite</a>
(GeodeSummit/SpringOne 2017)</li>
<li><a href="https://www.linkedin.com/pulse/access-apache-geode-gemfire-over-sqljdbc-christian-tzolov">Access Apache Geode/GemFire over SQL/JDBC</a></li>
<li><a href="https://www.linkedin.com/pulse/explore-your-geode-gemfire-data-from-within-intellij-tool-tzolov">Explore Geode & GemFire Data with IntelliJ SQL/Database tool</a></li>
<li><a href="https://www.linkedin.com/pulse/advanced-apache-geode-data-analytics-zeppelin-over-sqljdbc-tzolov">Advanced Apache Geode Data Analytics with Apache Zeppelin over SQL/JDBC</a></li>
<li><a href="https://www.linkedin.com/pulse/unified-access-geodegreenplum-christian-tzolov">Unified Access to Geode/Greenplum/…</a></li>
- <li><a href="https://schd.ws/hosted_files/apachebigdataeu2016/b6/ApacheCon2016ChristianTzolov.v3.pdf">Apache Calcite for Enabling SQL Access to NoSQL Data Systems such as Apache Geode</a>
+ <li>
+<a href="https://schd.ws/hosted_files/apachebigdataeu2016/b6/ApacheCon2016ChristianTzolov.v3.pdf">Apache Calcite for Enabling SQL Access to NoSQL Data Systems such as Apache Geode</a>
(ApacheCon Big Data, 2016)</li>
</ul>
@@ -526,11 +529,11 @@ prove useful.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/history.html b/docs/history.html
index ab79f6f..0f0d7b0 100644
--- a/docs/history.html
+++ b/docs/history.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>History</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -82,7 +83,8 @@
Downloads are available on the
<a href="/downloads/">downloads page</a>.</p>
-<h2 id="v1-29-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.29.0">1.29.0</a> / 2021-12-26</h2>
+<h2 id="v1-29-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.29.0">1.29.0</a> / 2021-12-26</h2>
<p>This release comes two months after <a href="#v1-28-0">1.28.0</a>,
contains contributions from 23 authors,
@@ -147,7 +149,8 @@ aggregate calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4551">CALCITE-4551</a>]
Reusing immutable metadata cache keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4131">CALCITE-4131</a>]
-The <code class="highlighter-rouge">XmlFunctions</code> exception handled by <code class="highlighter-rouge">System.out</code></li>
+The <code class="highlighter-rouge">XmlFunctions</code> exception handled by <code class="highlighter-rouge">System.out</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4875">CALCITE-4875</a>]
<code class="highlighter-rouge">NVL</code> function incorrectly changes nullability of its operands</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4844">CALCITE-4844</a>]
@@ -156,13 +159,16 @@ incorrect results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4846">CALCITE-4846</a>]
<code class="highlighter-rouge">IN</code>-list that includes <code class="highlighter-rouge">NULL</code> converted to <code class="highlighter-rouge">Values</code> throws exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4884">CALCITE-4884</a>]
-Provide a new constructor for <code class="highlighter-rouge">RelJsonWriter</code> to allow customized <code class="highlighter-rouge">JsonBuilder</code></li>
+Provide a new constructor for <code class="highlighter-rouge">RelJsonWriter</code> to allow customized <code class="highlighter-rouge">JsonBuilder</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4876">CALCITE-4876</a>]
JDBC adapter generates wrong SQL in Calcite dialect when <code class="highlighter-rouge">EnumerableIntersect</code>
-is followed by <code class="highlighter-rouge">EnumerableLimit</code></li>
+is followed by <code class="highlighter-rouge">EnumerableLimit</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4883">CALCITE-4883</a>]
When <code class="highlighter-rouge">Exchange</code> is created from externalized JSON, <code class="highlighter-rouge">RelDistribution</code> is not
-correctly set in its <code class="highlighter-rouge">traitSet</code></li>
+correctly set in its <code class="highlighter-rouge">traitSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4783">CALCITE-4783</a>]
<code class="highlighter-rouge">RelFieldTrimmer</code> incorrectly drops filter condition</li>
<li>Log plan after physical tweaks in new line</li>
@@ -170,16 +176,20 @@ correctly set in its <code class="highlighter-rouge">traitSet</code></li>
Remove deprecated method <code class="highlighter-rouge">RelBuilder.groupKey(ImmutableBitSet, ImmutableList)</code>
that clashes with newer API method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4928">CALCITE-4928</a>]
-Decouple Janino from <code class="highlighter-rouge">RelMetadataQuery</code></li>
+Decouple Janino from <code class="highlighter-rouge">RelMetadataQuery</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4932">CALCITE-4932</a>]
-Deprecate <code class="highlighter-rouge">JdbcCalc</code> and remove <code class="highlighter-rouge">JdbcCalcRule</code></li>
+Deprecate <code class="highlighter-rouge">JdbcCalc</code> and remove <code class="highlighter-rouge">JdbcCalcRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4894">CALCITE-4894</a>]
Materialized view rewriting fails for conjunctive top expressions in <code class="highlighter-rouge">SELECT</code>
clause</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4929">CALCITE-4929</a>]
Add default methods for <code class="highlighter-rouge">getDef</code> on metadata handlers</li>
- <li>Improve debug message in <code class="highlighter-rouge">IterativeRuleDriver</code></li>
- <li>Remove duplicate entries from <code class="highlighter-rouge">RelOptRules.CALC_RULES</code></li>
+ <li>Improve debug message in <code class="highlighter-rouge">IterativeRuleDriver</code>
+</li>
+ <li>Remove duplicate entries from <code class="highlighter-rouge">RelOptRules.CALC_RULES</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4906">CALCITE-4906</a>]
Wrong result for scalar sub-query (single value aggregation) from empty input</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4941">CALCITE-4941</a>]
@@ -188,12 +198,14 @@ Wrong result for scalar sub-query (single value aggregation) from empty input</l
<code class="highlighter-rouge">MAP</code> type in user-defined function (UDF) cannot be created from externalized
JSON</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4946">CALCITE-4946</a>]
-Add method <code class="highlighter-rouge">RelBuilder.size()</code></li>
+Add method <code class="highlighter-rouge">RelBuilder.size()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4704">CALCITE-4704</a>]
Log produced plan after rule application using explain formatting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4700">CALCITE-4700</a>]
<code class="highlighter-rouge">AggregateUnionTransposeRule</code> produces wrong <code class="highlighter-rouge">groupingSets</code> for the top
-<code class="highlighter-rouge">Aggregate</code></li>
+<code class="highlighter-rouge">Aggregate</code>
+</li>
</ul>
<h4 id="build-1-29-0">Build and test suite</h4>
@@ -201,7 +213,8 @@ Log produced plan after rule application using explain formatting</li>
<ul>
<li>Exclude kotlin-stdlib from <code class="highlighter-rouge">:core</code> runtime dependencies</li>
<li>Clarify why squash commits option in GitHub PR merge is disabled</li>
- <li>Keep backslash when autoformatting <code class="highlighter-rouge">...\n" +</code></li>
+ <li>Keep backslash when autoformatting <code class="highlighter-rouge">...\n" +</code>
+</li>
<li>Use GitHub Action concurrency feature to cancel stale CI executions</li>
<li>Set timeout for running Druid tests in GitHub CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4917">CALCITE-4917</a>]
@@ -238,7 +251,8 @@ Upgrade log4j2 version 2.17.0</li>
<li>Site: Fix typo in reference.md</li>
</ul>
-<h2 id="v1-28-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.28.0">1.28.0</a> / 2021-10-19</h2>
+<h2 id="v1-28-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.28.0">1.28.0</a> / 2021-10-19</h2>
<p>This release comes four months after <a href="#v1-27-0">1.27.0</a>,
contains contributions from 38 authors,
@@ -313,7 +327,8 @@ YuKong.</p>
[<a href="https://issues.apache.org/jira/browse/CALCITE-4787">CALCITE-4787</a>]
added <code class="highlighter-rouge">class Immutables</code> and deprecated <code class="highlighter-rouge">ImmutableBeans</code>; in 1.29,
[<a href="https://issues.apache.org/jira/browse/CALCITE-4839">CALCITE-4839</a>]
-will remove <code class="highlighter-rouge">ImmutableBeans</code></li>
+will remove <code class="highlighter-rouge">ImmutableBeans</code>
+</li>
<li>In 1.28,
[<a href="https://issues.apache.org/jira/browse/CALCITE-4795">CALCITE-4795</a>]
deprecated the <code class="highlighter-rouge">operands</code> field of <code class="highlighter-rouge">SqlBasicCall</code>. Before 1.29, we will make
@@ -335,7 +350,8 @@ configurable</li>
Parse SQL with BigQuery-style quoted identifiers and character literals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4805">CALCITE-4805</a>]
Calcite should convert a small <code class="highlighter-rouge">IN</code>-list as if the user had written <code class="highlighter-rouge">OR</code>, even
-if the <code class="highlighter-rouge">IN</code>-list contains <code class="highlighter-rouge">NULL</code></li>
+if the <code class="highlighter-rouge">IN</code>-list contains <code class="highlighter-rouge">NULL</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4779">CALCITE-4779</a>]
If <code class="highlighter-rouge">GROUP BY</code> clause contains literal, materialized view recognition fails</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4486">CALCITE-4486</a>]
@@ -351,19 +367,23 @@ Materialized view recognition fails for equivalent predicates</li>
Implement <code class="highlighter-rouge">SOME <></code> sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4726">CALCITE-4726</a>]
Support aggregate calls with a <code class="highlighter-rouge">FILTER</code> clause in
-<code class="highlighter-rouge">AggregateExpandWithinDistinctRule</code></li>
+<code class="highlighter-rouge">AggregateExpandWithinDistinctRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4748">CALCITE-4748</a>]
If there are duplicate <code class="highlighter-rouge">GROUPING SETS</code>, Calcite should return duplicate rows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4665">CALCITE-4665</a>]
-Allow <code class="highlighter-rouge">Aggregate.groupKey</code> to be a strict superset of <code class="highlighter-rouge">Aggregate.groupKeys</code></li>
+Allow <code class="highlighter-rouge">Aggregate.groupKey</code> to be a strict superset of <code class="highlighter-rouge">Aggregate.groupKeys</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4724">CALCITE-4724</a>]
In JDBC adapter for ClickHouse, implement <code class="highlighter-rouge">Values</code> by generating <code class="highlighter-rouge">SELECT</code>
-without <code class="highlighter-rouge">FROM</code></li>
+without <code class="highlighter-rouge">FROM</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4673">CALCITE-4673</a>]
If arguments to a table function are correlation variables, <code class="highlighter-rouge">SqlToRelConverter</code>
should eliminate duplicate variables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4642">CALCITE-4642</a>]
-Use <code class="highlighter-rouge">RelDataTypeSystem</code> from <code class="highlighter-rouge">Config</code> in <code class="highlighter-rouge">Planner</code></li>
+Use <code class="highlighter-rouge">RelDataTypeSystem</code> from <code class="highlighter-rouge">Config</code> in <code class="highlighter-rouge">Planner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4661">CALCITE-4661</a>]
Add <code class="highlighter-rouge">MODE</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4420">CALCITE-4420</a>]
@@ -380,7 +400,8 @@ Exasol dialect implementation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4158">CALCITE-4158</a>]
In generated SQL, “<code class="highlighter-rouge">*</code>” should be followed by space</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4606">CALCITE-4606</a>]
-In Elasticsearch adapter, translate <code class="highlighter-rouge">SEARCH</code> call to <code class="highlighter-rouge">termsQuery</code></li>
+In Elasticsearch adapter, translate <code class="highlighter-rouge">SEARCH</code> call to <code class="highlighter-rouge">termsQuery</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4499">CALCITE-4499</a>]
<code class="highlighter-rouge">FilterJoinRule</code> misses opportunity to push <code class="highlighter-rouge">Filter</code> to <code class="highlighter-rouge">SemiJoin</code> input</li>
</ul>
@@ -395,7 +416,8 @@ always empty</li>
Simplify <code class="highlighter-rouge">JaninoRelMetadataProvider</code> API for binding methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4740">CALCITE-4740</a>]
JDBC adapter generates incorrect <code class="highlighter-rouge">HAVING</code> clause in BigQuery dialect</li>
- <li>Refactor: Introduce field <code class="highlighter-rouge">SqlUtil.GENERATED_EXPR_ALIAS_PREFIX</code></li>
+ <li>Refactor: Introduce field <code class="highlighter-rouge">SqlUtil.GENERATED_EXPR_ALIAS_PREFIX</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4616">CALCITE-4616</a>]
<code class="highlighter-rouge">AggregateUnionTransposeRule</code> causes row type mismatch when some inputs have
unique grouping key</li>
@@ -412,11 +434,14 @@ In Avatica, support columns of type <code class="highlighter-rouge">NULL</code>
<code class="highlighter-rouge">ClassCastException</code> retrieving from an <code class="highlighter-rouge">ARRAY</code> that has <code class="highlighter-rouge">DATE</code>, <code class="highlighter-rouge">TIME</code> or
<code class="highlighter-rouge">TIMESTAMP</code> elements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3338">CALCITE-3338</a>]
-Error with <code class="highlighter-rouge">executeBatch</code> and <code class="highlighter-rouge">preparedStatement</code> when using <code class="highlighter-rouge">RemoteMeta</code></li>
+Error with <code class="highlighter-rouge">executeBatch</code> and <code class="highlighter-rouge">preparedStatement</code> when using <code class="highlighter-rouge">RemoteMeta</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4811">CALCITE-4811</a>]
-<code class="highlighter-rouge">Coalesce(null, row)</code> fails with <code class="highlighter-rouge">NullPointerException</code></li>
+<code class="highlighter-rouge">Coalesce(null, row)</code> fails with <code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3583">CALCITE-3583</a>]
-<code class="highlighter-rouge">Exchange</code> operator deserialize fails when the <code class="highlighter-rouge">RexInput</code> has no <code class="highlighter-rouge">RelCollation</code></li>
+<code class="highlighter-rouge">Exchange</code> operator deserialize fails when the <code class="highlighter-rouge">RexInput</code> has no <code class="highlighter-rouge">RelCollation</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3745">CALCITE-3745</a>]
<code class="highlighter-rouge">CompileException</code> in <code class="highlighter-rouge">UnitCompiler</code> when using multiple class loaders</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4834">CALCITE-4834</a>]
@@ -432,21 +457,26 @@ Replace <code class="highlighter-rouge">ImmutableBeans</code> with <code class="
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4830">CALCITE-4830</a>]
Remove remaining uses of <code class="highlighter-rouge">ImmutableBeans</code> and deprecate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4825">CALCITE-4825</a>]
-Move remaining core/main off of <code class="highlighter-rouge">ImmutableBeans</code></li>
+Move remaining core/main off of <code class="highlighter-rouge">ImmutableBeans</code>
+</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4532">CALCITE-4532</a>]
-Correct code generated for primitive-object <code class="highlighter-rouge">ConstantExpression</code></li>
+Correct code generated for primitive-object <code class="highlighter-rouge">ConstantExpression</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3409">CALCITE-3409</a>]
-Add a method in <code class="highlighter-rouge">RelOptMaterializations</code> to allow registering <code class="highlighter-rouge">UnifyRule</code></li>
+Add a method in <code class="highlighter-rouge">RelOptMaterializations</code> to allow registering <code class="highlighter-rouge">UnifyRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4773">CALCITE-4773</a>]
<code class="highlighter-rouge">RelDecorrelator</code>’s <code class="highlighter-rouge">RemoveSingleAggregateRule</code> can produce result with wrong
row type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4544">CALCITE-4544</a>]
Deprecate <code class="highlighter-rouge">Metadata</code> API backed by Java Reflection</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4772">CALCITE-4772</a>]
-<code class="highlighter-rouge">PushProjector</code> should retain alias when handling <code class="highlighter-rouge">RexCall</code></li>
- <li>Remove obsolete/misleading comments in <code class="highlighter-rouge">RelOptUtil#classifyFilters</code></li>
+<code class="highlighter-rouge">PushProjector</code> should retain alias when handling <code class="highlighter-rouge">RexCall</code>
+</li>
+ <li>Remove obsolete/misleading comments in <code class="highlighter-rouge">RelOptUtil#classifyFilters</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4784">CALCITE-4784</a>]
Ensure <code class="highlighter-rouge">Correlate#requiredColumns</code> is subset of columns in left relation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4177">CALCITE-4177</a>]
@@ -465,7 +495,8 @@ Using function in <code class="highlighter-rouge">PARTITION BY</code> list of <c
exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4734">CALCITE-4734</a>]
If there are duplicate <code class="highlighter-rouge">RexNode</code> in <code class="highlighter-rouge">MutableCalc</code>, <code class="highlighter-rouge">SubstitutionVisitor</code> should
-return right rebuild <code class="highlighter-rouge">RexNode</code></li>
+return right rebuild <code class="highlighter-rouge">RexNode</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4741">CALCITE-4741</a>]
<code class="highlighter-rouge">AbstractRelNode#getId</code> can overflow into a negative value, causing
<code class="highlighter-rouge">CompileException</code> in the <code class="highlighter-rouge">implement</code> methods of certain <code class="highlighter-rouge">Enumerable</code>
@@ -479,7 +510,8 @@ type</li>
JDBC adapter generates casts exceeding Redshift’s data types bounds</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4485">CALCITE-4485</a>]
JDBC adapter generates invalid SQL when one of the joins is <code class="highlighter-rouge">INNER JOIN ... ON
-TRUE</code></li>
+TRUE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4623">CALCITE-4623</a>]
<code class="highlighter-rouge">SemiJoinRule</code> should not match semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4692">CALCITE-4692</a>]
@@ -497,7 +529,8 @@ parameter</li>
<code class="highlighter-rouge">VolcanoPlanner</code> fails to recognize transformation rule correctly in the
top-down mode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4655">CALCITE-4655</a>]
-<code class="highlighter-rouge">JdbcTable.scan</code> throws <code class="highlighter-rouge">NullPointerException</code></li>
+<code class="highlighter-rouge">JdbcTable.scan</code> throws <code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4636">CALCITE-4636</a>]
Switch out of agg mode when constructing <code class="highlighter-rouge">RelCollation</code> for aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4619">CALCITE-4619</a>]
@@ -512,17 +545,21 @@ Switch out of agg mode when constructing <code class="highlighter-rouge">RelColl
Gradle build fails due to deprecated metadata APIs</li>
<li>Use jdk16 instead of jdk17 since jdk17 is not yet available at AppVeyor</li>
<li>Fix string reference to <code class="highlighter-rouge">HrSchema</code> in <code class="highlighter-rouge">MaterializationTest</code> with
-<code class="highlighter-rouge">HrSchema.class.getName()</code></li>
+<code class="highlighter-rouge">HrSchema.class.getName()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4829">CALCITE-4829</a>]
Bump Gradle to 7.2 and test with Java 17 at GitHub Actions</li>
- <li>Fix <code class="highlighter-rouge">ErrorProne</code> violations in <code class="highlighter-rouge">testkit</code></li>
+ <li>Fix <code class="highlighter-rouge">ErrorProne</code> violations in <code class="highlighter-rouge">testkit</code>
+</li>
<li>Add missing <code class="highlighter-rouge">@Override</code> annotations</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4821">CALCITE-4821</a>]
-Move utility test classes into <code class="highlighter-rouge">calcite-testkit</code> and unpublish <code class="highlighter-rouge">-test.jar</code></li>
+Move utility test classes into <code class="highlighter-rouge">calcite-testkit</code> and unpublish <code class="highlighter-rouge">-test.jar</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4823">CALCITE-4823</a>]
Suppress warnings for <code class="highlighter-rouge">java.security.AccessController</code> deprecation</li>
<li>Skip <code class="highlighter-rouge">EqualsHashCode</code> verification in <code class="highlighter-rouge">ErrorProne</code>: it is already verified with
-<code class="highlighter-rouge">Checkstyle</code></li>
+<code class="highlighter-rouge">Checkstyle</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4790">CALCITE-4790</a>]
Make Gradle pass the <code class="highlighter-rouge">user.timezone</code> property to the test JVM</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4793">CALCITE-4793</a>]
@@ -533,7 +570,8 @@ the user timezone</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4789">CALCITE-4789</a>]
Build is broken on Guava versions < 21</li>
<li>Enable <code class="highlighter-rouge">JdbcTest#testBushy</code> and update expected plan</li>
- <li><code class="highlighter-rouge">RelOptRulesTest</code> improvements</li>
+ <li>
+<code class="highlighter-rouge">RelOptRulesTest</code> improvements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4312">CALCITE-4312</a>]
Improve content of <code class="highlighter-rouge">prepareVote</code> draft email</li>
</ul>
@@ -564,7 +602,8 @@ Release Calcite 1.28.0</li>
Broken CI links on develop web page</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4796">CALCITE-4796</a>]
Travis links in <code class="highlighter-rouge">README.md</code> should point to <code class="highlighter-rouge">app.travis-ci.com</code> instead of
-<code class="highlighter-rouge">travis-ci.org</code></li>
+<code class="highlighter-rouge">travis-ci.org</code>
+</li>
<li>Site: HTTP to HTTPS redirection is not working</li>
<li>Site: Add zabetak’s pronouns</li>
<li>Site: Add michaelmior’s pronouns</li>
@@ -572,12 +611,14 @@ Travis links in <code class="highlighter-rouge">README.md</code> should point to
<li>Site is not published due to bad yaml file suffix</li>
<li>Site: Add upcoming talk at ApacheCon’21 and info about tutorial at BOSS21</li>
<li>Site: Sort table of aggregate functions</li>
- <li>Site: Deploy using <code class="highlighter-rouge">.asf.yml</code></li>
+ <li>Site: Deploy using <code class="highlighter-rouge">.asf.yml</code>
+</li>
<li>Site: Add Vladimir Ozerov as committer</li>
<li>Site: Remove nowadays redundant minified javascript files</li>
</ul>
-<h2 id="v1-27-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.27.0">1.27.0</a> / 2021-06-03</h2>
+<h2 id="v1-27-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.27.0">1.27.0</a> / 2021-06-03</h2>
<p>This release comes eight months after <a href="#v1-26-0">1.26.0</a>. It includes more than 150 resolved
issues, comprising a few new features, three minor breaking changes, many bug-fixes and small
@@ -632,7 +673,8 @@ Add <code class="highlighter-rouge">MergeUnion</code> operator in <code class="h
Add <code class="highlighter-rouge">ILIKE</code> operator (as <code class="highlighter-rouge">LIKE</code>, but case-insensitive and PostgreSQL-specific)
(Ondřej Štumpf)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4456">CALCITE-4456</a>]
-Allows all value expressions in <code class="highlighter-rouge">ROW</code></li>
+Allows all value expressions in <code class="highlighter-rouge">ROW</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4433">CALCITE-4433</a>]
Add <code class="highlighter-rouge">UNPIVOT</code> operator to SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4408">CALCITE-4408</a>]
@@ -665,15 +707,18 @@ Allow BigQuery to parse and validate niladic functions (Mr. Swett)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4497">CALCITE-4497</a>]
In <code class="highlighter-rouge">RelBuilder</code>, support windowed aggregate functions (OVER)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4620">CALCITE-4620</a>]
-Join on <code class="highlighter-rouge">CASE</code> causes <code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">RelToSqlConverter</code></li>
+Join on <code class="highlighter-rouge">CASE</code> causes <code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">RelToSqlConverter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4446">CALCITE-4446</a>]
Implement three-valued logic for SEARCH operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4621">CALCITE-4621</a>]
<code class="highlighter-rouge">SemiJoinRule</code> throws <code class="highlighter-rouge">AssertionError</code> on <code class="highlighter-rouge">ANTI</code> join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4610">CALCITE-4610</a>]
-Join on range causes <code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">RelToSqlConverter</code></li>
+Join on range causes <code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">RelToSqlConverter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4609">CALCITE-4609</a>]
-<code class="highlighter-rouge">AggregateRemoveRule</code> throws while handling <code class="highlighter-rouge">AVG</code></li>
+<code class="highlighter-rouge">AggregateRemoveRule</code> throws while handling <code class="highlighter-rouge">AVG</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4603">CALCITE-4603</a>]
Least restrictive type considers only the last element in collections of collections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4548">CALCITE-4548</a>]
@@ -743,7 +788,8 @@ optionality (Liya Fan)</li>
<code class="highlighter-rouge">MaterializedViewOnlyAggregateRule</code> performs invalid rewrite on query that
contains join and time-rollup function (<code class="highlighter-rouge">FLOOR</code>) (Justin Swett)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2000">CALCITE-2000</a>]
-<code class="highlighter-rouge">UNNEST</code> a collection that has a field with nested data generates an <code class="highlighter-rouge">Exception</code></li>
+<code class="highlighter-rouge">UNNEST</code> a collection that has a field with nested data generates an <code class="highlighter-rouge">Exception</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4514">CALCITE-4514</a>]
When merging <code class="highlighter-rouge">RelSets</code>, fine-tune which set is merged into which, for efficiency
(Botong Huang)</li>
@@ -754,9 +800,11 @@ is not inside a <code class="highlighter-rouge">Correlate</code> (Thomas Rebele)
Improve error message when <code class="highlighter-rouge">CAST</code> to unknown type (Louis Kuang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4494">CALCITE-4494</a>]
Improve performance of checking <code class="highlighter-rouge">RelNode</code> presence in <code class="highlighter-rouge">RelSubset</code> (Igor Lozynskyi)</li>
- <li>In <code class="highlighter-rouge">RelBuilder</code>, remove not-null arguments to <code class="highlighter-rouge">COUNT</code></li>
+ <li>In <code class="highlighter-rouge">RelBuilder</code>, remove not-null arguments to <code class="highlighter-rouge">COUNT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4199">CALCITE-4199</a>]
-<code class="highlighter-rouge">RelBuilder</code> throws <code class="highlighter-rouge">NullPointerException</code> while implementing <code class="highlighter-rouge">GROUP_ID()</code></li>
+<code class="highlighter-rouge">RelBuilder</code> throws <code class="highlighter-rouge">NullPointerException</code> while implementing <code class="highlighter-rouge">GROUP_ID()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4491">CALCITE-4491</a>]
Aggregation of window function produces invalid SQL for PostgreSQL (Dominik
Labuda)</li>
@@ -768,7 +816,8 @@ Extract the default <code class="highlighter-rouge">SqlWriterConfig</code> in <c
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4461">CALCITE-4461</a>]
Do not use <code class="highlighter-rouge">Logical</code> nodes inside <code class="highlighter-rouge">Enumerable</code> rules (Vladimir Ozerov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4479">CALCITE-4479</a>]
-<code class="highlighter-rouge">vFloat in (1.0, 2.0)</code> throws <code class="highlighter-rouge">UnsupportedOperationException</code></li>
+<code class="highlighter-rouge">vFloat in (1.0, 2.0)</code> throws <code class="highlighter-rouge">UnsupportedOperationException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4474">CALCITE-4474</a>]
<code class="highlighter-rouge">SqlSimpleParser</code> inner Tokenizer should not recognize the sql of TokenType.ID
or some keywords in some case (wangjie)</li>
@@ -784,16 +833,21 @@ JDBC adapter for Spark generates incorrect <code class="highlighter-rouge">ORDER
<code class="highlighter-rouge">RexExecutorImpl#compile</code> should use <code class="highlighter-rouge">RexBuilder</code>’s type factory if possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4450">CALCITE-4450</a>]
ElasticSearch query with <code class="highlighter-rouge">VARCHAR</code> literal projection fails with
-<code class="highlighter-rouge">JsonParseException</code></li>
+<code class="highlighter-rouge">JsonParseException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4449">CALCITE-4449</a>]
-Generate nicer SQL for Sarg <code class="highlighter-rouge">x IS NULL OR x NOT IN (1, 2)</code></li>
+Generate nicer SQL for Sarg <code class="highlighter-rouge">x IS NULL OR x NOT IN (1, 2)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4434">CALCITE-4434</a>]
-Cannot implement <code class="highlighter-rouge">CASE row WHEN row</code></li>
+Cannot implement <code class="highlighter-rouge">CASE row WHEN row</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4425">CALCITE-4425</a>]
Class <code class="highlighter-rouge">DefaultEdge</code> lacks a proper <code class="highlighter-rouge">toString</code> implementation (Liya Fan)</li>
- <li>Change return type of <code class="highlighter-rouge">RelBuilder#literal</code> from <code class="highlighter-rouge">RexNode</code> to <code class="highlighter-rouge">RexLiteral</code></li>
+ <li>Change return type of <code class="highlighter-rouge">RelBuilder#literal</code> from <code class="highlighter-rouge">RexNode</code> to <code class="highlighter-rouge">RexLiteral</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4435">CALCITE-4435</a>]
-Incorrect logic for validating <code class="highlighter-rouge">RexFieldAccess</code></li>
+Incorrect logic for validating <code class="highlighter-rouge">RexFieldAccess</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4436">CALCITE-4436</a>]
Use the fields order from the struct type for <code class="highlighter-rouge">ITEM(STRUCT, INDEX)</code> access
(Alessandro Solimando)</li>
@@ -801,7 +855,8 @@ Use the fields order from the struct type for <code class="highlighter-rouge">IT
<code class="highlighter-rouge">RelOptUtil#createCastRel</code> should throw if source and target row types have
different number of fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4419">CALCITE-4419</a>]
-POSIX regex operators cannot be used within <code class="highlighter-rouge">RelBuilder</code></li>
+POSIX regex operators cannot be used within <code class="highlighter-rouge">RelBuilder</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4411">CALCITE-4411</a>]
<code class="highlighter-rouge">RelNode</code> to SQL loses <code class="highlighter-rouge">DISTINCT</code> on window aggregation (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4284">CALCITE-4284</a>]
@@ -813,7 +868,8 @@ Add package-level NonNull annotations to calcite packages</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4214">CALCITE-4214</a>]
Make <code class="highlighter-rouge">RelDataType#getSqlTypeName</code> non-nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4251">CALCITE-4251</a>]
-<code class="highlighter-rouge">NPE</code> in <code class="highlighter-rouge">LoptMultiJoin</code> when <code class="highlighter-rouge">mq#getColumnOrigin(left, i)</code> returns <code class="highlighter-rouge">null</code></li>
+<code class="highlighter-rouge">NPE</code> in <code class="highlighter-rouge">LoptMultiJoin</code> when <code class="highlighter-rouge">mq#getColumnOrigin(left, i)</code> returns <code class="highlighter-rouge">null</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4415">CALCITE-4415</a>]
<code class="highlighter-rouge">SqlStdOperatorTable.NOT_LIKE</code> has a wrong implementor</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4317">CALCITE-4317</a>]
@@ -851,11 +907,13 @@ operands into account</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4389">CALCITE-4389</a>]
Calls to <code class="highlighter-rouge">ROW</code> and implicit row constructor sometimes print too many spaces</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4380">CALCITE-4380</a>]
-Make class <code class="highlighter-rouge">SqlNodeList</code> implement <code class="highlighter-rouge">List<SqlNode></code></li>
+Make class <code class="highlighter-rouge">SqlNodeList</code> implement <code class="highlighter-rouge">List<SqlNode></code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4390">CALCITE-4390</a>]
<code class="highlighter-rouge">SqlMatchRecognize</code> returns wrong operand list (Dawid Wysakowicz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4364">CALCITE-4364</a>]
-<code class="highlighter-rouge">a IN (1, 2) AND a = 1</code> should be simplified to <code class="highlighter-rouge">a = 1</code></li>
+<code class="highlighter-rouge">a IN (1, 2) AND a = 1</code> should be simplified to <code class="highlighter-rouge">a = 1</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4273">CALCITE-4273</a>]
Support get expression lineage for Calc</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4350">CALCITE-4350</a>]
@@ -880,25 +938,29 @@ Make <code class="highlighter-rouge">RelDecorrelator</code> pluggable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4305">CALCITE-4305</a>]
Implicit column alias for single-column <code class="highlighter-rouge">VALUES</code>, and <code class="highlighter-rouge">UNNEST</code> of <code class="highlighter-rouge">ARRAY</code> and
<code class="highlighter-rouge">MULTISET</code> constructors</li>
- <li>Add an overloaded <code class="highlighter-rouge">SqlOperator#createCall</code></li>
+ <li>Add an overloaded <code class="highlighter-rouge">SqlOperator#createCall</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4321">CALCITE-4321</a>]
JDBC adapter omits <code class="highlighter-rouge">FILTER (WHERE ...)</code> expressions when generating SQL
(Jeremiah Rhoads Hall)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4325">CALCITE-4325</a>]
<code class="highlighter-rouge">RexSimplify</code> incorrectly simplifies complex expressions that contain Sarg and
-<code class="highlighter-rouge">IS NULL</code></li>
+<code class="highlighter-rouge">IS NULL</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4240">CALCITE-4240</a>]
<code class="highlighter-rouge">SqlTypeUtil#getMaxPrecisionScaleDecimal</code> returns a decimal with same
precision and scale (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4333">CALCITE-4333</a>]
<code class="highlighter-rouge">Sort</code> rel should be decorrelated even though it has fetch or limit when its
-parent is not a <code class="highlighter-rouge">Correlate</code></li>
+parent is not a <code class="highlighter-rouge">Correlate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4302">CALCITE-4302</a>]
Avoid cost re-propagation in <code class="highlighter-rouge">VolcanoPlanner</code> (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4324">CALCITE-4324</a>]
Avoid sqlline classpath caching by default, add sqlline and sqlsh tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4315">CALCITE-4315</a>]
-<code class="highlighter-rouge">NPE</code> in <code class="highlighter-rouge">RelMdUtil#checkInputForCollationAndLimit</code></li>
+<code class="highlighter-rouge">NPE</code> in <code class="highlighter-rouge">RelMdUtil#checkInputForCollationAndLimit</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4316">CALCITE-4316</a>]
<code class="highlighter-rouge">NPE</code> when division includes nulls</li>
<li>Add method RelBuilder.isDistinctFrom()</li>
@@ -911,7 +973,8 @@ Avoid sqlline classpath caching by default, add sqlline and sqlsh tests</li>
<li>Remove multiple blank lines after package statements</li>
<li>Remove multiple blank lines after import statements</li>
<li>Cleanup code after errorprone upgrade: <code class="highlighter-rouge">IdentityHashMapUsage</code>, <code class="highlighter-rouge">JdkObsolete</code> ->
-<code class="highlighter-rouge">JavaUtilDate</code></li>
+<code class="highlighter-rouge">JavaUtilDate</code>
+</li>
</ul>
<h4 id="build-1-27-0">Build and test suite</h4>
@@ -923,8 +986,10 @@ OWASP dependency-check tasks fail due to missing resources</li>
Release process should not overwrite LICENSE file</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4575">CALCITE-4575</a>]
Remove Gradle wrapper from source distribution</li>
- <li>Remove <code class="highlighter-rouge">System.out.println</code> from <code class="highlighter-rouge">DiffRepository</code></li>
- <li><code class="highlighter-rouge">DiffRepository</code> should write a test’s resource file only when it is modified</li>
+ <li>Remove <code class="highlighter-rouge">System.out.println</code> from <code class="highlighter-rouge">DiffRepository</code>
+</li>
+ <li>
+<code class="highlighter-rouge">DiffRepository</code> should write a test’s resource file only when it is modified</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4593">CALCITE-4593</a>]
<code class="highlighter-rouge">DiffRepository</code> tests should fail if new XML resources are not in alphabetical
order</li>
@@ -1006,7 +1071,8 @@ Invalid Javadoc URL in <code class="highlighter-rouge">SchemaFactory</code> of C
<li>Update release instructions</li>
</ul>
-<h2 id="v1-26-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.26.0">1.26.0</a> / 2020-10-06</h2>
+<h2 id="v1-26-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.26.0">1.26.0</a> / 2020-10-06</h2>
<p>This release comes about two months after <a href="#v1-25-0">1.25.0</a>. It includes more than 70 resolved
issues, comprising a lot of new features and bug-fixes. Among others, it is worth highlighting the following.</p>
@@ -1043,13 +1109,15 @@ Spatial index, based on Hilbert space-filling curve</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3920">CALCITE-3920</a>]
Improve <code class="highlighter-rouge">ORDER BY</code> computation in Enumerable convention by exploiting <code class="highlighter-rouge">LIMIT</code> (Thomas Rebele)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4015">CALCITE-4015</a>]
-Pass through parent collation request on subset or superset of join keys for <code class="highlighter-rouge">EnumerableMergeJoin</code></li>
+Pass through parent collation request on subset or superset of join keys for <code class="highlighter-rouge">EnumerableMergeJoin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3782">CALCITE-3782</a>]
Bitwise functions <code class="highlighter-rouge">BIT_AND</code>, <code class="highlighter-rouge">BIT_OR</code> and <code class="highlighter-rouge">BIT_XOR</code> support binary and varbinary type (Hailong Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4197">CALCITE-4197</a>]
Provide utility to visualize <code class="highlighter-rouge">RelNode</code> plans (Liya Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4113">CALCITE-4113</a>]
-Support <code class="highlighter-rouge">LEFT JOIN</code> in <code class="highlighter-rouge">EnumerableMergeJoin</code></li>
+Support <code class="highlighter-rouge">LEFT JOIN</code> in <code class="highlighter-rouge">EnumerableMergeJoin</code>
+</li>
</ul>
<h4 id="fixes-1-26-0">Bug fixes, API changes and minor enhancements</h4>
@@ -1066,7 +1134,8 @@ Support materialized view recognition when query has constant filter for missing
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4171">CALCITE-4171</a>]
Support named parameters for table window functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4167">CALCITE-4167</a>]
-Group by <code class="highlighter-rouge">COALESCE IN</code> throws <code class="highlighter-rouge">NullPointerException</code></li>
+Group by <code class="highlighter-rouge">COALESCE IN</code> throws <code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4172">CALCITE-4172</a>]
Expand columnar identifiers before resolving (James Starr)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4180">CALCITE-4180</a>]
@@ -1076,7 +1145,8 @@ Some improvements to metadata query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4170">CALCITE-4170</a>]
Improve simplification of <code class="highlighter-rouge"><></code> predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4159">CALCITE-4159</a>]
-Simplify always-true expressions (such as <code class="highlighter-rouge">LIKE '%'</code>) to <code class="highlighter-rouge">TRUE</code></li>
+Simplify always-true expressions (such as <code class="highlighter-rouge">LIKE '%'</code>) to <code class="highlighter-rouge">TRUE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4192">CALCITE-4192</a>]
<code class="highlighter-rouge">RelMdColumnOrigins</code> gets the wrong index of group by columns after <code class="highlighter-rouge">RelNode</code> was optimized by <code class="highlighter-rouge">AggregateProjectMergeRule</code> rule (FangZheng Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4203">CALCITE-4203</a>]
@@ -1088,21 +1158,26 @@ Validation fails for positional aggregate with <code class="highlighter-rouge">C
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4209">CALCITE-4209</a>]
In <code class="highlighter-rouge">RelBuilder</code>, add an option to not simplify <code class="highlighter-rouge">LIMIT 0</code> to an empty relation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4208">CALCITE-4208</a>]
-Improve metadata row count for <code class="highlighter-rouge">Join</code></li>
+Improve metadata row count for <code class="highlighter-rouge">Join</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4210">CALCITE-4210</a>]
Replaying subqueries in <code class="highlighter-rouge">ON</code> clauses (James Starr)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4214">CALCITE-4214</a>]
Make <code class="highlighter-rouge">RelDataType.getSqlTypeName</code> non-nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4217">CALCITE-4217</a>]
-Unlock <code class="highlighter-rouge">RelCrossType#getFieldCount()</code></li>
+Unlock <code class="highlighter-rouge">RelCrossType#getFieldCount()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4220">CALCITE-4220</a>]
-In <code class="highlighter-rouge">SqlToRelConverter</code>, use <code class="highlighter-rouge">RelBuilder</code> for creating <code class="highlighter-rouge">Aggregate</code></li>
+In <code class="highlighter-rouge">SqlToRelConverter</code>, use <code class="highlighter-rouge">RelBuilder</code> for creating <code class="highlighter-rouge">Aggregate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4226">CALCITE-4226</a>]
-Add <code class="highlighter-rouge">Mappings#asListNonNull</code> as a null-safe alternative for <code class="highlighter-rouge">Mappings#asList</code></li>
+Add <code class="highlighter-rouge">Mappings#asListNonNull</code> as a null-safe alternative for <code class="highlighter-rouge">Mappings#asList</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4237">CALCITE-4237</a>]
<code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">SqlTypeFactoryImpl.leastRestrictive</code> when running slow tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4254">CALCITE-4254</a>]
-<code class="highlighter-rouge">ImmutableBeans</code> should make an immutable copy of property values of type <code class="highlighter-rouge">List</code>, <code class="highlighter-rouge">Set</code>, or <code class="highlighter-rouge">Map</code></li>
+<code class="highlighter-rouge">ImmutableBeans</code> should make an immutable copy of property values of type <code class="highlighter-rouge">List</code>, <code class="highlighter-rouge">Set</code>, or <code class="highlighter-rouge">Map</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4249">CALCITE-4249</a>]
JDBC adapter cannot translate <code class="highlighter-rouge">NOT LIKE</code> in join condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4266">CALCITE-4266</a>]
@@ -1112,7 +1187,8 @@ Key descriptor can be optional in <code class="highlighter-rouge">SESSION</code>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4279">CALCITE-4279</a>]
<code class="highlighter-rouge">SEARCH</code> operator cannot be pushed into Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4280">CALCITE-4280</a>]
-Replace Guava’s <code class="highlighter-rouge">Lists.transform</code> and <code class="highlighter-rouge">Iterables.transform</code> with <code class="highlighter-rouge">Util.transform</code></li>
+Replace Guava’s <code class="highlighter-rouge">Lists.transform</code> and <code class="highlighter-rouge">Iterables.transform</code> with <code class="highlighter-rouge">Util.transform</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4282">CALCITE-4282</a>]
Promote the window table functions window attribute data type with precision 3</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4287">CALCITE-4287</a>]
@@ -1120,7 +1196,8 @@ Promote the window table functions window attribute data type with precision 3</
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4238">CALCITE-4238</a>]
Create a default parser configuration, to reduce redundant information in sub-parsers</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4289">CALCITE-4289</a>]
-Wrong signature for <code class="highlighter-rouge">SqlTumbleTableFunction</code></li>
+Wrong signature for <code class="highlighter-rouge">SqlTumbleTableFunction</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4295">CALCITE-4295</a>]
Composite of two checkers with <code class="highlighter-rouge">SqlOperandCountRange</code> throws <code class="highlighter-rouge">IllegalArgumentException</code> (Zhenghua Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4190">CALCITE-4190</a>]
@@ -1138,7 +1215,8 @@ Update stale integration tests in Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4271">CALCITE-4271</a>]
<code class="highlighter-rouge">RelBuilder.in</code> should allow duplicate values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4258">CALCITE-4258</a>]
-<code class="highlighter-rouge">SqlToRelConverter</code>: <code class="highlighter-rouge">SELECT 1 IS DISTINCT FROM NULL</code> fails with <code class="highlighter-rouge">AssertionError</code></li>
+<code class="highlighter-rouge">SqlToRelConverter</code>: <code class="highlighter-rouge">SELECT 1 IS DISTINCT FROM NULL</code> fails with <code class="highlighter-rouge">AssertionError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4246">CALCITE-4246</a>]
When parsing SQL in BigQuery dialect, allow unquoted table names to contain hyphens</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4230">CALCITE-4230</a>]
@@ -1154,13 +1232,15 @@ Ensure <code class="highlighter-rouge">org.apache.calcite.schema.Statistic</code
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4229">CALCITE-4229</a>]
<code class="highlighter-rouge">Add Util.throwAsRuntime</code> and <code class="highlighter-rouge">Util.causeOrSelf</code> to simplify exception re-throwing</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4269">CALCITE-4269</a>]
-Improvement on enumerable implementation for <code class="highlighter-rouge">HOP</code> and <code class="highlighter-rouge">SESSION</code></li>
+Improvement on enumerable implementation for <code class="highlighter-rouge">HOP</code> and <code class="highlighter-rouge">SESSION</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4275">CALCITE-4275</a>]
<code class="highlighter-rouge">EnumerableMergeJoin#create</code> does not set <code class="highlighter-rouge">EnumerableConvention</code> in the trait set</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4283">CALCITE-4283</a>]
Do not force implement <code class="highlighter-rouge">SqlTableFunction</code> when creating table function scan</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4261">CALCITE-4261</a>]
-Join with three tables causes <code class="highlighter-rouge">IllegalArgumentException</code> in <code class="highlighter-rouge">EnumerableBatchNestedLoopJoinRule</code></li>
+Join with three tables causes <code class="highlighter-rouge">IllegalArgumentException</code> in <code class="highlighter-rouge">EnumerableBatchNestedLoopJoinRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4288">CALCITE-4288</a>]
Create <code class="highlighter-rouge">SqlTypeUtil#deriveType(SqlCallBinding)</code> to make type computation simpler</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4216">CALCITE-4216</a>]
@@ -1172,14 +1252,19 @@ Avoid disabling hostname verification on HTTPS connections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4224">CALCITE-4224</a>]
Add a method for <code class="highlighter-rouge">RelNode</code> to output its relational expression string (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4248">CALCITE-4248</a>]
-Deprecate <code class="highlighter-rouge">SqlParser.ConfigBuilder</code></li>
+Deprecate <code class="highlighter-rouge">SqlParser.ConfigBuilder</code>
+</li>
<li>Remove <code class="highlighter-rouge">ArrayList</code> allocation from <code class="highlighter-rouge">Mappings#bijection</code>, and add helpful message in case NPE is thrown</li>
<li>Improve positions in SQL validator error messages</li>
<li>Simplify <code class="highlighter-rouge">Pair.left(Iterable)</code> and <code class="highlighter-rouge">Pair.right(Iterable)</code> implementation</li>
- <li>Refactor <code class="highlighter-rouge">Pair</code> comparison to use <code class="highlighter-rouge">Comparator.nullsFirst</code> and <code class="highlighter-rouge">.naturalOrder</code></li>
- <li>Obsolete <code class="highlighter-rouge">SqlToRelConverter.ConfigBuilder</code>, and refactor <code class="highlighter-rouge">SqlToRelConverterTest</code></li>
- <li>Refactor <code class="highlighter-rouge">SqlParserTest</code></li>
- <li>Minor refactoring of <code class="highlighter-rouge">DruidAdapterIT</code> and <code class="highlighter-rouge">DruidAdapter2IT</code></li>
+ <li>Refactor <code class="highlighter-rouge">Pair</code> comparison to use <code class="highlighter-rouge">Comparator.nullsFirst</code> and <code class="highlighter-rouge">.naturalOrder</code>
+</li>
+ <li>Obsolete <code class="highlighter-rouge">SqlToRelConverter.ConfigBuilder</code>, and refactor <code class="highlighter-rouge">SqlToRelConverterTest</code>
+</li>
+ <li>Refactor <code class="highlighter-rouge">SqlParserTest</code>
+</li>
+ <li>Minor refactoring of <code class="highlighter-rouge">DruidAdapterIT</code> and <code class="highlighter-rouge">DruidAdapter2IT</code>
+</li>
</ul>
<h4 id="build-1-26-0">Build and test suite</h4>
@@ -1197,7 +1282,8 @@ Configure Gradle Local Build Cache</li>
Remove dependency between checkstyle and compilation tasks</li>
<li>Add <code class="highlighter-rouge">MaxMetaspaceSize=512m</code> to avoid metaspace issues when building Calcite</li>
<li>Make project buildable from folders that include special characters</li>
- <li>Use <code class="highlighter-rouge">merge=union</code> strategy to avoid false merge conflicts on <code class="highlighter-rouge">CalciteResource.properties</code></li>
+ <li>Use <code class="highlighter-rouge">merge=union</code> strategy to avoid false merge conflicts on <code class="highlighter-rouge">CalciteResource.properties</code>
+</li>
<li>Add GC options to GitHub and Travis CI so they fail on low memory condition faster</li>
<li>Update Checkstyle from 8.27 to 8.28 to support <code class="highlighter-rouge">package-info</code> files with imports</li>
<li>Update <code class="highlighter-rouge">org.nosphere.apache.rat</code> plugin from 0.5.2 to 0.7.0, and print files with unapproved licenses to console</li>
@@ -1212,14 +1298,16 @@ Change downloads page to use downloads.apache.org</li>
<li>Site: Add Rui Wang as committer, Ruben Quesada Lopez as PMC</li>
</ul>
-<h2 id="v1-25-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.25.0">1.25.0</a> / 2020-08-22</h2>
+<h2 id="v1-25-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.25.0">1.25.0</a> / 2020-08-22</h2>
<p>This release comes shortly after <a href="#v1-24-0">1.24.0</a> and removes methods
which were deprecated in the previous version. It also introduces other breaking changes so
make sure to consult corresponding section. Notable improvements in this release are:</p>
<ul>
- <li><a href="https://issues.apache.org/jira/browse/CALCITE-4134">Interval Expressions</a>
+ <li>
+<a href="https://issues.apache.org/jira/browse/CALCITE-4134">Interval Expressions</a>
(e.g. <code class="highlighter-rouge">INTERVAL '1' HOUR</code>, <code class="highlighter-rouge">INTERVAL -'1:2' HOUR TO MINUTE</code>)</li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4080">Character Literals as Aliases</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-3923">Refactor How Planner Rules are Parameterized</a></li>
@@ -1248,20 +1336,24 @@ Remove dependency of File adapter on Example CSV adapter</li>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2160">CALCITE-2160</a>]
-Spatial: Add functions <code class="highlighter-rouge">ST_MakeGrid</code> and <code class="highlighter-rouge">ST_MakeGridPoints</code></li>
+Spatial: Add functions <code class="highlighter-rouge">ST_MakeGrid</code> and <code class="highlighter-rouge">ST_MakeGridPoints</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4134">CALCITE-4134</a>]
Interval expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4154">CALCITE-4154</a>]
-Add a rule, <code class="highlighter-rouge">ProjectAggregateMergeRule</code>, to merge a <code class="highlighter-rouge">Project</code> onto an <code class="highlighter-rouge">Aggregate</code></li>
+Add a rule, <code class="highlighter-rouge">ProjectAggregateMergeRule</code>, to merge a <code class="highlighter-rouge">Project</code> onto an <code class="highlighter-rouge">Aggregate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4080">CALCITE-4080</a>]
-Allow character literals as column aliases, if <code class="highlighter-rouge">SqlConformance.allowCharLiteralAlias()</code></li>
+Allow character literals as column aliases, if <code class="highlighter-rouge">SqlConformance.allowCharLiteralAlias()</code>
+</li>
</ul>
<h4 id="fixes-1-25-0">Bug fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4139">CALCITE-4139</a>]
-Prevent NPE in <code class="highlighter-rouge">ListTransientTable</code></li>
+Prevent NPE in <code class="highlighter-rouge">ListTransientTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2854">CALCITE-2854</a>]
Codegen compile error when implementing unary minus function with data type <code class="highlighter-rouge">BigDecimal</code> (Qi Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3957">CALCITE-3957</a>]
@@ -1294,25 +1386,30 @@ Support unparse special syntax for <code class="highlighter-rouge">INSERT</code>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4115">CALCITE-4115</a>]
Improve the prompt of using SQL keywords for sql parses (part2)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4129">CALCITE-4129</a>]
-Support deep equality check for <code class="highlighter-rouge">RelNode</code></li>
+Support deep equality check for <code class="highlighter-rouge">RelNode</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4111">CALCITE-4111</a>]
Remove <code class="highlighter-rouge">VolcanoPlannerPhase</code> in Planner (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4114">CALCITE-4114</a>]
Remove method <code class="highlighter-rouge">CalciteAssert.forceDecorrelate</code> (Jiatao Tao)</li>
</ul>
-<h2 id="v1-24-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.24.0">1.24.0</a> / 2020-07-24</h2>
+<h2 id="v1-24-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.24.0">1.24.0</a> / 2020-07-24</h2>
<p>This release comes about two months after 1.23.0. It includes more than 80 resolved
issues, comprising a lot of new features as well as performance improvements
and bug-fixes. Among others, it is worth highlighting the following.</p>
<ul>
- <li>Support <a href="https://issues.apache.org/jira/browse/CALCITE-3916">top-down rule applying and upper bound space pruning</a></li>
+ <li>Support <a href="https://issues.apache.org/jira/browse/CALCITE-3916">top-down rule applying and upper bound space pruning</a>
+</li>
<li>Support <a href="https://issues.apache.org/jira/browse/CALCITE-4000">OFFSET</a> parameter in <code class="highlighter-rouge">TUMBLE/HOP</code>
table functions</li>
- <li>A new <a href="https://issues.apache.org/jira/browse/CALCITE-3724">Presto dialect implementation</a></li>
- <li><a href="https://issues.apache.org/jira/browse/CALCITE-4087">Hoist</a>, a utility to replace literals in a
+ <li>A new <a href="https://issues.apache.org/jira/browse/CALCITE-3724">Presto dialect implementation</a>
+</li>
+ <li>
+<a href="https://issues.apache.org/jira/browse/CALCITE-4087">Hoist</a>, a utility to replace literals in a
SQL string with placeholders</li>
</ul>
@@ -1336,11 +1433,14 @@ gradle.properties.</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4032">CALCITE-4032</a>]
Mark <code class="highlighter-rouge">CalcMergeRule</code> as <code class="highlighter-rouge">TransformationRule</code>. With this change, the <code class="highlighter-rouge">CalcMergeRule</code>
-won’t match <code class="highlighter-rouge">PhysicalNode</code>(including <code class="highlighter-rouge">EnumerableCalc</code>) in <code class="highlighter-rouge">VolcanoPlanner</code></li>
+won’t match <code class="highlighter-rouge">PhysicalNode</code>(including <code class="highlighter-rouge">EnumerableCalc</code>) in <code class="highlighter-rouge">VolcanoPlanner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4003">CALCITE-4003</a>]
-Disallow cross convention matching and <code class="highlighter-rouge">PhysicalNode</code> generation in <code class="highlighter-rouge">TransformationRule</code></li>
+Disallow cross convention matching and <code class="highlighter-rouge">PhysicalNode</code> generation in <code class="highlighter-rouge">TransformationRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3786">CALCITE-3786</a>]
-Change <code class="highlighter-rouge">RelNode#recomputeDigest()</code> return type from <code class="highlighter-rouge">String</code> to <code class="highlighter-rouge">void</code></li>
+Change <code class="highlighter-rouge">RelNode#recomputeDigest()</code> return type from <code class="highlighter-rouge">String</code> to <code class="highlighter-rouge">void</code>
+</li>
</ul>
<h4 id="new-features-1-24-0">New features</h4>
@@ -1370,37 +1470,45 @@ Add a new component <code class="highlighter-rouge">RexNormalize</code> for more
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3224">CALCITE-3224</a>]
New implementation of <code class="highlighter-rouge">RexNode-to-Expression</code> code generation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4056">CALCITE-4056</a>]
-Remove <code class="highlighter-rouge">Digest</code> from <code class="highlighter-rouge">RelNode</code> and <code class="highlighter-rouge">RexCall</code></li>
+Remove <code class="highlighter-rouge">Digest</code> from <code class="highlighter-rouge">RelNode</code> and <code class="highlighter-rouge">RexCall</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4008">CALCITE-4008</a>]
Implement Code generation for <code class="highlighter-rouge">EnumerableSortedAggregate</code> (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3972">CALCITE-3972</a>]
Allow <code class="highlighter-rouge">RelBuilder</code> to create <code class="highlighter-rouge">RelNode</code> with convention (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4060">CALCITE-4060</a>]
-Supports implicit type coercion for <code class="highlighter-rouge">NOT IN</code></li>
+Supports implicit type coercion for <code class="highlighter-rouge">NOT IN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4127">CALCITE-4127</a>]
-Remove final from <code class="highlighter-rouge">AbstractRelNode#getRelTypeName</code></li>
+Remove final from <code class="highlighter-rouge">AbstractRelNode#getRelTypeName</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4124">CALCITE-4124</a>]
-Stop invalidating metadata cache in <code class="highlighter-rouge">VolcanoRuleCall</code></li>
+Stop invalidating metadata cache in <code class="highlighter-rouge">VolcanoRuleCall</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4123">CALCITE-4123</a>]
Make <code class="highlighter-rouge">EnumerableMergeJoin</code> constructor protected</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4085">CALCITE-4085</a>]
Improve return type nullability for <code class="highlighter-rouge">SqlDotOperator</code> & <code class="highlighter-rouge">SqlItemOperator</code> (Dawid Wysakowicz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3936">CALCITE-3936</a>]
-JDBC adapter, when generating SQL, changes target of ambiguous <code class="highlighter-rouge">HAVING</code> clause with a <code class="highlighter-rouge">Project</code> on <code class="highlighter-rouge">Filter</code> on <code class="highlighter-rouge">Aggregate</code></li>
+JDBC adapter, when generating SQL, changes target of ambiguous <code class="highlighter-rouge">HAVING</code> clause with a <code class="highlighter-rouge">Project</code> on <code class="highlighter-rouge">Filter</code> on <code class="highlighter-rouge">Aggregate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4112">CALCITE-4112</a>]
Refine the usage of <code class="highlighter-rouge">CalciteConnectionConfig</code> in <code class="highlighter-rouge">DecorrelateProgram</code> & some minor code refactoring (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4116">CALCITE-4116</a>]
Remove unused code for tracking <code class="highlighter-rouge">RexNode</code>’s nullable state in codegen</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4105">CALCITE-4105</a>]
-Replace <code class="highlighter-rouge">Pair</code> with <code class="highlighter-rouge">Flat2List</code> in <code class="highlighter-rouge">RelDigestWriter</code></li>
+Replace <code class="highlighter-rouge">Pair</code> with <code class="highlighter-rouge">Flat2List</code> in <code class="highlighter-rouge">RelDigestWriter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4092">CALCITE-4092</a>]
<code class="highlighter-rouge">NPE</code> using <code class="highlighter-rouge">WITH</code> clause without a corresponding <code class="highlighter-rouge">SELECT FROM</code> (James Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4115">CALCITE-4115</a>]
Improve the prompt of using SQL keywords for sql parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4094">CALCITE-4094</a>]
-Allow <code class="highlighter-rouge">SqlOperator</code> of <code class="highlighter-rouge">SqlKind#OTHER_FUNCTION</code> to define a <code class="highlighter-rouge">Strong.Policy</code></li>
+Allow <code class="highlighter-rouge">SqlOperator</code> of <code class="highlighter-rouge">SqlKind#OTHER_FUNCTION</code> to define a <code class="highlighter-rouge">Strong.Policy</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3834">CALCITE-3834</a>]
-Support <code class="highlighter-rouge">AntiJoin</code> in <code class="highlighter-rouge">EnumerableMergeJoin</code></li>
+Support <code class="highlighter-rouge">AntiJoin</code> in <code class="highlighter-rouge">EnumerableMergeJoin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4098">CALCITE-4098</a>]
Remove redundant code in <code class="highlighter-rouge">RelJson.toJson(RelDistribution)</code> (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4066">CALCITE-4066</a>]
@@ -1428,31 +1536,37 @@ When generating SQL for DB2, a complex <code class="highlighter-rouge">SELECT</c
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4019">CALCITE-4019</a>]
Visit <code class="highlighter-rouge">SqlInsert</code> with <code class="highlighter-rouge">SqlShuttle</code> cause <code class="highlighter-rouge">NullPointerException</code> (Xu ZhaoHui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4063">CALCITE-4063</a>]
-Unnest an array of single-item structs causes <code class="highlighter-rouge">ClassCastException</code></li>
+Unnest an array of single-item structs causes <code class="highlighter-rouge">ClassCastException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3907">CALCITE-3907</a>]
Use username and password parameters on delegation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3951">CALCITE-3951</a>]
-Support different string comparison based on <code class="highlighter-rouge">SqlCollation</code></li>
+Support different string comparison based on <code class="highlighter-rouge">SqlCollation</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4020">CALCITE-4020</a>]
Support <code class="highlighter-rouge">Calc</code> operator in <code class="highlighter-rouge">RelFieldTrimmer</code> (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4057">CALCITE-4057</a>]
Support trait propagation for <code class="highlighter-rouge">EnumerableBatchNestedLoopJoin</code> (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4016">CALCITE-4016</a>]
-Support trait propagation for <code class="highlighter-rouge">EnumerableCalc</code></li>
+Support trait propagation for <code class="highlighter-rouge">EnumerableCalc</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4055">CALCITE-4055</a>]
<code class="highlighter-rouge">RelFieldTrimmer</code> loses hints</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3975">CALCITE-3975</a>]
Add options to <code class="highlighter-rouge">ProjectFilterTransposeRule</code> to push down project and filter expressions whole, not just field references</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4038">CALCITE-4038</a>]
-Refactor <code class="highlighter-rouge">RexVisitor</code>, <code class="highlighter-rouge">RexBiVisitor</code>, <code class="highlighter-rouge">RelOptUtil.InputFinder</code></li>
+Refactor <code class="highlighter-rouge">RexVisitor</code>, <code class="highlighter-rouge">RexBiVisitor</code>, <code class="highlighter-rouge">RelOptUtil.InputFinder</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4053">CALCITE-4053</a>]
<code class="highlighter-rouge">RexSimplify</code> should not pass exprs containing non-const subExprs to <code class="highlighter-rouge">RexExecutor</code> (Shuo Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4018">CALCITE-4018</a>]
-Support trait propagation for <code class="highlighter-rouge">EnumerableValues</code></li>
+Support trait propagation for <code class="highlighter-rouge">EnumerableValues</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4049">CALCITE-4049</a>]
Reduce the time complexity of getting shortest distances</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4041">CALCITE-4041</a>]
-Support trait propagation for <code class="highlighter-rouge">EnumerableCorrelate</code></li>
+Support trait propagation for <code class="highlighter-rouge">EnumerableCorrelate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4007">CALCITE-4007</a>]
<code class="highlighter-rouge">MergeJoin</code> collation check should not be limited to join key’s order</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4012">CALCITE-4012</a>]
@@ -1460,11 +1574,13 @@ Support trait propagation for <code class="highlighter-rouge">EnumerableHashJoin
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4040">CALCITE-4040</a>]
An aggregate function that does not support roll up throws an exception when it is rolled up (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4030">CALCITE-4030</a>]
-Reinstate assertion check for trait derivation in <code class="highlighter-rouge">OptimizeTask</code></li>
+Reinstate assertion check for trait derivation in <code class="highlighter-rouge">OptimizeTask</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4042">CALCITE-4042</a>]
<code class="highlighter-rouge">JoinCommuteRule</code> must not match <code class="highlighter-rouge">SEMI</code> / <code class="highlighter-rouge">ANTI</code> join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4043">CALCITE-4043</a>]
-Improve <code class="highlighter-rouge">IllegalArgumentException</code> message in <code class="highlighter-rouge">RelBuilder#field</code></li>
+Improve <code class="highlighter-rouge">IllegalArgumentException</code> message in <code class="highlighter-rouge">RelBuilder#field</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3991">CALCITE-3991</a>]
The required should always be provided in <code class="highlighter-rouge">RelSet.getOrCreateSubset()</code> (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3981">CALCITE-3981</a>]
@@ -1472,11 +1588,13 @@ The required should always be provided in <code class="highlighter-rouge">RelSet
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2997">CALCITE-2997</a>]
In <code class="highlighter-rouge">SqlToRelConverter</code> and <code class="highlighter-rouge">RelBuilder</code>, add option to avoid pushing down join condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4023">CALCITE-4023</a>]
-Deprecate <code class="highlighter-rouge">ProjectSortTransposeRule</code></li>
+Deprecate <code class="highlighter-rouge">ProjectSortTransposeRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4031">CALCITE-4031</a>]
Remove code to be removed before 1.24</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3993">CALCITE-3993</a>]
-Add utility methods to <code class="highlighter-rouge">RelTrait</code>, <code class="highlighter-rouge">RelTraitSet</code> and <code class="highlighter-rouge">RelCollation</code></li>
+Add utility methods to <code class="highlighter-rouge">RelTrait</code>, <code class="highlighter-rouge">RelTraitSet</code> and <code class="highlighter-rouge">RelCollation</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4011">CALCITE-4011</a>]
Support trait propagation for <code class="highlighter-rouge">EnumerableProject</code> and <code class="highlighter-rouge">EnumerableFilter</code> (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4019">CALCITE-4019</a>]
@@ -1484,7 +1602,8 @@ Visit <code class="highlighter-rouge">SqlInsert</code> with <code class="highlig
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4004">CALCITE-4004</a>]
Show <code class="highlighter-rouge">RelOptRuleOperand</code> description in debugger to facilitate debugging</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4009">CALCITE-4009</a>]
-Remove traitset remapping in <code class="highlighter-rouge">ProjectJoinTransposeRule</code></li>
+Remove traitset remapping in <code class="highlighter-rouge">ProjectJoinTransposeRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3999">CALCITE-3999</a>]
Simplify <code class="highlighter-rouge">DialectPool</code> implementation using Guava cache</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3910">CALCITE-3910</a>]
@@ -1522,7 +1641,8 @@ Doc of <code class="highlighter-rouge">SqlGroupingFunction</code> contradicts it
<li>Site: Add Tencent and TBDS logo in powered-by image</li>
</ul>
-<h2 id="v1-23-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.23.0">1.23.0</a> / 2020-05-23</h2>
+<h2 id="v1-23-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.23.0">1.23.0</a> / 2020-05-23</h2>
<p>This release comes two months after 1.22.0. It includes more than 100 resolved
issues, comprising a lot of new features as well as performance improvements
@@ -1531,7 +1651,8 @@ faster than previous versions with built-in default rule set. It is also worth
highlighting the following.</p>
<ul>
- <li><code class="highlighter-rouge">VolcanoPlanner</code> supports top down trait request and trait enforcement without
+ <li>
+<code class="highlighter-rouge">VolcanoPlanner</code> supports top down trait request and trait enforcement without
abstract converter
(<a href="https://issues.apache.org/jira/browse/CALCITE-3896">CALCITE-3896</a>)</li>
<li>Improve <code class="highlighter-rouge">VolcanoPlanner</code> performance by removing rule match and subset importance
@@ -1556,7 +1677,8 @@ gradle.properties.</p>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3877">CALCITE-3877</a>]
In <code class="highlighter-rouge">RexWindow</code>, make fields <code class="highlighter-rouge">upperBound</code> and <code class="highlighter-rouge">lowerBound</code> not-nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3868">CALCITE-3868</a>]
-Remove redundant <code class="highlighter-rouge">ruleSet</code>(protected)and <code class="highlighter-rouge">ruleNames</code>(private) in <code class="highlighter-rouge">VolcanoPlanner</code></li>
+Remove redundant <code class="highlighter-rouge">ruleSet</code>(protected)and <code class="highlighter-rouge">ruleNames</code>(private) in <code class="highlighter-rouge">VolcanoPlanner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3753">CALCITE-3753</a>]
<code class="highlighter-rouge">VolcanoPlanner</code> flags <code class="highlighter-rouge">impatient</code> and <code class="highlighter-rouge">ambitious</code> are removed, alternatively
use <code class="highlighter-rouge">checkCancel()</code> to achieve <code class="highlighter-rouge">impatient</code> mode</li>
@@ -1582,7 +1704,8 @@ Support Presto style <code class="highlighter-rouge">unnest</code> with items al
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2157">CALCITE-2157</a>]
Support ClickHouse dialect (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3833">CALCITE-3833</a>]
-Support <code class="highlighter-rouge">SemiJoin</code> in <code class="highlighter-rouge">EnumerableMergeJoin</code></li>
+Support <code class="highlighter-rouge">SemiJoin</code> in <code class="highlighter-rouge">EnumerableMergeJoin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3684">CALCITE-3684</a>]
Support <code class="highlighter-rouge">CONCAT</code> for variable arguments (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3285">CALCITE-3285</a>]
@@ -1594,7 +1717,8 @@ Support MySQL <code class="highlighter-rouge">COMPRESS</code> function (ritesh-k
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3726">CALCITE-3726</a>]
Allow declaring type objects (ritesh-kapoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3815">CALCITE-3815</a>]
-Support SQL standard aggregate functions: <code class="highlighter-rouge">EVERY</code>, <code class="highlighter-rouge">SOME</code>, <code class="highlighter-rouge">INTERSECTION</code></li>
+Support SQL standard aggregate functions: <code class="highlighter-rouge">EVERY</code>, <code class="highlighter-rouge">SOME</code>, <code class="highlighter-rouge">INTERSECTION</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3704">CALCITE-3704</a>]
Implement <code class="highlighter-rouge">STRCMP</code> function</li>
</ul>
@@ -1620,10 +1744,12 @@ Add <code class="highlighter-rouge">IntersectOnCalcsToIntersectUnifyRule</code>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3934">CALCITE-3934</a>]
Allow type-coercion in <code class="highlighter-rouge">CONCAT</code> operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3889">CALCITE-3889</a>]
-Add <code class="highlighter-rouge">apply(Mappings.Mapping)</code> to <code class="highlighter-rouge">RelTrait</code> and <code class="highlighter-rouge">RelTraitSet</code></li>
+Add <code class="highlighter-rouge">apply(Mappings.Mapping)</code> to <code class="highlighter-rouge">RelTrait</code> and <code class="highlighter-rouge">RelTraitSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3838">CALCITE-3838</a>]
Support <code class="highlighter-rouge">Calc</code> in <code class="highlighter-rouge">RelMdSize</code>, <code class="highlighter-rouge">RelMdSelectivity</code>, <code class="highlighter-rouge">RelMdMaxRowCount</code>,
-<code class="highlighter-rouge">RelMdMinRowCount</code>, <code class="highlighter-rouge">RelMdTableReferences</code></li>
+<code class="highlighter-rouge">RelMdMinRowCount</code>, <code class="highlighter-rouge">RelMdTableReferences</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3718">CALCITE-3718</a>]
Support <code class="highlighter-rouge">Intersect</code> and <code class="highlighter-rouge">Minus</code> in <code class="highlighter-rouge">Bindables</code> (xzh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3997">CALCITE-3997</a>]
@@ -1638,9 +1764,11 @@ In <code class="highlighter-rouge">RexWindow</code>, make fields <code class="hi
Trait keys remapping may throw exception when some trait key is not mapped
(Roman Kondakov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3982">CALCITE-3982</a>]
-Simplify <code class="highlighter-rouge">FilterMergeRule</code> to rely on <code class="highlighter-rouge">RelBuilder</code> instead of <code class="highlighter-rouge">RexProgram</code></li>
+Simplify <code class="highlighter-rouge">FilterMergeRule</code> to rely on <code class="highlighter-rouge">RelBuilder</code> instead of <code class="highlighter-rouge">RexProgram</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3983">CALCITE-3983</a>]
-Add utility methods to <code class="highlighter-rouge">RelTraitSet</code></li>
+Add utility methods to <code class="highlighter-rouge">RelTraitSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3980">CALCITE-3980</a>]
Redis-adapter redis connection is not reused when <code class="highlighter-rouge">RedisTable</code> is created (Xu
Zhang)</li>
@@ -1673,7 +1801,8 @@ Create <code class="highlighter-rouge">ArrayList</code> with initial capacity wh
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3954">CALCITE-3954</a>]
Always compare types using equals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3955">CALCITE-3955</a>]
-Remove the first operand of <code class="highlighter-rouge">RexCall</code> from <code class="highlighter-rouge">SqlWindowTableFunction</code></li>
+Remove the first operand of <code class="highlighter-rouge">RexCall</code> from <code class="highlighter-rouge">SqlWindowTableFunction</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3915">CALCITE-3915</a>]
Add rule listener to report rule attempts and time at <code class="highlighter-rouge">DEBUG</code> log level
(Xiening Dai)</li>
@@ -1683,12 +1812,14 @@ Add rule listener to report rule attempts and time at <code class="highlighter-r
<code class="highlighter-rouge">FilterTableScanRule</code> generate wrong mapping for filter condition when
underlying is <code class="highlighter-rouge">BindableTableScan</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3942">CALCITE-3942</a>]
-Move type-coercion configurations into <code class="highlighter-rouge">SqlValidator.Config</code></li>
+Move type-coercion configurations into <code class="highlighter-rouge">SqlValidator.Config</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3939">CALCITE-3939</a>]
Change <code class="highlighter-rouge">UnionEliminatorRule</code> and <code class="highlighter-rouge">ProjectRemoveRule</code> to auto pruning
<code class="highlighter-rouge">SubstitutionRule</code> (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3944">CALCITE-3944</a>]
-Move <code class="highlighter-rouge">dumpSets</code> and <code class="highlighter-rouge">dumpGraphviz</code> out of <code class="highlighter-rouge">VolcanoPlanner</code></li>
+Move <code class="highlighter-rouge">dumpSets</code> and <code class="highlighter-rouge">dumpGraphviz</code> out of <code class="highlighter-rouge">VolcanoPlanner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3927">CALCITE-3927</a>]
<code class="highlighter-rouge">RelSubset</code> is not fired for rule when set gets merged (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3868">CALCITE-3868</a>]
@@ -1698,7 +1829,8 @@ Remove redundant <code class="highlighter-rouge">ruleSet</code>(protected)and
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3447">CALCITE-3447</a>]
MutableScans with the same qualified name are not equivalent (Dai Min,Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3931">CALCITE-3931</a>]
-Add LOOKAHEAD(2) for methods defined in <code class="highlighter-rouge">createStatementParserMethods</code></li>
+Add LOOKAHEAD(2) for methods defined in <code class="highlighter-rouge">createStatementParserMethods</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3790">CALCITE-3790</a>]
Make the url() of Sources.of(file) available</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3894">CALCITE-3894</a>]
@@ -1712,13 +1844,16 @@ Set <code class="highlighter-rouge">updateCount</code> when creating <code class
In JDBC adapter, when generating SQL for MYSQL, generate <code class="highlighter-rouge">TIMESTAMP</code> type as
<code class="highlighter-rouge">DATETIME</code> for <code class="highlighter-rouge">CAST</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3909">CALCITE-3909</a>]
-<code class="highlighter-rouge">RelMdMinRowCount</code> doesn’t take into account <code class="highlighter-rouge">UNION</code> <code class="highlighter-rouge">DISTINCT</code></li>
+<code class="highlighter-rouge">RelMdMinRowCount</code> doesn’t take into account <code class="highlighter-rouge">UNION</code> <code class="highlighter-rouge">DISTINCT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3576">CALCITE-3576</a>]
-Remove enumerable convention check in <code class="highlighter-rouge">FilterIntoJoinRule</code></li>
+Remove enumerable convention check in <code class="highlighter-rouge">FilterIntoJoinRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2593">CALCITE-2593</a>]
Plan error when transforming multiple collations to single collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2010">CALCITE-2010</a>]
-Cannot plan query that is <code class="highlighter-rouge">UNION ALL</code> applied to <code class="highlighter-rouge">VALUES</code></li>
+Cannot plan query that is <code class="highlighter-rouge">UNION ALL</code> applied to <code class="highlighter-rouge">VALUES</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3865">CALCITE-3865</a>]
<code class="highlighter-rouge">RelCollationTraitDef.canConvert</code> should always return true</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2970">CALCITE-2970</a>]
@@ -1730,7 +1865,8 @@ for canonicalization (Vineet Garg)</li>
Incorrect mapping parsing when properties have same name as reserved keywords
in ElasticSearch</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3900">CALCITE-3900</a>]
-Add <code class="highlighter-rouge">Config</code> for <code class="highlighter-rouge">SqlValidator</code></li>
+Add <code class="highlighter-rouge">Config</code> for <code class="highlighter-rouge">SqlValidator</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3908">CALCITE-3908</a>]
<code class="highlighter-rouge">JoinCommuteRule</code> should update all input references in join condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3898">CALCITE-3898</a>]
@@ -1745,9 +1881,11 @@ Simplify expressions with unary minus</li>
Support JDK 14 and guava 28.2-jre</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3876">CALCITE-3876</a>]
<code class="highlighter-rouge">RelToSqlConverter</code> should not merge a <code class="highlighter-rouge">Project</code> that contains a window function
-that references a window function in input <code class="highlighter-rouge">Project</code></li>
+that references a window function in input <code class="highlighter-rouge">Project</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3891">CALCITE-3891</a>]
-Remove use of Pair.zip in <code class="highlighter-rouge">RelTraitSet</code></li>
+Remove use of Pair.zip in <code class="highlighter-rouge">RelTraitSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3885">CALCITE-3885</a>]
Restore trace logging for rules queue and Volcano planner’s internal state
(Roman Kondakov)</li>
@@ -1776,26 +1914,30 @@ Remove code to be removed before 1.23</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3855">CALCITE-3855</a>]
Supports snapshot on table with virtual columns during sql-to-rel conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3853">CALCITE-3853</a>]
-Minor improvements in <code class="highlighter-rouge">SortJoinCopyRule</code></li>
+Minor improvements in <code class="highlighter-rouge">SortJoinCopyRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3848">CALCITE-3848</a>]
Rewriting for materialized view consisting of group by on join keys fails with
<code class="highlighter-rouge">Mappings$NoElementException</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3845">CALCITE-3845</a>]
<code class="highlighter-rouge">CASE WHEN</code> expression with nullability <code class="highlighter-rouge">CAST</code> is considered as reduced wrongly in
-<code class="highlighter-rouge">ReduceExpressionsRule</code></li>
+<code class="highlighter-rouge">ReduceExpressionsRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3847">CALCITE-3847</a>]
Decorrelation for join with lateral table outputs wrong plan if the join
condition contains correlation variables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3753">CALCITE-3753</a>]
Boost <code class="highlighter-rouge">VolcanoPlanner</code> performance by removing rule match and subset importance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3823">CALCITE-3823</a>]
-Do not use <code class="highlighter-rouge">String.replaceAll</code></li>
+Do not use <code class="highlighter-rouge">String.replaceAll</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3412">CALCITE-3412</a>]
FLOOR(timestamp TO WEEK) gives wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3839">CALCITE-3839</a>]
After calling <code class="highlighter-rouge">RelBuilder.aggregate</code>, cannot lookup field by name</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3819">CALCITE-3819</a>]
-Prune parent <code class="highlighter-rouge">RelNode</code> when merging child <code class="highlighter-rouge">RelSet</code> with parent <code class="highlighter-rouge">RelSet</code></li>
+Prune parent <code class="highlighter-rouge">RelNode</code> when merging child <code class="highlighter-rouge">RelSet</code> with parent <code class="highlighter-rouge">RelSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3809">CALCITE-3809</a>]
<code class="highlighter-rouge">RexSimplify</code> simplifies nondeterministic function incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3828">CALCITE-3828</a>]
@@ -1856,7 +1998,8 @@ Documentation for Declaring Objects For Types Defined In Schema (ritesh-kapoor)<
<li>Site: Add Feng Zhu as committer</li>
</ul>
-<h2 id="v1-22-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.22.0">1.22.0</a> / 2020-03-05</h2>
+<h2 id="v1-22-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.22.0">1.22.0</a> / 2020-03-05</h2>
<p>This release comes five months after 1.21.0. It includes more than 250
resolved issues, comprising a large number of new features as well as
@@ -1868,14 +2011,16 @@ highlighting the following.</p>
<a href="https://issues.apache.org/jira/browse/CALCITE-482">SQL hints</a>
for different kind of relational expressions</li>
<li>A new
-<a href="https://issues.apache.org/jira/browse/CALCITE-3510">Redis adapter</a></li>
+<a href="https://issues.apache.org/jira/browse/CALCITE-3510">Redis adapter</a>
+</li>
<li>Support Oracle
<a href="https://issues.apache.org/jira/browse/CALCITE-3579">XML</a>
<a href="https://issues.apache.org/jira/browse/CALCITE-3580">functions</a>
and
<a href="https://issues.apache.org/jira/browse/CALCITE-3684">MySQL</a>
<a href="https://issues.apache.org/jira/browse/CALCITE-3695">math</a>
-<a href="https://issues.apache.org/jira/browse/CALCITE-3707">functions</a></li>
+<a href="https://issues.apache.org/jira/browse/CALCITE-3707">functions</a>
+</li>
</ul>
<p>We have also fixed some important bugs:</p>
@@ -1902,10 +2047,14 @@ other software versions as specified in gradle.properties.</p>
<ul>
<li>Constructors for <code class="highlighter-rouge">Project</code>, <code class="highlighter-rouge">TableScan</code>, <code class="highlighter-rouge">Calc</code>, <code class="highlighter-rouge">Aggregate</code> and <code class="highlighter-rouge">Join</code> introduce new parameter named <code class="highlighter-rouge">hints</code> (<a href="https://issues.apache.org/jira/browse/CALCITE-482">CALCITE-482</a>)</li>
<li>Logical <code class="highlighter-rouge">RelNode</code>’s <code class="highlighter-rouge">create</code> method need to pass in hints explicitly (<a href="https://issues.apache.org/jira/browse/CALCITE-3723">CALCITE-3723</a>)</li>
- <li><code class="highlighter-rouge">Project</code> names will not represent in <code class="highlighter-rouge">RelNode</code> digest anymore (<a href="https://issues.apache.org/jira/browse/CALCITE-3713">CALCITE-3713</a>)</li>
- <li><code class="highlighter-rouge">RexCall</code>s are default to be normalized in the <code class="highlighter-rouge">RelNode</code> digest (<a href="https://issues.apache.org/jira/browse/CALCITE-2450">CALCITE-2450</a>)</li>
- <li><code class="highlighter-rouge">RelBuilder.aggregate</code> now would prune the unused fields from the input, thus the plan may change (<a href="https://issues.apache.org/jira/browse/CALCITE-3763">CALCITE-3763</a>)</li>
- <li><code class="highlighter-rouge">RelBuilder.scan</code> and sql-to-rel conversion always invoke <code class="highlighter-rouge">RelOptTable.toRel</code> now, so there may be some plan changes for the <code class="highlighter-rouge">TableScan</code> node if your <code class="highlighter-rouge">RelOptTable.toRel</code> returns a physical rel before</li>
+ <li>
+<code class="highlighter-rouge">Project</code> names will not represent in <code class="highlighter-rouge">RelNode</code> digest anymore (<a href="https://issues.apache.org/jira/browse/CALCITE-3713">CALCITE-3713</a>)</li>
+ <li>
+<code class="highlighter-rouge">RexCall</code>s are default to be normalized in the <code class="highlighter-rouge">RelNode</code> digest (<a href="https://issues.apache.org/jira/browse/CALCITE-2450">CALCITE-2450</a>)</li>
+ <li>
+<code class="highlighter-rouge">RelBuilder.aggregate</code> now would prune the unused fields from the input, thus the plan may change (<a href="https://issues.apache.org/jira/browse/CALCITE-3763">CALCITE-3763</a>)</li>
+ <li>
+<code class="highlighter-rouge">RelBuilder.scan</code> and sql-to-rel conversion always invoke <code class="highlighter-rouge">RelOptTable.toRel</code> now, so there may be some plan changes for the <code class="highlighter-rouge">TableScan</code> node if your <code class="highlighter-rouge">RelOptTable.toRel</code> returns a physical rel before</li>
</ul>
<h4 id="new-features-1-22-0">New features</h4>
@@ -1926,9 +2075,11 @@ other software versions as specified in gradle.properties.</p>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3542">CALCITE-3542</a>] Implement <code class="highlighter-rouge">RepeatUnion</code> All=false</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-482">CALCITE-482</a>] Implement sql and planner hints</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3781">CALCITE-3781</a>] <code class="highlighter-rouge">HintStrategy</code> can specify excluded rules for planner</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3730">CALCITE-3730</a>] Add hints to <code class="highlighter-rouge">RelBuilder</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3730">CALCITE-3730</a>] Add hints to <code class="highlighter-rouge">RelBuilder</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3719">CALCITE-3719</a>] Add hint option checker to customize the option</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3631">CALCITE-3631</a>] Support SQL hints for <code class="highlighter-rouge">Calc</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3631">CALCITE-3631</a>] Support SQL hints for <code class="highlighter-rouge">Calc</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3590">CALCITE-3590</a>] Support SQL hints for <code class="highlighter-rouge">Aggregate</code> (Shuo Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3584">CALCITE-3584</a>] Propagate hints when decorrelating a query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3736">CALCITE-3736</a>] Add an interface in <code class="highlighter-rouge">RelOptRuleCall</code> to customize the propagation of hints before registering into planner rule</li>
@@ -1940,7 +2091,8 @@ other software versions as specified in gradle.properties.</p>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3405">CALCITE-3405</a>] Prune columns for <code class="highlighter-rouge">ProjectableFilterableTable</code> when <code class="highlighter-rouge">Project</code> is not simple mapping (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3349">CALCITE-3349</a>] Add <code class="highlighter-rouge">CREATE FUNCTION</code> and <code class="highlighter-rouge">DROP FUNCTION</code> ddl (Zhenqiu Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3323">CALCITE-3323</a>] Add mode to <code class="highlighter-rouge">SqlValidator</code> that treats statements as valid if they contain unknown functions (Ryan Fu)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3302">CALCITE-3302</a>] Implement <code class="highlighter-rouge">CLASSIFIER</code> and <code class="highlighter-rouge">LAST</code> functions for <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3302">CALCITE-3302</a>] Implement <code class="highlighter-rouge">CLASSIFIER</code> and <code class="highlighter-rouge">LAST</code> functions for <code class="highlighter-rouge">MATCH_RECOGNIZE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3112">CALCITE-3112</a>] Support <code class="highlighter-rouge">Window</code> in <code class="highlighter-rouge">RelToSqlConverter</code> (Wenhui Tang)</li>
</ul>
@@ -1949,28 +2101,37 @@ other software versions as specified in gradle.properties.</p>
<ul>
<li>Following CALCITE-3769: Add BindableTableScanRule into the default ruleset</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3826">CALCITE-3826</a>] <code class="highlighter-rouge">UPDATE</code> assigns wrong type to bind variables</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3830">CALCITE-3830</a>] The ‘approximate’ field should be considered when computing the digest of <code class="highlighter-rouge">AggregateCall</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3830">CALCITE-3830</a>] The ‘approximate’ field should be considered when computing the digest of <code class="highlighter-rouge">AggregateCall</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3807">CALCITE-3807</a>] checkForSatisfiedConverters() is unnecessary</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3803">CALCITE-3803</a>] Enhance <code class="highlighter-rouge">RexSimplify</code> to simplify ‘a>1 or (a<3 and b)’ to ‘a>1 or b’ if column a is not nullable</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2707">CALCITE-2707</a>] Information about distinct aggregation is lost in <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3801">CALCITE-3801</a>] Deprecate <code class="highlighter-rouge">SqlToRelConverter.Config#isConvertTableAccess</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2707">CALCITE-2707</a>] Information about distinct aggregation is lost in <code class="highlighter-rouge">MATCH_RECOGNIZE</code>
+</li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3801">CALCITE-3801</a>] Deprecate <code class="highlighter-rouge">SqlToRelConverter.Config#isConvertTableAccess</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3791">CALCITE-3791</a>] <code class="highlighter-rouge">HepPlanner</code> does not clear metadata cache for the ancestors of discarded node when a transformation happens</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3794">CALCITE-3794</a>] <code class="highlighter-rouge">RexSimplify</code> should return early if there is no pulled up predicate when simplifying using predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3798">CALCITE-3798</a>] Make <code class="highlighter-rouge">RelBuilder</code> view expander pluggable</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3769">CALCITE-3769</a>] Deprecate <code class="highlighter-rouge">TableScanRule</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3769">CALCITE-3769</a>] Deprecate <code class="highlighter-rouge">TableScanRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3774">CALCITE-3774</a>] In <code class="highlighter-rouge">RelBuilder</code> and <code class="highlighter-rouge">ProjectMergeRule</code>, prevent merges when it would increase expression complexity</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3763">CALCITE-3763</a>] <code class="highlighter-rouge">RelBuilder.aggregate</code> should prune unused fields from the input, if the input is a <code class="highlighter-rouge">Project</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3763">CALCITE-3763</a>] <code class="highlighter-rouge">RelBuilder.aggregate</code> should prune unused fields from the input, if the input is a <code class="highlighter-rouge">Project</code>
+</li>
<li>Add <code class="highlighter-rouge">RelBuilder.transform</code>, which allows you to clone a <code class="highlighter-rouge">RelBuilder</code> with slightly different Config</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3785">CALCITE-3785</a>] <code class="highlighter-rouge">HepPlanner.belongToDag()</code> doesn’t have to use mapDigestToVertex (Xiening Dai)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3783">CALCITE-3783</a>] <code class="highlighter-rouge">PruneEmptyRules#JOIN_RIGHT_INSTANCE</code> wrong behavior for <code class="highlighter-rouge">JoinRelType.ANTI</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3783">CALCITE-3783</a>] <code class="highlighter-rouge">PruneEmptyRules#JOIN_RIGHT_INSTANCE</code> wrong behavior for <code class="highlighter-rouge">JoinRelType.ANTI</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3773">CALCITE-3773</a>] Wrong parameter in <code class="highlighter-rouge">EnumerableMergeJoin::create</code> `method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3768">CALCITE-3768</a>] <code class="highlighter-rouge">VolcanoPlanner.changeTraitsUsingConverters()</code> has parameter that’s never used</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3766">CALCITE-3766</a>] Add a Builder to <code class="highlighter-rouge">RelHint</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3766">CALCITE-3766</a>] Add a Builder to <code class="highlighter-rouge">RelHint</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3765">CALCITE-3765</a>] Returns early when there is an existing operand when assigning operands solve order</li>
- <li>Switch <code class="highlighter-rouge">RelBuilder.Config</code> to an interface, and deprecate <code class="highlighter-rouge">RelBuilder.ConfigBuilder</code></li>
+ <li>Switch <code class="highlighter-rouge">RelBuilder.Config</code> to an interface, and deprecate <code class="highlighter-rouge">RelBuilder.ConfigBuilder</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3764">CALCITE-3764</a>] <code class="highlighter-rouge">AggregateCaseToFilterRule</code> handles <code class="highlighter-rouge">NULL</code> values incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1824">CALCITE-1824</a>] <code class="highlighter-rouge">GROUP_ID</code> returns wrong result (DonnyZone)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3756">CALCITE-3756</a>] <code class="highlighter-rouge">RelSubset</code> should not match <code class="highlighter-rouge">operand(RelNode.class)</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3756">CALCITE-3756</a>] <code class="highlighter-rouge">RelSubset</code> should not match <code class="highlighter-rouge">operand(RelNode.class)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3738">CALCITE-3738</a>] Missing order by logical plan for <code class="highlighter-rouge">INSERT</code> statement</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3676">CALCITE-3676</a>] <code class="highlighter-rouge">VolcanoPlanner.dumpGraphviz</code> should handle exception gracefully (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3653">CALCITE-3653</a>] Support <code class="highlighter-rouge">TableModify</code> in <code class="highlighter-rouge">ToLogicalConverter</code> (dz)</li>
@@ -1982,8 +2143,10 @@ other software versions as specified in gradle.properties.</p>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3736">CALCITE-3736</a>] Add an interface in <code class="highlighter-rouge">RelOptRuleCall</code> to customize the propagation of hints before registering into planner rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3721">CALCITE-3721</a>] <code class="highlighter-rouge">Filter</code> of distinct aggregate call is lost after applying <code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> (Shuo Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3644">CALCITE-3644</a>] Add <code class="highlighter-rouge">ProjectSetOpTransposeRule</code> to normalize materialized view (xy2953396112)</li>
- <li>Add method <code class="highlighter-rouge">Pair.forEach(Iterable, Iterable, BiConsumer)</code></li>
- <li>Really deprecate <code class="highlighter-rouge">RelBuilder.groupKey(ImmutableBitSet, ImmutableList<ImmutableBitSet>)</code></li>
+ <li>Add method <code class="highlighter-rouge">Pair.forEach(Iterable, Iterable, BiConsumer)</code>
+</li>
+ <li>Really deprecate <code class="highlighter-rouge">RelBuilder.groupKey(ImmutableBitSet, ImmutableList<ImmutableBitSet>)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3729">CALCITE-3729</a>] Filters failed to be pushed down when it’s identical to join condition (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3725">CALCITE-3725</a>] <code class="highlighter-rouge">RelMetadataTest</code> fails with NPE due to unsafe <code class="highlighter-rouge">RelMetadataQuery.instance</code> call (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3675">CALCITE-3675</a>] SQL to Rel conversion is broken for coalesce on nullable field (DonnyZone)</li>
@@ -1992,22 +2155,26 @@ other software versions as specified in gradle.properties.</p>
<li>Refine <code class="highlighter-rouge">RuleQueue#addMatch</code>: skip the match if it is not required for the phase</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3364">CALCITE-3364</a>] <code class="highlighter-rouge">ClassCastException</code> if group by is used on the result of scalar valued table function (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3722">CALCITE-3722</a>] Add <code class="highlighter-rouge">Hook#PLAN_BEFORE_IMPLEMENTATION</code> to capture the plan after optimization</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3713">CALCITE-3713</a>] Remove column names from <code class="highlighter-rouge">Project#digest</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3713">CALCITE-3713</a>] Remove column names from <code class="highlighter-rouge">Project#digest</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2450">CALCITE-2450</a>] Reorder <code class="highlighter-rouge">RexCall</code> predicates to a canonical form
validation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3677">CALCITE-3677</a>] Add assertion to <code class="highlighter-rouge">EnumerableTableScan</code> constructor to validate if the table is suitable for enumerable scan</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3715">CALCITE-3715</a>] Add an interface to pass the table hints to <code class="highlighter-rouge">RelOptTable</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3715">CALCITE-3715</a>] Add an interface to pass the table hints to <code class="highlighter-rouge">RelOptTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3714">CALCITE-3714</a>] <code class="highlighter-rouge">BitString.createFromBytes</code> reverses order of the bits in each byte</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3712">CALCITE-3712</a>] Optimize lossless casts in <code class="highlighter-rouge">RexSimplify</code>: CAST(CAST(intExpr as BIGINT) as INT) => intExpr</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3587">CALCITE-3587</a>] <code class="highlighter-rouge">RexBuilder</code> may lose decimal fraction for creating literal with <code class="highlighter-rouge">DECIMAL</code> type (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3658">CALCITE-3658</a>] <code class="highlighter-rouge">TableModify</code> of <code class="highlighter-rouge">Update</code> contains correlated variable by mistake (Jin Xing)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3711">CALCITE-3711</a>] <code class="highlighter-rouge">Correlate</code> should override <code class="highlighter-rouge">estimateRowCount</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3711">CALCITE-3711</a>] <code class="highlighter-rouge">Correlate</code> should override <code class="highlighter-rouge">estimateRowCount</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3606">CALCITE-3606</a>] Derive target table column list by mistake when convert <code class="highlighter-rouge">TableModify</code> to Sql string (JinXing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3526">CALCITE-3526</a>] <code class="highlighter-rouge">SqlPrettyWriter</code> should have options to fold/chop long lines, print leading commas</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3328">CALCITE-3328</a>] Immutable beans, powered by reflection</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3672">CALCITE-3672</a>] Support implicit type coercion for insert and update</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3651">CALCITE-3651</a>] NPE when convert relational algebra that correlates <code class="highlighter-rouge">TableFunctionScan</code> (Wang Yanlin)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3666">CALCITE-3666</a>] Refine <code class="highlighter-rouge">RelMdColumnUniqueness</code> and <code class="highlighter-rouge">RelMdUniqueKeys</code> for <code class="highlighter-rouge">Calc</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3666">CALCITE-3666</a>] Refine <code class="highlighter-rouge">RelMdColumnUniqueness</code> and <code class="highlighter-rouge">RelMdUniqueKeys</code> for <code class="highlighter-rouge">Calc</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3655">CALCITE-3655</a>] <code class="highlighter-rouge">SortJoinTransposeRule</code> must not push sort into <code class="highlighter-rouge">Project</code> that contains <code class="highlighter-rouge">OVER</code> expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3649">CALCITE-3649</a>] Hints should be propagated correctly in planner rules if original node is transformed to different kind</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3563">CALCITE-3563</a>] When resolving method call in calcite runtime, add type check and match mechanism for input arguments (DonnyZone)</li>
@@ -2015,7 +2182,8 @@ validation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3652">CALCITE-3652</a>] Add org.apiguardian:apiguardian-api to specify API status</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3632">CALCITE-3632</a>] Add IntersectToIntersectUnify Rule in SubstitutionVisitor (xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3643">CALCITE-3643</a>] Prevent matching <code class="highlighter-rouge">JoinCommuteRule</code> when both inputs are the same</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3630">CALCITE-3630</a>] Improve <code class="highlighter-rouge">ReduceExpressionsRule</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3630">CALCITE-3630</a>] Improve <code class="highlighter-rouge">ReduceExpressionsRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3607">CALCITE-3607</a>] Support <code class="highlighter-rouge">LogicalTableModify</code> in RelShuttle (xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3618">CALCITE-3618</a>] ProjectToWindowRule - correct isDependent checking (lxian2shell)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3635">CALCITE-3635</a>] Supports hint option as string or numeric literal</li>
@@ -2024,7 +2192,8 @@ validation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3387">CALCITE-3387</a>] Query with GROUP BY and JOIN … USING wrongly fails with “Column DEPTNO is ambiguous” error</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3604">CALCITE-3604</a>] Fixing <code class="highlighter-rouge">SqlXmlFunctionsTest</code> locale (ritesh-kapoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3608">CALCITE-3608</a>] Promote <code class="highlighter-rouge">RelOptUtil.createCastRel</code> to not create new projection if the input rel is already a project</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3603">CALCITE-3603</a>] <code class="highlighter-rouge">SqlLateralOperator</code>’s unparse add additional keyword <code class="highlighter-rouge">LATERAL</code> when the inner operator is <code class="highlighter-rouge">SqlSnapshot</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3603">CALCITE-3603</a>] <code class="highlighter-rouge">SqlLateralOperator</code>’s unparse add additional keyword <code class="highlighter-rouge">LATERAL</code> when the inner operator is <code class="highlighter-rouge">SqlSnapshot</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3599">CALCITE-3599</a>] Override toString() of <code class="highlighter-rouge">RexRangeRef</code> to avoid null string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3598">CALCITE-3598</a>] <code class="highlighter-rouge">EnumerableTableScan</code>: wrong <code class="highlighter-rouge">JavaRowFormat</code> for elementType String</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3575">CALCITE-3575</a>] IndexOutOfBoundsException when converting sql to rel</li>
@@ -2076,7 +2245,8 @@ through the outer and inner enumerables and returns the results step by step.</l
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3456">CALCITE-3456</a>] AssertionError throws for aggregation with same digest <code class="highlighter-rouge">IN</code> subqueries in same scope</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3408">CALCITE-3408</a>] Add support for enumerable intersect/minus all (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3423">CALCITE-3423</a>] Support using <code class="highlighter-rouge">CAST</code> operation and <code class="highlighter-rouge">BOOLEAN</code> type value in table macro (Wang Yanlin)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3458">CALCITE-3458</a>] Remove desc in <code class="highlighter-rouge">AbstractRelNode</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3458">CALCITE-3458</a>] Remove desc in <code class="highlighter-rouge">AbstractRelNode</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3400">CALCITE-3400</a>] Implement left/right/semi/anti/full join in interpreter (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3254">CALCITE-3254</a>] Exception while deserializing with interval type or with empty partition/order key for <code class="highlighter-rouge">RexOver</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3457">CALCITE-3457</a>] <code class="highlighter-rouge">RexSimplify</code> incorrectly simplifies <code class="highlighter-rouge">IS NOT NULL</code> operator with <code class="highlighter-rouge">ITEM</code> call</li>
@@ -2095,10 +2265,12 @@ just add a unit test for this specific scenario</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3451">CALCITE-3451</a>] Support <code class="highlighter-rouge">TableModify</code> in <code class="highlighter-rouge">RelMdNodeTypes</code> (xy2953396113)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3444">CALCITE-3444</a>] Upgrade SQLLine to 1.9.0, and solve “Class path contains multiple SLF4J bindings” problem</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3436">CALCITE-3436</a>] In <code class="highlighter-rouge">CalciteConnectionConfigImpl</code>, add isSet and unset methods (Ryan Fu)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3440">CALCITE-3440</a>] <code class="highlighter-rouge">RelToSqlConverter</code> does not properly alias ambiguous <code class="highlighter-rouge">ORDER BY</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3440">CALCITE-3440</a>] <code class="highlighter-rouge">RelToSqlConverter</code> does not properly alias ambiguous <code class="highlighter-rouge">ORDER BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3441">CALCITE-3441</a>] Remove <code class="highlighter-rouge">SqlTypeExplicitPrecedenceList.COMPACT_NUMERIC_TYPES</code> because the NULL delimiters are useless</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3428">CALCITE-3428</a>] Refine <code class="highlighter-rouge">RelMdColumnUniqueness</code> for <code class="highlighter-rouge">Filter</code> by considering constant columns (Jin Xing)</li>
- <li>Add <code class="highlighter-rouge">RelBuilder.fields(ImmutableBitSet)</code></li>
+ <li>Add <code class="highlighter-rouge">RelBuilder.fields(ImmutableBitSet)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3424">CALCITE-3424</a>] AssertionError thrown for user-defined table function with array argument (Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3414">CALCITE-3414</a>] In calcite-core, use RexToLixTranslator.convert for type conversion code generation uniformly (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3416">CALCITE-3416</a>] SQL Dialects DEFAULTs should be more extensible</li>
@@ -2131,7 +2303,8 @@ and the non-distinct expressions distinct constraints can be ignored</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3365">CALCITE-3365</a>] Don’t require use of <code class="highlighter-rouge">JdbcSchema</code> in <code class="highlighter-rouge">QuerySqlStatisticProvider</code> (Lindsey Meyer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3239">CALCITE-3239</a>] <code class="highlighter-rouge">Calc#accept(RexShuttle shuttle)</code> does not update rowType. (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3288">CALCITE-3288</a>] In <code class="highlighter-rouge">ConstantExpression</code> support <code class="highlighter-rouge">SET</code> literals (xy2953396112)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1178">CALCITE-1178</a>] Allow <code class="highlighter-rouge">SqlBetweenOperator</code> to compare <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">TIMESTAMP</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1178">CALCITE-1178</a>] Allow <code class="highlighter-rouge">SqlBetweenOperator</code> to compare <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">TIMESTAMP</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3348">CALCITE-3348</a>] AssertionError while determining distribution of Calc (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3287">CALCITE-3287</a>] <code class="highlighter-rouge">Union</code> in <code class="highlighter-rouge">RelMdRowCount.java</code> doesn’t take into account ‘union all’ (Hong Shen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3357">CALCITE-3357</a>] <code class="highlighter-rouge">Trivial</code> null checking in <code class="highlighter-rouge">RelSet#addAbstractConverters</code> (Jin Xing)</li>
@@ -2247,7 +2420,8 @@ generates the <code class="highlighter-rouge">ROW</code> keyword only if the dia
<li>Site: Change GitHub avatar links to https</li>
</ul>
-<h2 id="v1-21-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.21.0">1.21.0</a> / 2019-09-11</h2>
+<h2 id="v1-21-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.21.0">1.21.0</a> / 2019-09-11</h2>
<p>This release comes two months after 1.20.0. It includes more than 100 resolved
issues, comprising a large number of new features as well as general improvements
@@ -2325,15 +2499,18 @@ Add <code class="highlighter-rouge">CONVERT_TIMEZONE</code>, <code class="highli
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3235">CALCITE-3235</a>]
Add <code class="highlighter-rouge">CONCAT</code> function for Redshift (Ryan Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3250">CALCITE-3250</a>]
-Support nested collection type for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
+Support nested collection type for <code class="highlighter-rouge">SqlDataTypeSpec</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1935">CALCITE-1935</a>]
Implement <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Julian Feinauer, Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2843">CALCITE-2843</a>]
Support PostgreSQL cast operator (<code class="highlighter-rouge">::</code>) (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3233">CALCITE-3233</a>]
-Support <code class="highlighter-rouge">ROW</code> type for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
+Support <code class="highlighter-rouge">ROW</code> type for <code class="highlighter-rouge">SqlDataTypeSpec</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3231">CALCITE-3231</a>]
-Support <code class="highlighter-rouge">ARRAY</code> type for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
+Support <code class="highlighter-rouge">ARRAY</code> type for <code class="highlighter-rouge">SqlDataTypeSpec</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2624">CALCITE-2624</a>]
Add a rule to copy a sort below a join operator (Khawla Mouhoubi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3031">CALCITE-3031</a>]
@@ -2344,7 +2521,8 @@ Implement <code class="highlighter-rouge">CHR</code> function (Sergey Tsvetkov,
File adapter for parsing JSON files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3144">CALCITE-3144</a>]
Add rule, <code class="highlighter-rouge">AggregateCaseToFilterRule</code>, that converts <code class="highlighter-rouge">SUM(CASE WHEN b THEN x
-END)</code> to <code class="highlighter-rouge">SUM(x) FILTER (WHERE b)</code></li>
+END)</code> to <code class="highlighter-rouge">SUM(x) FILTER (WHERE b)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2995">CALCITE-2995</a>]
Implement <code class="highlighter-rouge">DAYNAME</code>,<code class="highlighter-rouge">MONTHNAME</code> functions; add <code class="highlighter-rouge">locale</code> connection property
(xuqianjin)</li>
@@ -2406,9 +2584,11 @@ Align ‘Property’ in the serialized XML string of <code class="highlighter-ro
Make <code class="highlighter-rouge">equals</code> and <code class="highlighter-rouge">hashCode</code> methods final in <code class="highlighter-rouge">AbstractRelNode</code>, and remove
overriding methods in <code class="highlighter-rouge">EnumerableTableScan</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3089">CALCITE-3089</a>]
-Deprecate <code class="highlighter-rouge">EquiJoin</code></li>
+Deprecate <code class="highlighter-rouge">EquiJoin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3267">CALCITE-3267</a>]
-Remove method <code class="highlighter-rouge">SqlDataTypeSpec#deriveType(RelDataTypefactory)</code></li>
+Remove method <code class="highlighter-rouge">SqlDataTypeSpec#deriveType(RelDataTypefactory)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3214">CALCITE-3214</a>]
Add <code class="highlighter-rouge">UnionToUnionRule</code> for materialization matching (refine rule name) (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3214">CALCITE-3214</a>]
@@ -2420,7 +2600,8 @@ Add <code class="highlighter-rouge">UnionToUnionRule</code> for materialization
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3236">CALCITE-3236</a>]
Handle issues found in static code analysis (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3238">CALCITE-3238</a>]
-Support Time Zone suffix of DateTime types for <code class="highlighter-rouge">SqlDataTypeSpec</code></li>
+Support Time Zone suffix of DateTime types for <code class="highlighter-rouge">SqlDataTypeSpec</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3159">CALCITE-3159</a>]
Remove <code class="highlighter-rouge">DISTINCT</code> flag from calls to <code class="highlighter-rouge">MIN</code>, <code class="highlighter-rouge">MAX</code>, <code class="highlighter-rouge">BIT_OR</code>, <code class="highlighter-rouge">BIT_AND</code>
aggregate functions (xuqianjin)</li>
@@ -2432,12 +2613,15 @@ For boolean properties, empty string should mean “true”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3226">CALCITE-3226</a>]
<code class="highlighter-rouge">RelBuilder</code> doesn’t keep the alias when <code class="highlighter-rouge">scan</code> from an expanded view (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3198">CALCITE-3198</a>]
-Enhance <code class="highlighter-rouge">RexSimplify</code> to handle <code class="highlighter-rouge">(x <> a or x <> b)</code></li>
+Enhance <code class="highlighter-rouge">RexSimplify</code> to handle <code class="highlighter-rouge">(x <> a or x <> b)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3101">CALCITE-3101</a>]
-Don’t push non-equi join conditions into <code class="highlighter-rouge">Project</code> below <code class="highlighter-rouge">Join</code></li>
+Don’t push non-equi join conditions into <code class="highlighter-rouge">Project</code> below <code class="highlighter-rouge">Join</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3227">CALCITE-3227</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> when checking candidate parent match’s input
-ordinal in <code class="highlighter-rouge">VolcanoRuleCall</code></li>
+ordinal in <code class="highlighter-rouge">VolcanoRuleCall</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3177">CALCITE-3177</a>]
Ensure correct deserialization of relational algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3218">CALCITE-3218</a>]
@@ -2447,7 +2631,8 @@ Syntax error while parsing <code class="highlighter-rouge">DATEADD</code> functi
literals that make planning difficult</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3191">CALCITE-3191</a>]
In JDBC adapter for MySQL, implement <code class="highlighter-rouge">Values</code> by generating <code class="highlighter-rouge">SELECT</code> without
-<code class="highlighter-rouge">FROM</code></li>
+<code class="highlighter-rouge">FROM</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3147">CALCITE-3147</a>]
In JDBC adapter, accommodate the idiosyncrasies of how BigQuery (standard SQL)
quotes character literals and identifiers</li>
@@ -2494,7 +2679,8 @@ Make <code class="highlighter-rouge">RelBuilder</code> configurable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3113">CALCITE-3113</a>]
Equivalent <code class="highlighter-rouge">MutableAggregate</code>s with different row types should match with each
other (Jin Xing)</li>
- <li><a href="https://issues.apache.org/jira/browse/CALCITE-3187">CALCITE-3187</a>:
+ <li>
+<a href="https://issues.apache.org/jira/browse/CALCITE-3187">CALCITE-3187</a>:
Make decimal type inference overridable (Praveen Kumar)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3145">CALCITE-3145</a>]
<code class="highlighter-rouge">RelBuilder.aggregate</code> throws <code class="highlighter-rouge">IndexOutOfBoundsException</code> if <code class="highlighter-rouge">groupKey</code> is
@@ -2502,7 +2688,8 @@ non-empty and there are duplicate aggregate functions</li>
<li>Change type of <code class="highlighter-rouge">SqlStdOperatorTable.GROUPING</code> field to public class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3196">CALCITE-3196</a>]
In <code class="highlighter-rouge">Frameworks</code>, add <code class="highlighter-rouge">interface BasePrepareAction</code> (a functional interface) and
-deprecate <code class="highlighter-rouge">abstract class PrepareAction</code></li>
+deprecate <code class="highlighter-rouge">abstract class PrepareAction</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3183">CALCITE-3183</a>]
During field trimming, <code class="highlighter-rouge">Filter</code> is copied with wrong traitSet (Juhwan Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3189">CALCITE-3189</a>]
@@ -2511,16 +2698,19 @@ Multiple fixes for Oracle SQL dialect</li>
<code class="highlighter-rouge">Project#accept</code>(<code class="highlighter-rouge">RexShuttle</code> shuttle) does not update rowType</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3188">CALCITE-3188</a>]
<code class="highlighter-rouge">IndexOutOfBoundsException</code> in <code class="highlighter-rouge">ProjectFilterTransposeRule</code> when executing
-<code class="highlighter-rouge">SELECT COUNT</code></li>
+<code class="highlighter-rouge">SELECT COUNT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3160">CALCITE-3160</a>]
Failed to materialize when the aggregate function uses group key (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3170">CALCITE-3170</a>]
ANTI join on conditions push down generates wrong plan</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3169">CALCITE-3169</a>]
decorrelateRel method should return when meeting <code class="highlighter-rouge">SEMI</code>/<code class="highlighter-rouge">ANTI</code> join in
-<code class="highlighter-rouge">RelDecorrelator</code></li>
+<code class="highlighter-rouge">RelDecorrelator</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3171">CALCITE-3171</a>]
-<code class="highlighter-rouge">SemiJoin</code> on conditions push down throws <code class="highlighter-rouge">IndexOutOfBoundsException</code></li>
+<code class="highlighter-rouge">SemiJoin</code> on conditions push down throws <code class="highlighter-rouge">IndexOutOfBoundsException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3172">CALCITE-3172</a>]
<code class="highlighter-rouge">RelBuilder#empty</code> does not keep aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3121">CALCITE-3121</a>]
@@ -2528,9 +2718,11 @@ decorrelateRel method should return when meeting <code class="highlighter-rouge"
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3152">CALCITE-3152</a>]
Unify throws in SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3125">CALCITE-3125</a>]
-Remove completely <code class="highlighter-rouge">class CorrelateJoinType</code></li>
+Remove completely <code class="highlighter-rouge">class CorrelateJoinType</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3133">CALCITE-3133</a>]
-Remove completely <code class="highlighter-rouge">class SemiJoinType</code></li>
+Remove completely <code class="highlighter-rouge">class SemiJoinType</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3126">CALCITE-3126</a>]
Remove deprecated <code class="highlighter-rouge">SemiJoin</code> usage completely</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3146">CALCITE-3146</a>]
@@ -2558,7 +2750,8 @@ sink have non-equal number of fields</li>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3322">CALCITE-3322</a>]
-Remove duplicate test case in <code class="highlighter-rouge">RelMetadataTest</code></li>
+Remove duplicate test case in <code class="highlighter-rouge">RelMetadataTest</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3314">CALCITE-3314</a>]
CVSS dependency-check-maven fails for calcite-pig, calcite-piglet,
calcite-spark</li>
@@ -2566,7 +2759,8 @@ calcite-spark</li>
Multiple failures in Druid IT tests due to implicit casts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3307">CALCITE-3307</a>]
<code class="highlighter-rouge">PigRelExTest</code>, <code class="highlighter-rouge">PigRelOpTest</code> and <code class="highlighter-rouge">PigScriptTest</code> fail on Windows</li>
- <li>In <code class="highlighter-rouge">SqlFunctionsTest</code>, replace <code class="highlighter-rouge">assertEquals</code> and <code class="highlighter-rouge">assertNull</code> with <code class="highlighter-rouge">assertThat</code></li>
+ <li>In <code class="highlighter-rouge">SqlFunctionsTest</code>, replace <code class="highlighter-rouge">assertEquals</code> and <code class="highlighter-rouge">assertNull</code> with <code class="highlighter-rouge">assertThat</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3258">CALCITE-3258</a>]
Upgrade jackson-databind from 2.9.9 to 2.9.9.3, and kafka-clients from 2.0.0
to 2.1.1</li>
@@ -2616,7 +2810,8 @@ Add the new logo to the website</li>
<li>Add 1.20.0 release announcement</li>
</ul>
-<h2 id="v1-20-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.20.0">1.20.0</a> / 2019-06-24</h2>
+<h2 id="v1-20-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.20.0">1.20.0</a> / 2019-06-24</h2>
<p>This release comes three months after 1.19.0. It includes a large number of bug fixes,
and additional SQL functions. There is now also explicit support for anti-joins.
@@ -2633,15 +2828,22 @@ other software versions as specified in <code class="highlighter-rouge">pom.xml<
<h4 id="breaking-1-20-0">Breaking Changes</h4>
<ul>
- <li>Make <code class="highlighter-rouge">EnumerableMergeJoin</code> extend <code class="highlighter-rouge">Join</code> instead of <code class="highlighter-rouge">EquiJoin</code></li>
- <li><code class="highlighter-rouge">Correlate</code> use <code class="highlighter-rouge">JoinRelType</code> instead of <code class="highlighter-rouge">SemiJoinType</code></li>
- <li>Rename <code class="highlighter-rouge">EnumerableThetaJoin</code> to <code class="highlighter-rouge">EnumerableNestedLoopJoin</code></li>
- <li>Rename <code class="highlighter-rouge">EnumerableJoin</code> to <code class="highlighter-rouge">EnumerableHashJoin</code></li>
+ <li>Make <code class="highlighter-rouge">EnumerableMergeJoin</code> extend <code class="highlighter-rouge">Join</code> instead of <code class="highlighter-rouge">EquiJoin</code>
+</li>
+ <li>
+<code class="highlighter-rouge">Correlate</code> use <code class="highlighter-rouge">JoinRelType</code> instead of <code class="highlighter-rouge">SemiJoinType</code>
+</li>
+ <li>Rename <code class="highlighter-rouge">EnumerableThetaJoin</code> to <code class="highlighter-rouge">EnumerableNestedLoopJoin</code>
+</li>
+ <li>Rename <code class="highlighter-rouge">EnumerableJoin</code> to <code class="highlighter-rouge">EnumerableHashJoin</code>
+</li>
<li>Remove <code class="highlighter-rouge">SemiJoinFactory</code> from <code class="highlighter-rouge">RelBuilder</code>, method <code class="highlighter-rouge">semiJoin</code> now returns a <code class="highlighter-rouge">LogicalJoin</code>
-with join type <code class="highlighter-rouge">JoinRelType.SEMI</code> instead of a <code class="highlighter-rouge">SemiJoin</code></li>
+with join type <code class="highlighter-rouge">JoinRelType.SEMI</code> instead of a <code class="highlighter-rouge">SemiJoin</code>
+</li>
<li>Rules: <code class="highlighter-rouge">SemiJoinFilterTransposeRule</code>, <code class="highlighter-rouge">SemiJoinJoinTransposeRule</code>, <code class="highlighter-rouge">SemiJoinProjectTransposeRule</code>
and <code class="highlighter-rouge">SemiJoinRemoveRule</code> match <code class="highlighter-rouge">LogicalJoin</code> with join type <code class="highlighter-rouge">SEMI</code> instead of <code class="highlighter-rouge">SemiJoin</code>.</li>
- <li><code class="highlighter-rouge">SemiJoin</code>, <code class="highlighter-rouge">EnumerableSemiJoin</code>, <code class="highlighter-rouge">SemiJoinType</code> and <code class="highlighter-rouge">CorrelateJoinType</code>, and methods that use them,
+ <li>
+<code class="highlighter-rouge">SemiJoin</code>, <code class="highlighter-rouge">EnumerableSemiJoin</code>, <code class="highlighter-rouge">SemiJoinType</code> and <code class="highlighter-rouge">CorrelateJoinType</code>, and methods that use them,
are deprecated for quick removal in 1.21</li>
<li>The Elasticsearch adapter no longer supports <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.0/removal-of-types.html">Elasticsearch types</a>.
Calcite table names will reflect index names in Elasticsearch (as opposed to types).
@@ -2661,7 +2863,8 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2985">CALCITE-2985</a>] Implement <code class="highlighter-rouge">JSON_STORAGE_SIZE</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2601">CALCITE-2601</a>] Add <code class="highlighter-rouge">REVERSE</code> function (pingle wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2712">CALCITE-2712</a>] Add rule to remove null-generating side of a Join</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2965">CALCITE-2965</a>] Implement string functions: <code class="highlighter-rouge">REPEAT</code>, <code class="highlighter-rouge">SPACE</code>, <code class="highlighter-rouge">SOUNDEX</code>, <code class="highlighter-rouge">DIFFERENCE</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2965">CALCITE-2965</a>] Implement string functions: <code class="highlighter-rouge">REPEAT</code>, <code class="highlighter-rouge">SPACE</code>, <code class="highlighter-rouge">SOUNDEX</code>, <code class="highlighter-rouge">DIFFERENCE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2975">CALCITE-2975</a>] Implement <code class="highlighter-rouge">JSON_REMOVE</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2933">CALCITE-2933</a>] Add timestamp extract for casts from timestamp type to other types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3011">CALCITE-3011</a>] Support left and right outer joins with <code class="highlighter-rouge">AggregateJoinTransposeRule</code> (Vineet Garg)</li>
@@ -2685,7 +2888,8 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3119">CALCITE-3119</a>] Deprecate Linq4j <code class="highlighter-rouge">CorrelateJoinType</code> (in favor of <code class="highlighter-rouge">JoinType</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3087">CALCITE-3087</a>] <code class="highlighter-rouge">AggregateOnProjectToAggregateUnifyRule</code> ignores Project incorrectly when its Mapping breaks ordering (DonnyZone)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2744">CALCITE-2744</a>] Remove usage of deprecated API in <code class="highlighter-rouge">MockSqlOperatorTable</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2744">CALCITE-2744</a>] Remove usage of deprecated API in <code class="highlighter-rouge">MockSqlOperatorTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3123">CALCITE-3123</a>] In <code class="highlighter-rouge">RelBuilder</code>, eliminate duplicate aggregate calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3116">CALCITE-3116</a>] Upgrade to Avatica 1.15</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2744">CALCITE-2744</a>] <code class="highlighter-rouge">RelDecorrelator</code> use wrong output map for <code class="highlighter-rouge">LogicalAggregate</code> decorrelate (godfreyhe and Danny Chan)</li>
@@ -2695,8 +2899,10 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2944">CALCITE-2944</a>] Deprecate Aggregate indicator and remove fields where possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3098">CALCITE-3098</a>] Upgrade SQLLine to 1.8.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2742">CALCITE-2742</a>] Read values of <code class="highlighter-rouge">USER</code> and <code class="highlighter-rouge">SYSTEM_USER</code> variables from <code class="highlighter-rouge">DataContext</code> (Siddharth Teotia, Jacques Nadeau)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3082">CALCITE-3082</a>] Fix NPE in <code class="highlighter-rouge">SqlUtil#getSelectListItem</code></li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3093">CALCITE-3093</a>] Remove JDBC connection calls from <code class="highlighter-rouge">PlannerImpl</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3082">CALCITE-3082</a>] Fix NPE in <code class="highlighter-rouge">SqlUtil#getSelectListItem</code>
+</li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3093">CALCITE-3093</a>] Remove JDBC connection calls from <code class="highlighter-rouge">PlannerImpl</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3095">CALCITE-3095</a>] Add several system properties to control enabling/disabling of rules and traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2696">CALCITE-2696</a>] Improve design of join-like relational expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3097">CALCITE-3097</a>] GROUPING SETS breaks on sets of size > 1 due to precedence issues (Steven Talbot)</li>
@@ -2709,19 +2915,23 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3077">CALCITE-3077</a>] Rewrite <code class="highlighter-rouge">CUBE</code>&<code class="highlighter-rouge">ROLLUP</code> queries in <code class="highlighter-rouge">SparkSqlDialect</code> (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3090">CALCITE-3090</a>] Remove Central configuration</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2807">CALCITE-2807</a>] Fix <code class="highlighter-rouge">IS NOT DISTINCT FROM</code> expression identification in <code class="highlighter-rouge">RelOptUtil#pushDownJoinConditions</code>()</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3050">CALCITE-3050</a>] Integrate <code class="highlighter-rouge">SqlDialect</code> and <code class="highlighter-rouge">SqlParser.Config</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3050">CALCITE-3050</a>] Integrate <code class="highlighter-rouge">SqlDialect</code> and <code class="highlighter-rouge">SqlParser.Config</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3023">CALCITE-3023</a>] Upgrade elastic search to 7.x (Takako Shimamoto)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3067">CALCITE-3067</a>] Splunk adapter cannot parse right session keys from Splunk 7.2 (Shawn Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3076">CALCITE-3076</a>] <code class="highlighter-rouge">AggregateJoinTransposeRule</code> throws error for unique under aggregate keys when generating merged calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3068">CALCITE-3068</a>] <code class="highlighter-rouge">testSubprogram()</code> does not test whether subprogram gets re-executed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3072">CALCITE-3072</a>] Generate right SQL for <code class="highlighter-rouge">FLOOR&SUBSTRING</code> functions in <code class="highlighter-rouge">SparkSqlDialect</code> (DonnyZone)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3074">CALCITE-3074</a>] Move MySQL’s JSON operators to <code class="highlighter-rouge">SqlLibraryOperators</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3074">CALCITE-3074</a>] Move MySQL’s JSON operators to <code class="highlighter-rouge">SqlLibraryOperators</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3062">CALCITE-3062</a>] Do not populate <code class="highlighter-rouge">provenanceMap</code> if not debug</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2282">CALCITE-2282</a>] Remove sql operator table from parser</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3052">CALCITE-3052</a>] Error while applying rule <code class="highlighter-rouge">MaterializedViewAggregateRule</code>(Project-Aggregate): <code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3052">CALCITE-3052</a>] Error while applying rule <code class="highlighter-rouge">MaterializedViewAggregateRule</code>(Project-Aggregate): <code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3066">CALCITE-3066</a>] <code class="highlighter-rouge">RelToSqlConverter</code> may incorrectly throw an <code class="highlighter-rouge">AssertionError</code> for some decimal literals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3028">CALCITE-3028</a>] Support FULL OUTER JOIN with <code class="highlighter-rouge">AggregateJoinTransposeRule</code> (Vineet Garg)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3017">CALCITE-3017</a>] Improve null handling of <code class="highlighter-rouge">JsonValueExpressionOperator</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3017">CALCITE-3017</a>] Improve null handling of <code class="highlighter-rouge">JsonValueExpressionOperator</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2936">CALCITE-2936</a>] Simplify EXISTS or NOT EXISTS sub-query that has “GROUP BY ()”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2803">CALCITE-2803</a>] <code class="highlighter-rouge">ProjectTransposeJoinRule</code> messes INDF expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3061">CALCITE-3061</a>] Query with WITH clause fails when alias is the same as the table with rolled up column</li>
@@ -2740,7 +2950,8 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2998">CALCITE-2998</a>] <code class="highlighter-rouge">RexCopier</code> should support all rex types (Chunwei Lei, Alexander Shilov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2982">CALCITE-2982</a>] <code class="highlighter-rouge">SqlItemOperator</code> should throw understandable exception message for incorrect operand type (pengzhiwei)</li>
<li>Revert “[<a href="https://issues.apache.org/jira/browse/CALCITE-3021">CALCITE-3021</a>] <code class="highlighter-rouge">ArrayEqualityComparer</code> should use <code class="highlighter-rouge">Arrays#deepEquals</code>/<code class="highlighter-rouge">deepHashCode</code> instead of <code class="highlighter-rouge">Arrays#equals</code>/<code class="highlighter-rouge">hashCode</code> (Ruben Quesada Lopez)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3021">CALCITE-3021</a>] <code class="highlighter-rouge">ArrayEqualityComparer</code> should use <code class="highlighter-rouge">Arrays#deepEquals</code>/<code class="highlighter-rouge">deepHashCode</code> instead of <code class="highlighter-rouge">Arrays#equals</code>/<code class="highlighter-rouge">hashCode</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3021">CALCITE-3021</a>] <code class="highlighter-rouge">ArrayEqualityComparer</code> should use <code class="highlighter-rouge">Arrays#deepEquals</code>/<code class="highlighter-rouge">deepHashCode</code> instead of <code class="highlighter-rouge">Arrays#equals</code>/<code class="highlighter-rouge">hashCode</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2453">CALCITE-2453</a>] Parse list of SQL statements separated with a semicolon (Chunwei Lei, charbel yazbeck)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3004">CALCITE-3004</a>] <code class="highlighter-rouge">RexOver</code> is incorrectly pushed down in <code class="highlighter-rouge">ProjectSetOpTransposeRule</code> and <code class="highlighter-rouge">ProjectCorrelateTransposeRule</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3001">CALCITE-3001</a>] Upgrade to Apache Druid 0.14.0-incubating</li>
@@ -2757,7 +2968,8 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2991">CALCITE-2991</a>] <code class="highlighter-rouge">getMaxRowCount</code> should return 1 for an Aggregate with constant keys (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1338">CALCITE-1338</a>] <code class="highlighter-rouge">JoinProjectTransposeRule</code> should not pull a literal up through the null-generating side of a join (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2977">CALCITE-2977</a>] Exception is not thrown when there are ambiguous field in select list</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2739">CALCITE-2739</a>] NPE is thrown if the DEFINE statement contains IN in <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2739">CALCITE-2739</a>] NPE is thrown if the DEFINE statement contains IN in <code class="highlighter-rouge">MATCH_RECOGNIZE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-896">CALCITE-896</a>] Remove Aggregate if grouping columns are unique and all functions are splittable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2456">CALCITE-2456</a>] <code class="highlighter-rouge">VolcanoRuleCall</code> doesn’t match unordered child operand when the operand is not the first operand. <code class="highlighter-rouge">PruneEmptyRules</code> <code class="highlighter-rouge">UNION</code> and <code class="highlighter-rouge">MINUS</code> with empty inputs cause infinite cycle. (Zuozhi Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2847">CALCITE-2847</a>] Optimize global LOOKAHEAD for SQL parsers</li>
@@ -2770,12 +2982,14 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2900">CALCITE-2900</a>] <code class="highlighter-rouge">RelStructuredTypeFlattener</code> generates wrong types on nested columns (Will Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2941">CALCITE-2941</a>] <code class="highlighter-rouge">EnumerableLimitRule</code> on Sort with no collation creates <code class="highlighter-rouge">EnumerableLimit</code> with wrong <code class="highlighter-rouge">traitSet</code> and <code class="highlighter-rouge">cluster</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2909">CALCITE-2909</a>] Optimize Enumerable <code class="highlighter-rouge">SemiJoin</code> with lazy computation of <code class="highlighter-rouge">innerLookup</code> (Ruben Quesada Lopez)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2903">CALCITE-2903</a>] Exception thrown when decorrelating query with <code class="highlighter-rouge">TEMPORAL TABLE</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2903">CALCITE-2903</a>] Exception thrown when decorrelating query with <code class="highlighter-rouge">TEMPORAL TABLE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2958">CALCITE-2958</a>] Upgrade SQLLine to 1.7.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2796">CALCITE-2796</a>] JDBC adapter fix for <code class="highlighter-rouge">ROLLUP</code> on MySQL 5</li>
<li>In <code class="highlighter-rouge">RelFieldCollation</code>, add a <code class="highlighter-rouge">withX</code> copy method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2953">CALCITE-2953</a>] <code class="highlighter-rouge">LatticeTest.testTileAlgorithm2</code> and <code class="highlighter-rouge">LatticeTest.testTileAlgorithm3</code> fail intermittently</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-574">CALCITE-574</a>] Remove <code class="highlighter-rouge">org.apache.calcite.util.Bug.CALCITE_461_FIXED</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-574">CALCITE-574</a>] Remove <code class="highlighter-rouge">org.apache.calcite.util.Bug.CALCITE_461_FIXED</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2951">CALCITE-2951</a>] Support decorrelating a sub-query that has aggregate with grouping sets (Haisheng Yuan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2946">CALCITE-2946</a>] <code class="highlighter-rouge">RelBuilder</code> wrongly skips creation of Aggregate that prunes columns if input produces one row at most</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2942">CALCITE-2943</a>] Materialized view rewriting logic calls <code class="highlighter-rouge">getApplicableMaterializations</code> each time the rule is triggered</li>
@@ -2813,7 +3027,8 @@ We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2952">CALCITE-2952</a>] Add JDK 12 as tested to 1.19.0 history</li>
</ul>
-<h2 id="v1-19-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.19.0">1.19.0</a> / 2019-03-25</h2>
+<h2 id="v1-19-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.19.0">1.19.0</a> / 2019-03-25</h2>
<p>This release comes three months after 1.18.0. It includes more than 80 resolved
issues, comprising of a few new features as well as general improvements
@@ -2833,7 +3048,8 @@ other software versions as specified in <code class="highlighter-rouge">pom.xml<
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1912">CALCITE-1912</a>]
Support <code class="highlighter-rouge">FOR SYSTEM_TIME AS OF</code> in regular queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2786">CALCITE-2786</a>]
-Add order by clause support for <code class="highlighter-rouge">JSON_ARRAYAGG</code></li>
+Add order by clause support for <code class="highlighter-rouge">JSON_ARRAYAGG</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2791">CALCITE-2791</a>]
Add the <code class="highlighter-rouge">JSON_TYPE</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2864">CALCITE-2864</a>]
@@ -2841,7 +3057,8 @@ Add the <code class="highlighter-rouge">JSON_DEPTH</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2881">CALCITE-2881</a>]
Add the <code class="highlighter-rouge">JSON_PRETTY</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2770">CALCITE-2770</a>]
-Add bitwise aggregate functions <code class="highlighter-rouge">BIT_AND</code>, <code class="highlighter-rouge">BIT_OR</code></li>
+Add bitwise aggregate functions <code class="highlighter-rouge">BIT_AND</code>, <code class="highlighter-rouge">BIT_OR</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2799">CALCITE-2799</a>]
Allow alias in <code class="highlighter-rouge">HAVING</code> clause for aggregate functions</li>
</ul>
@@ -2850,7 +3067,8 @@ Allow alias in <code class="highlighter-rouge">HAVING</code> clause for aggregat
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1513">CALCITE-1513</a>]
-Correlated <code class="highlighter-rouge">NOT IN</code> query throws <code class="highlighter-rouge">AssertionError</code></li>
+Correlated <code class="highlighter-rouge">NOT IN</code> query throws <code class="highlighter-rouge">AssertionError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1726">CALCITE-1726</a>]
Sub-query in <code class="highlighter-rouge">FILTER</code> is left untransformed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2249">CALCITE-2249</a>]
@@ -2875,7 +3093,8 @@ nullable</li>
Avoid treating <code class="highlighter-rouge">Project(x=1)</code> and <code class="highlighter-rouge">Project(x=1)</code> equal when the type of <code class="highlighter-rouge">1</code> is
<code class="highlighter-rouge">int</code> in the first rel and <code class="highlighter-rouge">long</code> in the second</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2463">CALCITE-2463</a>]
-Silence ERROR logs from <code class="highlighter-rouge">CalciteException</code>, <code class="highlighter-rouge">SqlValidatorException</code></li>
+Silence ERROR logs from <code class="highlighter-rouge">CalciteException</code>, <code class="highlighter-rouge">SqlValidatorException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2464">CALCITE-2464</a>]
Allow to set nullability for columns of structured types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2471">CALCITE-2471</a>]
@@ -2885,7 +3104,8 @@ Enrich enumerable join operators with order-preserving information</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2582">CALCITE-2582</a>]
<code class="highlighter-rouge">FilterProjectTransposeRule</code> does not always simplify the new filter condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2599">CALCITE-2599</a>]
-Support <code class="highlighter-rouge">ASCII(string)</code> in <code class="highlighter-rouge">SqlFunctions</code></li>
+Support <code class="highlighter-rouge">ASCII(string)</code> in <code class="highlighter-rouge">SqlFunctions</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2621">CALCITE-2621</a>]
Add rule to execute semi-joins with correlation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2623">CALCITE-2623</a>]
@@ -2894,7 +3114,8 @@ and Hive SQL dialects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2625">CALCITE-2625</a>]
<code class="highlighter-rouge">ROW_NUMBER</code>, <code class="highlighter-rouge">RANK</code> generating invalid SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2629">CALCITE-2629</a>]
-Unnecessary call to <code class="highlighter-rouge">CatalogReader#getAllSchemaObjects</code> in <code class="highlighter-rouge">CatalogScope</code></li>
+Unnecessary call to <code class="highlighter-rouge">CatalogReader#getAllSchemaObjects</code> in <code class="highlighter-rouge">CatalogScope</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2635">CALCITE-2635</a>]
<code class="highlighter-rouge">getMonotonocity</code> is slow on wide tables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2674">CALCITE-2674</a>]
@@ -2904,9 +3125,11 @@ should be still resolved as an identifier</li>
Struct types with one field are not mapped correctly to Java classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2703">CALCITE-2703</a>]
Reduce code generation and class loading overhead when executing queries in
-<code class="highlighter-rouge">EnumerableConvention</code></li>
+<code class="highlighter-rouge">EnumerableConvention</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2722">CALCITE-2722</a>]
-<code class="highlighter-rouge">SqlImplementor.createLeftCall</code> method throws <code class="highlighter-rouge">StackOverflowError</code></li>
+<code class="highlighter-rouge">SqlImplementor.createLeftCall</code> method throws <code class="highlighter-rouge">StackOverflowError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2727">CALCITE-2727</a>]
Materialized view rewriting bails out incorrectly when a view does not contain
any table reference</li>
@@ -2920,12 +3143,14 @@ Expose document <code class="highlighter-rouge">_id</code> field when querying E
Quidem env variable is always false if its name is separated by dot(“.”)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2778">CALCITE-2778</a>]
Remove <code class="highlighter-rouge">ClosableAllocation</code>, <code class="highlighter-rouge">ClosableAllocationOwner</code>,
-<code class="highlighter-rouge">CompoundClosableAllocation</code></li>
+<code class="highlighter-rouge">CompoundClosableAllocation</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2782">CALCITE-2782</a>]
Use server time zone by default if time zone is not specified in the user connection string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2783">CALCITE-2783</a>]
“COALESCE(s, TRUE) = TRUE” and “(s OR s IS UNKNOWN) = TRUE” causes
-<code class="highlighter-rouge">NullPointerException</code></li>
+<code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2785">CALCITE-2785</a>]
In <code class="highlighter-rouge">EnumerableAggregate</code>, wrong result produced If there are sorted aggregates
and non-sorted aggregates at the same time</li>
@@ -2938,7 +3163,8 @@ converting from SQL to relational algebra</li>
Support <code class="highlighter-rouge">APPROX_COUNT_DISTINCT</code> aggregate function in ElasticSearch</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2798">CALCITE-2798</a>]
Optimizer should remove <code class="highlighter-rouge">ORDER BY</code> in sub-query, provided it has no <code class="highlighter-rouge">LIMIT</code> or
-<code class="highlighter-rouge">OFFSET</code></li>
+<code class="highlighter-rouge">OFFSET</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2802">CALCITE-2802</a>]
In Druid adapter, use of range conditions like <code class="highlighter-rouge">'2010-01-01' < TIMESTAMP</code> leads
to incorrect results</li>
@@ -2954,7 +3180,8 @@ In ElasticSearch adapter, fix <code class="highlighter-rouge">GROUP BY</code> wh
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2817">CALCITE-2817</a>]
Make <code class="highlighter-rouge">CannotPlanException</code> more informative</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2827">CALCITE-2827</a>]
-Allow <code class="highlighter-rouge">CONVENTION.NONE</code> planning with <code class="highlighter-rouge">VolcanoPlanner</code></li>
+Allow <code class="highlighter-rouge">CONVENTION.NONE</code> planning with <code class="highlighter-rouge">VolcanoPlanner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2838">CALCITE-2838</a>]
Simplification: Remove redundant <code class="highlighter-rouge">IS TRUE</code> checks</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2839">CALCITE-2839</a>]
@@ -2972,17 +3199,21 @@ Geode adapter: support <code class="highlighter-rouge">BOOLEAN</code> column as
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2852">CALCITE-2852</a>]
RexNode simplification does not traverse unknown functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2856">CALCITE-2856</a>]
-Emulating <code class="highlighter-rouge">COMMA JOIN</code> as <code class="highlighter-rouge">CROSS JOIN</code> for <code class="highlighter-rouge">SparkSqlDialect</code></li>
+Emulating <code class="highlighter-rouge">COMMA JOIN</code> as <code class="highlighter-rouge">CROSS JOIN</code> for <code class="highlighter-rouge">SparkSqlDialect</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2858">CALCITE-2858</a>]
Improvements in JSON writer and reader for plans</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2859">CALCITE-2859</a>]
Centralize Calcite system properties</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2863">CALCITE-2863</a>]
-In ElasticSearch adapter, query fails when filtering directly on <code class="highlighter-rouge">_MAP</code></li>
+In ElasticSearch adapter, query fails when filtering directly on <code class="highlighter-rouge">_MAP</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2887">CALCITE-2887</a>]
-Improve performance of <code class="highlighter-rouge">RexLiteral.toJavaString()</code></li>
+Improve performance of <code class="highlighter-rouge">RexLiteral.toJavaString()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2897">CALCITE-2897</a>]
-Reduce expensive calls to <code class="highlighter-rouge">Class.getSimpleName()</code></li>
+Reduce expensive calls to <code class="highlighter-rouge">Class.getSimpleName()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2899">CALCITE-2899</a>]
Deprecate <code class="highlighter-rouge">RelTraitPropagationVisitor</code> and remove its usages</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2890">CALCITE-2890</a>]
@@ -2994,7 +3225,8 @@ Alias suggester failed to suggest name based on original name incrementally</li>
<code class="highlighter-rouge">RelMdPercentageOriginalRows</code> throws <code class="highlighter-rouge">NullPointerException</code> when explaining
plan with all attributes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2902">CALCITE-2902</a>]
-Improve performance of <code class="highlighter-rouge">AbstractRelNode.computeDigest()</code></li>
+Improve performance of <code class="highlighter-rouge">AbstractRelNode.computeDigest()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2929">CALCITE-2929</a>]
Simplification of <code class="highlighter-rouge">IS NULL</code> checks are incorrectly assuming that <code class="highlighter-rouge">CAST</code>s are
possible</li>
@@ -3017,15 +3249,20 @@ Bump Janino compiler dependency to 3.0.11</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2768">CALCITE-2768</a>]
<code class="highlighter-rouge">PlannerTest</code> ignores top-level <code class="highlighter-rouge">ORDER BY</code> clause (<code class="highlighter-rouge">RootRel.collation</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2788">CALCITE-2788</a>]
-Building error for sub-project of calcite on <code class="highlighter-rouge">maven-checkstyle-plugin</code></li>
+Building error for sub-project of calcite on <code class="highlighter-rouge">maven-checkstyle-plugin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2779">CALCITE-2779</a>]
-Remove references to <code class="highlighter-rouge">StringBuffer</code></li>
+Remove references to <code class="highlighter-rouge">StringBuffer</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2875">CALCITE-2875</a>]
-Some misspellings in <code class="highlighter-rouge">RelOptListener</code></li>
+Some misspellings in <code class="highlighter-rouge">RelOptListener</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2895">CALCITE-2895</a>]
-Some arguments are undocumented in constructor of <code class="highlighter-rouge">LogicalAggregate</code></li>
+Some arguments are undocumented in constructor of <code class="highlighter-rouge">LogicalAggregate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2836">CALCITE-2836</a>]
-Remove <code class="highlighter-rouge">maven-compiler-plugin</code> from <code class="highlighter-rouge">calcite-plus</code> module <code class="highlighter-rouge">pom.xml</code></li>
+Remove <code class="highlighter-rouge">maven-compiler-plugin</code> from <code class="highlighter-rouge">calcite-plus</code> module <code class="highlighter-rouge">pom.xml</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2878">CALCITE-2878</a>]
Avoid <code class="highlighter-rouge">throw new RuntimeException(e)</code> in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2916">CALCITE-2916</a>]
@@ -3036,10 +3273,12 @@ Exclude <code class="highlighter-rouge">maven-wrapper.jar</code> from source dis
In Mongo adapter, compare Bson (not string) query representation in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2932">CALCITE-2932</a>]
<code class="highlighter-rouge">DruidAdapterIT</code> regression after 1.17 release</li>
- <li>Improve messages for tests based on <code class="highlighter-rouge">CalciteAssert</code></li>
+ <li>Improve messages for tests based on <code class="highlighter-rouge">CalciteAssert</code>
+</li>
<li>Add JUnit category for extremely slow tests, launch them in a separate Travis job</li>
<li>Fix sqlline by removing redundant slf4j dependency (<code class="highlighter-rouge">log4j-over-slf4j</code>) from
-<code class="highlighter-rouge">cassandra-all</code></li>
+<code class="highlighter-rouge">cassandra-all</code>
+</li>
</ul>
<h4 id="site-1-19-0">Web site and documentation</h4>
@@ -3052,7 +3291,8 @@ building the site</li>
Site: Update mongo documentation to reflect filename changes</li>
<li>Site: Add commit message guidelines for contributors (Stamatis Zampetakis)</li>
<li>Site: Add Zoltan Haindrich as committer</li>
- <li>Site: Elastic query example on <code class="highlighter-rouge">_MAP</code></li>
+ <li>Site: Elastic query example on <code class="highlighter-rouge">_MAP</code>
+</li>
<li>Site: fix JSON syntax error at file adapter page (Marc Prud’hommeaux)</li>
<li>Site: fix typo at the main page (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2436">CALCITE-2436</a>]
@@ -3067,7 +3307,8 @@ Steps for building site under Windows; fix misprint in SQL Language page</li>
<li>Update year in NOTICE</li>
</ul>
-<h2 id="v1-18-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.18.0">1.18.0</a> / 2018-12-21</h2>
+<h2 id="v1-18-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.18.0">1.18.0</a> / 2018-12-21</h2>
<p>With over 200 commits from 36 contributors, this is the largest
Calcite release ever. To the SQL dialect, we added
@@ -3122,7 +3363,8 @@ Add Maven wrapper for Calcite (Ratandeep S. Ratti)</li>
Allow models in YAML format</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2402">CALCITE-2402</a>]
Implement regression functions: <code class="highlighter-rouge">COVAR_POP</code>, <code class="highlighter-rouge">COVAR_SAMP</code>, <code class="highlighter-rouge">REGR_COUNT</code>,
-<code class="highlighter-rouge">REGR_SXX</code>, <code class="highlighter-rouge">REGR_SYY</code></li>
+<code class="highlighter-rouge">REGR_SXX</code>, <code class="highlighter-rouge">REGR_SYY</code>
+</li>
<li>SQL advisor (<code class="highlighter-rouge">SqlAdvisor</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2479">CALCITE-2479</a>]
@@ -3135,7 +3377,8 @@ Scalar sub-queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2476">CALCITE-2476</a>]
Produce hints when sub-query with <code class="highlighter-rouge">*</code> is present in query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2475">CALCITE-2475</a>]
-Support <code class="highlighter-rouge">MINUS</code></li>
+Support <code class="highlighter-rouge">MINUS</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2473">CALCITE-2473</a>]
Support <code class="highlighter-rouge">--</code> comments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2434">CALCITE-2434</a>]
@@ -3157,7 +3400,8 @@ Add a fluent API for building complex aggregate calls</li>
Add a <code class="highlighter-rouge">groupKey</code> method that assumes only one grouping set</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2470">CALCITE-2470</a>]
<code class="highlighter-rouge">project</code> method should combine expressions if the underlying
-node is a <code class="highlighter-rouge">Project</code></li>
+node is a <code class="highlighter-rouge">Project</code>
+</li>
</ul>
</li>
<li>Elasticsearch adapter:
@@ -3165,7 +3409,8 @@ node is a <code class="highlighter-rouge">Project</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2679">CALCITE-2679</a>]
Implement <code class="highlighter-rouge">DISTINCT</code> and <code class="highlighter-rouge">GROUP BY</code> without aggregate functions (Siyuan Liu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2689">CALCITE-2689</a>]
-Allow grouping on non-textual fields like <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">NUMBER</code></li>
+Allow grouping on non-textual fields like <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">NUMBER</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2651">CALCITE-2651</a>]
Enable scrolling for basic search queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2585">CALCITE-2585</a>]
@@ -3252,7 +3497,8 @@ null for <code class="highlighter-rouge">Union</code>/<code class="highlighter-r
[<a href="https://issues.apache.org/jira/browse/CALCITE-2031">CALCITE-2031</a>]
remove incorrect “Not implemented” message</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2668">CALCITE-2668</a>]
-Support for left/right outer join in <code class="highlighter-rouge">RelMdExpressionLineage</code></li>
+Support for left/right outer join in <code class="highlighter-rouge">RelMdExpressionLineage</code>
+</li>
<li>Fix invocation of deprecated constructor of <code class="highlighter-rouge">SqlAggFunction</code> (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2652">CALCITE-2652</a>]
<code class="highlighter-rouge">SqlNode</code> to SQL conversion fails if the join condition references a <code class="highlighter-rouge">BOOLEAN</code>
@@ -3262,9 +3508,11 @@ In <code class="highlighter-rouge">RexShuttle</code>, use <code class="highlight
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>]
Support semi-join via <code class="highlighter-rouge">EnumerableCorrelate</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>]
-Support left outer join via <code class="highlighter-rouge">EnumerableCorrelate</code></li>
+Support left outer join via <code class="highlighter-rouge">EnumerableCorrelate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1174">CALCITE-1174</a>]
-When generating SQL, translate <code class="highlighter-rouge">SUM0(x)</code> to <code class="highlighter-rouge">COALESCE(SUM(x), 0)</code></li>
+When generating SQL, translate <code class="highlighter-rouge">SUM0(x)</code> to <code class="highlighter-rouge">COALESCE(SUM(x), 0)</code>
+</li>
<li><code class="highlighter-rouge">RelBuilder.toString()</code></li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2617">CALCITE-2617</a>]
Add a variant of <code class="highlighter-rouge">FilterProjectTransposeRule</code> that can push down a <code class="highlighter-rouge">Filter</code>
@@ -3295,22 +3543,26 @@ Add test for <code class="highlighter-rouge">OR</code> with nullable comparisons
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2413">CALCITE-2413</a>]
Use raw signatures for classes with generics when producing Java code</li>
<li>In Elasticsearch adapter, remove redundant null check in
-<code class="highlighter-rouge">CompoundQueryExpression</code></li>
+<code class="highlighter-rouge">CompoundQueryExpression</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2562">CALCITE-2562</a>]
-Remove dead code in <code class="highlighter-rouge">StandardConvertletTable#convertDatetimeMinus</code></li>
+Remove dead code in <code class="highlighter-rouge">StandardConvertletTable#convertDatetimeMinus</code>
+</li>
<li>Avoid <code class="highlighter-rouge">NullPointerException</code> when <code class="highlighter-rouge">FlatList</code> contains null elements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2561">CALCITE-2561</a>]
Remove dead code in <code class="highlighter-rouge">Lattice</code> constructor</li>
<li>Apply small refactorings to Calcite codebase (Java 5, Java 7, Java 8)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2572">CALCITE-2572</a>]
SQL standard semantics for <code class="highlighter-rouge">SUBSTRING</code> function (Andrew Pilloud)</li>
- <li>Remove dead code: <code class="highlighter-rouge">Compatible</code>, <code class="highlighter-rouge">CompatibleGuava11</code></li>
+ <li>Remove dead code: <code class="highlighter-rouge">Compatible</code>, <code class="highlighter-rouge">CompatibleGuava11</code>
+</li>
<li>Remove “Now, do something with table” from standard output when implementing
sequences</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2444">CALCITE-2444</a>]
Handle <code class="highlighter-rouge">IN</code> expressions when converting <code class="highlighter-rouge">SqlNode</code> to SQL (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2537">CALCITE-2537</a>]
-Use litmus for <code class="highlighter-rouge">VolcanoPlanner#validate</code></li>
+Use litmus for <code class="highlighter-rouge">VolcanoPlanner#validate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2546">CALCITE-2546</a>]
Reduce precision of <code class="highlighter-rouge">Profiler</code>’s <code class="highlighter-rouge">surprise</code> and <code class="highlighter-rouge">cardinality</code> attributes to
avoid floating point discrepancies (Alisha Prabhu)</li>
@@ -3323,12 +3575,14 @@ Materialized view rewriting may swap columns in equivalent classes incorrectly</
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2474">CALCITE-2474</a>]
SqlAdvisor: avoid NPE in lookupFromHints where FROM is empty</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2418">CALCITE-2418</a>]
-Remove <code class="highlighter-rouge">matchRecognize</code> field of <code class="highlighter-rouge">SqlSelect</code></li>
+Remove <code class="highlighter-rouge">matchRecognize</code> field of <code class="highlighter-rouge">SqlSelect</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2514">CALCITE-2514</a>]
Add <code class="highlighter-rouge">SqlIdentifier</code> conversion to <code class="highlighter-rouge">ITEM</code> operator for dynamic tables in
<code class="highlighter-rouge">ExtendedExpander</code> (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2491">CALCITE-2491</a>]
-Refactor <code class="highlighter-rouge">NameSet</code>, <code class="highlighter-rouge">NameMap</code>, and <code class="highlighter-rouge">NameMultimap</code></li>
+Refactor <code class="highlighter-rouge">NameSet</code>, <code class="highlighter-rouge">NameMap</code>, and <code class="highlighter-rouge">NameMultimap</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2520">CALCITE-2520</a>]
Make <code class="highlighter-rouge">SparkHandlerImpl#compile</code> silent by default, print code in
<code class="highlighter-rouge">calcite.debug=true</code> mode only</li>
@@ -3337,13 +3591,15 @@ Remove unused import</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2483">CALCITE-2483</a>]
Druid adapter, when querying Druid segment metadata, throws when row number is
larger than <code class="highlighter-rouge">Integer.MAX_VALUE</code> (Hongze Zhang)</li>
- <li>Support <code class="highlighter-rouge">AND</code>, <code class="highlighter-rouge">OR</code>, <code class="highlighter-rouge">COALESCE</code>, <code class="highlighter-rouge">IS [NOT] DISTINCT</code> in <code class="highlighter-rouge">RexUtil#op</code></li>
+ <li>Support <code class="highlighter-rouge">AND</code>, <code class="highlighter-rouge">OR</code>, <code class="highlighter-rouge">COALESCE</code>, <code class="highlighter-rouge">IS [NOT] DISTINCT</code> in <code class="highlighter-rouge">RexUtil#op</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2495">CALCITE-2495</a>]
Support encoded URLs in <code class="highlighter-rouge">org.apache.calcite.util.Source</code>, and use it for URL
→ File conversion in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2271">CALCITE-2271</a>]
Join of two views with window aggregates produces incorrect results or throws
-<code class="highlighter-rouge">NullPointerException</code></li>
+<code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2481">CALCITE-2481</a>]
<code class="highlighter-rouge">NameSet</code> assumes lower-case characters have greater codes, which does not hold
for certain characters</li>
@@ -3355,7 +3611,8 @@ Enable use of materialized views for any planner</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2446">CALCITE-2446</a>]
Lateral joins do not work when saved as custom views (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2447">CALCITE-2447</a>]
-<code class="highlighter-rouge">POWER</code>, <code class="highlighter-rouge">ATAN2</code> functions fail with <code class="highlighter-rouge">NoSuchMethodException</code></li>
+<code class="highlighter-rouge">POWER</code>, <code class="highlighter-rouge">ATAN2</code> functions fail with <code class="highlighter-rouge">NoSuchMethodException</code>
+</li>
<li>Typo in <code class="highlighter-rouge">HepPlanner</code> trace message (Dylan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2416">CALCITE-2416</a>]
<code class="highlighter-rouge">AssertionError</code> when determining monotonicity (Alina Ipatina)</li>
@@ -3406,7 +3663,8 @@ values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2695">CALCITE-2695</a>]
Simplify casts that are only widening nullability (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2631">CALCITE-2631</a>]
-General improvements in simplifying <code class="highlighter-rouge">CASE</code></li>
+General improvements in simplifying <code class="highlighter-rouge">CASE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2639">CALCITE-2639</a>]
<code class="highlighter-rouge">FilterReduceExpressionsRule</code> causes <code class="highlighter-rouge">ArithmeticException</code> at execution time</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2620">CALCITE-2620</a>]
@@ -3418,7 +3676,8 @@ When simplifying <code class="highlighter-rouge">NOT-AND-OR</code>, <code class=
deduced for operands to the same operands (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2604">CALCITE-2604</a>]
When simplifying an expression, say whether an <code class="highlighter-rouge">UNKNOWN</code> value will be
-interpreted as is, or as <code class="highlighter-rouge">TRUE</code> or <code class="highlighter-rouge">FALSE</code></li>
+interpreted as is, or as <code class="highlighter-rouge">TRUE</code> or <code class="highlighter-rouge">FALSE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2438">CALCITE-2438</a>]
Fix wrong results for <code class="highlighter-rouge">IS NOT FALSE(FALSE)</code> (zhiwei.pzw) (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2506">CALCITE-2506</a>]
@@ -3453,9 +3712,11 @@ Simplify <code class="highlighter-rouge">(NOT x) IS NULL</code> → <code class=
also, simplify <code class="highlighter-rouge">f(x, y) IS NULL</code> → <code class="highlighter-rouge">x IS NULL OR y IS NULL</code> if <code class="highlighter-rouge">f</code> is a
strong operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>]
-Simplify <code class="highlighter-rouge">AND(x, y, NOT(y))</code> → <code class="highlighter-rouge">AND(x, null, IS NULL(y))</code></li>
+Simplify <code class="highlighter-rouge">AND(x, y, NOT(y))</code> → <code class="highlighter-rouge">AND(x, null, IS NULL(y))</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>]
-Avoid simplification of <code class="highlighter-rouge">x AND NOT(x)</code> to <code class="highlighter-rouge">FALSE</code> for nullable <code class="highlighter-rouge">x</code></li>
+Avoid simplification of <code class="highlighter-rouge">x AND NOT(x)</code> to <code class="highlighter-rouge">FALSE</code> for nullable <code class="highlighter-rouge">x</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2505">CALCITE-2505</a>]
<code class="highlighter-rouge">AssertionError</code> when simplifying <code class="highlighter-rouge">IS [NOT] DISTINCT</code> expressions
(Haisheng Yuan)</li>
@@ -3474,17 +3735,20 @@ Avoid simplification of <code class="highlighter-rouge">x AND NOT(x)</code> to <
Enable Travis to test against JDK 12</li>
<li>Ensure that tests are not calling <code class="highlighter-rouge">checkSimplify3</code> with <code class="highlighter-rouge">expected</code>,
<code class="highlighter-rouge">expectedFalse</code>, <code class="highlighter-rouge">expectedTrue</code> all the same</li>
- <li>Geode adapter tests: Removed unnecessary <code class="highlighter-rouge">try/final</code> block in <code class="highlighter-rouge">RefCountPolicy</code></li>
+ <li>Geode adapter tests: Removed unnecessary <code class="highlighter-rouge">try/final</code> block in <code class="highlighter-rouge">RefCountPolicy</code>
+</li>
<li>Add license to <code class="highlighter-rouge">TestKtTest</code> and add <code class="highlighter-rouge">apache-rat:check</code> to Travis CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>]
-Add Apache license header to <code class="highlighter-rouge">maven-wrapper.properties</code></li>
+Add Apache license header to <code class="highlighter-rouge">maven-wrapper.properties</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2588">CALCITE-2588</a>]
Run Geode adapter tests with an embedded instance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2594">CALCITE-2594</a>]
Ensure <code class="highlighter-rouge">forbiddenapis</code> and <code class="highlighter-rouge">maven-compiler</code> use the correct JDK version</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2642">CALCITE-2642</a>]
Checkstyle complains that <code class="highlighter-rouge">maven-wrapper.properties</code> is missing a header</li>
- <li><code class="highlighter-rouge">commons:commons-pool2</code> is used in tests only, so use <code class="highlighter-rouge">scope=test</code> for it</li>
+ <li>
+<code class="highlighter-rouge">commons:commons-pool2</code> is used in tests only, so use <code class="highlighter-rouge">scope=test</code> for it</li>
<li>Make <code class="highlighter-rouge">findbugs:jsr305</code> dependency optional</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2458">CALCITE-2458</a>]
Add Kotlin as a test dependency</li>
@@ -3501,23 +3765,29 @@ fail</li>
Enable <code class="highlighter-rouge">SqlTester.checkFails</code> (previously it was a no-op) (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2558">CALCITE-2558</a>]
Improve re-compilation times by skipping <code class="highlighter-rouge">parser.java</code> update on each build</li>
- <li>Increase timeout for Cassandra daemon startup for <code class="highlighter-rouge">CassandraAdapterTest</code></li>
+ <li>Increase timeout for Cassandra daemon startup for <code class="highlighter-rouge">CassandraAdapterTest</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2412">CALCITE-2412</a>]
Add Windows CI via AppVeyor (Sergey Nuyanzin)</li>
<li>Reduce <code class="highlighter-rouge">HepPlannerTest#testRuleApplyCount</code> complexity</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2523">CALCITE-2523</a>]
Guard <code class="highlighter-rouge">PartiallyOrderedSetTest#testPosetBitsLarge</code> with
-<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code></li>
+<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2521">CALCITE-2521</a>]
Guard <code class="highlighter-rouge">RelMetadataTest#testMetadataHandlerCacheLimit</code> with
-<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code></li>
+<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
-Add <code class="highlighter-rouge">SqlValidatorDynamicTest</code> to <code class="highlighter-rouge">CalciteSuite</code></li>
+Add <code class="highlighter-rouge">SqlValidatorDynamicTest</code> to <code class="highlighter-rouge">CalciteSuite</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
Move dynamic tests to a separate class like <code class="highlighter-rouge">SqlValidatorDynamicTest</code>, and
-avoid reuse of <code class="highlighter-rouge">MockCatalogReaderDynamic</code></li>
+avoid reuse of <code class="highlighter-rouge">MockCatalogReaderDynamic</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2522">CALCITE-2522</a>]
-Remove <code class="highlighter-rouge">e.printStackTrace()</code> from <code class="highlighter-rouge">CalciteAssert#returns</code></li>
+Remove <code class="highlighter-rouge">e.printStackTrace()</code> from <code class="highlighter-rouge">CalciteAssert#returns</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2512">CALCITE-2512</a>]
Move <code class="highlighter-rouge">StreamTest#ROW_GENERATOR</code> to <code class="highlighter-rouge">Table.scan().iterator</code> to make it not
shared between threads (Sergey Nuyanzin)</li>
@@ -3527,7 +3797,8 @@ Silence ERROR logs from <code class="highlighter-rouge">CalciteException</code>,
tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
Fix <code class="highlighter-rouge">ModelTest#testYamlFileDetection</code> when source folder has spaces</li>
- <li><code class="highlighter-rouge">MockCatalogReader</code> is used in testing, so cache should be disabled there to
+ <li>
+<code class="highlighter-rouge">MockCatalogReader</code> is used in testing, so cache should be disabled there to
avoid thread conflicts and/or stale results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-311">CALCITE-311</a>]
Add a test-case for Filter after Window aggregate</li>
@@ -3536,9 +3807,11 @@ Add a test-case for Filter after Window aggregate</li>
<code class="highlighter-rouge">unknownLiteral</code> → <code class="highlighter-rouge">nullBool</code> for brevity</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>]
<code class="highlighter-rouge">RexProgramTest</code>: move “rex building” methods to base class</li>
- <li><code class="highlighter-rouge">SqlTestFactory</code>: use lazy initialization of objects</li>
+ <li>
+<code class="highlighter-rouge">SqlTestFactory</code>: use lazy initialization of objects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2435">CALCITE-2435</a>]
-Refactor <code class="highlighter-rouge">SqlTestFactory</code></li>
+Refactor <code class="highlighter-rouge">SqlTestFactory</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2428">CALCITE-2428</a>]
Cassandra unit test fails to parse JDK version string (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2419">CALCITE-2419</a>]
@@ -3554,7 +3827,8 @@ Update links on download page to HTTPS</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2574">CALCITE-2574</a>]
Update download page to include instructions for verifying a downloaded
artifact</li>
- <li>Update build status badges in <code class="highlighter-rouge">README.md</code></li>
+ <li>Update build status badges in <code class="highlighter-rouge">README.md</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2705">CALCITE-2705</a>]
Site: Remove duplicate “selectivity” in list of metadata types (Alan Jin)</li>
<li>Site: Add Andrei Sereda as committer</li>
@@ -3566,7 +3840,8 @@ list (Stamatis Zampetakis)</li>
<li>Site: News item for release 1.17.0</li>
</ul>
-<h2 id="v1-17-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.17.0">1.17.0</a> / 2018-07-16</h2>
+<h2 id="v1-17-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.17.0">1.17.0</a> / 2018-07-16</h2>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
@@ -3594,13 +3869,15 @@ Add a planner rule, <code class="highlighter-rouge">SortRemoveConstantKeysRule</
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2216">CALCITE-2216</a>]
Improve extensibility of <code class="highlighter-rouge">AggregateReduceFunctionsRule</code> (Fabian Hueske)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2227">CALCITE-2227</a>]
-Standards-compliant column ordering for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code></li>
+Standards-compliant column ordering for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2280">CALCITE-2280</a>]
Babel SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2286">CALCITE-2286</a>]
Support timestamp type for Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2304">CALCITE-2304</a>]
-In Babel parser, allow Hive-style syntax <code class="highlighter-rouge">LEFT SEMI JOIN</code></li>
+In Babel parser, allow Hive-style syntax <code class="highlighter-rouge">LEFT SEMI JOIN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2321">CALCITE-2321</a>]
A union of <code class="highlighter-rouge">CHAR</code> columns of different lengths can now (based on a conformance setting) yield a <code class="highlighter-rouge">VARCHAR</code> column (Hequn Cheng)</li>
</ul>
@@ -3623,7 +3900,8 @@ Use Teradata’s TPC-DS generator and run tests against TPC-DS at small scale</l
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2053">CALCITE-2053</a>]
Resolve Java user-defined functions that have <code class="highlighter-rouge">Double</code> and <code class="highlighter-rouge">BigDecimal</code> arguments (余启)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2063">CALCITE-2063</a>]
-Add JDK 10 to <code class="highlighter-rouge">.travis.yml</code></li>
+Add JDK 10 to <code class="highlighter-rouge">.travis.yml</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2159">CALCITE-2159</a>]
Support dynamic row type in <code class="highlighter-rouge">UNNEST</code> (Chunhui Shi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2164">CALCITE-2164</a>]
@@ -3721,7 +3999,8 @@ Improve rewrite for “constant IN (sub-query)”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2331">CALCITE-2331</a>]
Evaluation of predicate <code class="highlighter-rouge">(A or B) and C</code> fails for Elasticsearch adapter (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2332">CALCITE-2332</a>]
-Wrong simplification of <code class="highlighter-rouge">FLOOR(CEIL(x))</code> to <code class="highlighter-rouge">FLOOR(x)</code></li>
+Wrong simplification of <code class="highlighter-rouge">FLOOR(CEIL(x))</code> to <code class="highlighter-rouge">FLOOR(x)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2333">CALCITE-2333</a>]
Stop releasing zips</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2334">CALCITE-2334</a>]
@@ -3775,7 +4054,8 @@ Fix for <code class="highlighter-rouge">date</code>/<code class="highlighter-rou
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2388">CALCITE-2388</a>]
Upgrade from <code class="highlighter-rouge">commons-dbcp</code> to <code class="highlighter-rouge">commons-dbcp2</code> version 2.4.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2391">CALCITE-2391</a>]
-Aggregate query with <code class="highlighter-rouge">UNNEST</code> or <code class="highlighter-rouge">LATERAL</code> fails with <code class="highlighter-rouge">ClassCastException</code></li>
+Aggregate query with <code class="highlighter-rouge">UNNEST</code> or <code class="highlighter-rouge">LATERAL</code> fails with <code class="highlighter-rouge">ClassCastException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2392">CALCITE-2392</a>]
Prevent columns permutation for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code> when dynamic table is used</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2396">CALCITE-2396</a>]
@@ -3789,7 +4069,8 @@ Upgrade quidem to 0.9</li>
(Sergey Nuyanzin)</li>
</ul>
-<h2 id="v1-16-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.16.0">1.16.0</a> / 2018-03-14</h2>
+<h2 id="v1-16-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.16.0">1.16.0</a> / 2018-03-14</h2>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
@@ -3882,7 +4163,8 @@ Extend Druid Range Rules to extract interval from Floor (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2091">CALCITE-2091</a>]
Improve DruidQuery cost function, to ensure that <code class="highlighter-rouge">EXTRACT</code> gets pushed as an interval if possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2092">CALCITE-2092</a>]
-Allow passing custom <code class="highlighter-rouge">RelBuilder</code> into <code class="highlighter-rouge">SqlToRelConverter</code></li>
+Allow passing custom <code class="highlighter-rouge">RelBuilder</code> into <code class="highlighter-rouge">SqlToRelConverter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2093">CALCITE-2093</a>]
<code class="highlighter-rouge">OsAdapterTest</code> in Calcite Plus does not respect locale (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2094">CALCITE-2094</a>]
@@ -3890,7 +4172,8 @@ Druid adapter: <code class="highlighter-rouge">Count(*)</code> returns null inst
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2095">CALCITE-2095</a>]
Druid adapter: Push always true and always true expressions as Expression Filters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2096">CALCITE-2096</a>]
-Druid adapter: Remove extra <code class="highlighter-rouge">dummy_aggregator</code></li>
+Druid adapter: Remove extra <code class="highlighter-rouge">dummy_aggregator</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2097">CALCITE-2097</a>]
Druid adapter: Push Aggregate and Filter operators containing metric columns to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2098">CALCITE-2098</a>]
@@ -3910,13 +4193,15 @@ Timezone not passed as part of granularity when passing <code class="highlighter
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2108">CALCITE-2108</a>]
<code class="highlighter-rouge">AggregateJoinTransposeRule</code> fails when process aggregateCall above <code class="highlighter-rouge">SqlSumEmptyIsZeroAggFunction</code> without groupKeys (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2110">CALCITE-2110</a>]
-<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> in RexSimplify when using <code class="highlighter-rouge">ReduceExpressionsRule.JOIN_INSTANCE</code></li>
+<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> in RexSimplify when using <code class="highlighter-rouge">ReduceExpressionsRule.JOIN_INSTANCE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2111">CALCITE-2111</a>]
Make HepPlanner more efficient by applying rules depth-first</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2113">CALCITE-2113</a>]
Push column pruning to druid when Aggregate cannot be pushed (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2114">CALCITE-2114</a>]
-Re-enable <code class="highlighter-rouge">DruidAggregateFilterTransposeRule</code></li>
+Re-enable <code class="highlighter-rouge">DruidAggregateFilterTransposeRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2116">CALCITE-2116</a>]
The digests are not same for the common sub-expressions in HepPlanner (LeoWangLZ)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2118">CALCITE-2118</a>]
@@ -3956,7 +4241,8 @@ Implement <code class="highlighter-rouge">RelSubset.copy</code> method (Alessand
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2185">CALCITE-2185</a>]
Additional unit tests for Spark Adapter (Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2187">CALCITE-2187</a>]
-Fix build issue caused by <code class="highlighter-rouge">CALCITE-2170</code></li>
+Fix build issue caused by <code class="highlighter-rouge">CALCITE-2170</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2189">CALCITE-2189</a>]
RelMdAllPredicates fast bail out creates mismatch with RelMdTableReferences</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2190">CALCITE-2190</a>]
@@ -3988,7 +4274,8 @@ Submit a journal paper on Calcite to VLDB Journal or ACM SIGMOD Record (Edmon Be
Calcite site redirect links to Avatica broken with jekyll-redirect-from 0.12+ (Kevin Risden)</li>
</ul>
-<h2 id="v1-15-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.15.0">1.15.0</a> / 2017-12-11</h2>
+<h2 id="v1-15-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.15.0">1.15.0</a> / 2017-12-11</h2>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
@@ -4038,14 +4325,16 @@ Dynamic parameters in <code class="highlighter-rouge">OFFSET</code>, <code class
Add “server” module, with built-in support for simple DDL statements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2041">CALCITE-2041</a>]
When <code class="highlighter-rouge">ReduceExpressionRule</code> simplifies a nullable expression, allow the result
-to change type to <code class="highlighter-rouge">NOT NULL</code></li>
+to change type to <code class="highlighter-rouge">NOT NULL</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2058">CALCITE-2058</a>]
Support JDK 10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2016">CALCITE-2016</a>]
Make item + dot operators work for array (e.g. <code class="highlighter-rouge">SELECT orders[5].color FROM t</code>
(Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2035">CALCITE-2035</a>]
-Allow approximate aggregate functions, and add <code class="highlighter-rouge">APPROX_COUNT_DISTINCT</code></li>
+Allow approximate aggregate functions, and add <code class="highlighter-rouge">APPROX_COUNT_DISTINCT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1990">CALCITE-1990</a>]
Make <code class="highlighter-rouge">RelDistribution</code> extend <code class="highlighter-rouge">RelMultipleTrait</code> (LeoWangLZ)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1867">CALCITE-1867</a>]
@@ -4066,7 +4355,8 @@ Aggregate functions in <code class="highlighter-rouge">OVER</code> clause (Liao
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2070">CALCITE-2070</a>]
Git test fails when run from source distro</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1808">CALCITE-1808</a>]
-<code class="highlighter-rouge">JaninoRelMetadataProvider</code> loading cache might cause <code class="highlighter-rouge">OutOfMemoryError</code></li>
+<code class="highlighter-rouge">JaninoRelMetadataProvider</code> loading cache might cause <code class="highlighter-rouge">OutOfMemoryError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2069">CALCITE-2069</a>]
<code class="highlighter-rouge">RexSimplify.removeNullabilityCast()</code> always removes cast for operand with
<code class="highlighter-rouge">ANY</code> type (Volodymyr Vysotskyi)</li>
@@ -4075,7 +4365,8 @@ Simplification of point ranges that are open above or below yields wrong
results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2005">CALCITE-2005</a>]
Test failures on Windows</li>
- <li>Add <code class="highlighter-rouge">ImmutableBitSet.set(int, boolean)</code></li>
+ <li>Add <code class="highlighter-rouge">ImmutableBitSet.set(int, boolean)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2054">CALCITE-2054</a>]
Error while validating <code class="highlighter-rouge">UPDATE</code> with dynamic parameter in <code class="highlighter-rouge">SET</code> clause (Enrico
Olivelli)</li>
@@ -4087,7 +4378,8 @@ Rules using <code class="highlighter-rouge">Aggregate</code> might check for sim
<li>Add parameter to <code class="highlighter-rouge">SqlCallBinding.getOperandLiteralValue(int)</code> to specify
desired value type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2039">CALCITE-2039</a>]
-<code class="highlighter-rouge">AssertionError</code> when pushing project to <code class="highlighter-rouge">ProjectableFilterableTable</code></li>
+<code class="highlighter-rouge">AssertionError</code> when pushing project to <code class="highlighter-rouge">ProjectableFilterableTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2050">CALCITE-2050</a>]
Exception when pushing post-aggregates into Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2043">CALCITE-2043</a>]
@@ -4108,7 +4400,8 @@ Modify parser template to allow sub-projects to override <code class="highlighte
(Roman Kulyk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2019">CALCITE-2019</a>]
Druid’s time column is NOT NULL, so push <code class="highlighter-rouge">COUNT(druid_time_column)</code> as if it
-were <code class="highlighter-rouge">COUNT(*)</code></li>
+were <code class="highlighter-rouge">COUNT(*)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2034">CALCITE-2034</a>]
<code class="highlighter-rouge">FileReaderTest</code> fails with path containing spaces (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2028">CALCITE-2028</a>]
@@ -4123,7 +4416,8 @@ Hive <code class="highlighter-rouge">ORDER BY</code> null values (Abbas Gadhia)<
Look for <code class="highlighter-rouge">saffron.properties</code> file in classpath rather than in working
directory (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1910">CALCITE-1910</a>]
-<code class="highlighter-rouge">NullPointerException</code> on filtered aggregators using <code class="highlighter-rouge">IN</code></li>
+<code class="highlighter-rouge">NullPointerException</code> on filtered aggregators using <code class="highlighter-rouge">IN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1762">CALCITE-1762</a>]
Upgrade to Spark 2.X</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2008">CALCITE-2008</a>]
@@ -4168,7 +4462,8 @@ linq4j: support List and Map literals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2052">CALCITE-2052</a>]
Remove SQL code style from materialized views documentation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2036">CALCITE-2036</a>]
-Fix “next” link in <a href="powered_by.html">powered_by.html</a></li>
+Fix “next” link in <a href="powered_by.html">powered_by.html</a>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2038">CALCITE-2038</a>]
Fix incomplete sentence in tutorial</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2021">CALCITE-2021</a>]
@@ -4180,7 +4475,8 @@ Document the interfaces that you can use to extend Calcite</li>
Check dependencies for vulnerabilities each release</li>
</ul>
-<h2 id="v1-14-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.14.0">1.14.0</a> / 2017-09-06</h2>
+<h2 id="v1-14-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.14.0">1.14.0</a> / 2017-09-06</h2>
<p>This release brings some big new features.
The <code class="highlighter-rouge">GEOMETRY</code> data type was added along with 35 associated functions as the start of support for Simple Feature Access.
@@ -4255,12 +4551,15 @@ types: <code class="highlighter-rouge">RANK</code>, <code class="highlighter-rou
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1931">CALCITE-1931</a>] Change the return type of RANK and other aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1932">CALCITE-1932</a>] <code class="highlighter-rouge">Project.getPermutation()</code> should return null if not a permutation (e.g. repeated <code class="highlighter-rouge">InputRef</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1925">CALCITE-1925</a>] In <code class="highlighter-rouge">JaninoRelMetadataProvider</code>, cache null values (Ted Xu)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1849">CALCITE-1849</a>] Support <code class="highlighter-rouge">RexSubQuery</code> in <code class="highlighter-rouge">RelToSqlConverter</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1849">CALCITE-1849</a>] Support <code class="highlighter-rouge">RexSubQuery</code> in <code class="highlighter-rouge">RelToSqlConverter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1909">CALCITE-1909</a>] Output <code class="highlighter-rouge">rowType</code> of Match should include <code class="highlighter-rouge">PARTITION BY</code> and <code class="highlighter-rouge">ORDER BY</code> columns</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1929">CALCITE-1929</a>] Deprecate class <code class="highlighter-rouge">RelDataTypeFactory.FieldInfoBuilder</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1929">CALCITE-1929</a>] Deprecate class <code class="highlighter-rouge">RelDataTypeFactory.FieldInfoBuilder</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1895">CALCITE-1895</a>] MSSQL’s SUBSTRING operator has different syntax (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1919">CALCITE-1919</a>] <code class="highlighter-rouge">NullPointerException</code> when target in <code class="highlighter-rouge">ReflectiveSchema</code> belongs to root package (Lim Chee Hau)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1907">CALCITE-1907</a>] Table function with 1 column gives <code class="highlighter-rouge">ClassCastException</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1907">CALCITE-1907</a>] Table function with 1 column gives <code class="highlighter-rouge">ClassCastException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1841">CALCITE-1841</a>] Create handlers for JDBC dialect-specific generated SQL (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1898">CALCITE-1898</a>] <code class="highlighter-rouge">LIKE</code> must match ‘.’ (period) literally</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1900">CALCITE-1900</a>] Detect cyclic views and give useful error message</li>
@@ -4270,7 +4569,8 @@ types: <code class="highlighter-rouge">RANK</code>, <code class="highlighter-rou
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1881">CALCITE-1881</a>] Can’t distinguish overloaded user-defined functions that have DATE and TIMESTAMP arguments (余启)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1803">CALCITE-1803</a>] Push Project that follows Aggregate down to Druid (Junxian Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1828">CALCITE-1828</a>] Push the FILTER clause into Druid as a Filtered Aggregator (Zain Humayun)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1871">CALCITE-1871</a>] Nesting <code class="highlighter-rouge">LAST</code> within <code class="highlighter-rouge">PREV</code> is not parsed correctly for <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1871">CALCITE-1871</a>] Nesting <code class="highlighter-rouge">LAST</code> within <code class="highlighter-rouge">PREV</code> is not parsed correctly for <code class="highlighter-rouge">MATCH_RECOGNIZE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1877">CALCITE-1877</a>] Move the Pig test data files into target for the test runtime</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1815">CALCITE-1815</a>] Switch Pig adapter to depend on avatica-core instead of full avatica</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1826">CALCITE-1826</a>] Generate dialect-specific SQL for <code class="highlighter-rouge">FLOOR</code> operator when in a <code class="highlighter-rouge">GROUP BY</code> (Chris Baynes)</li>
@@ -4279,7 +4579,8 @@ types: <code class="highlighter-rouge">RANK</code>, <code class="highlighter-rou
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1873">CALCITE-1873</a>] In a “GROUP BY ordinal” query, validator gives invalid “Expression is not being grouped” error if column has alias</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1833">CALCITE-1833</a>] User-defined aggregate functions with more than one parameter (hzyuemeng1)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1860">CALCITE-1860</a>] Duplicate null predicates cause <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">RexUtil</code> (Ruidong Li)</li>
- <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1859">CALCITE-1859</a>] NPE in validate method of <code class="highlighter-rouge">VolcanoPlanner</code></li>
+ <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1859">CALCITE-1859</a>] NPE in validate method of <code class="highlighter-rouge">VolcanoPlanner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1818">CALCITE-1818</a>] Handle <code class="highlighter-rouge">SqlKind.DYNAMIC</code> (parameters) in <code class="highlighter-rouge">SqlImplementor</code> (Dylan Adams)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1856">CALCITE-1856</a>] Add option <code class="highlighter-rouge">StructKind.PEEK_FIELDS_NO_EXPAND</code>, similar to <code class="highlighter-rouge">PEEK_FIELDS</code> but is not expanded in <code class="highlighter-rouge">"SELECT *"</code> (Shuyi Chen)</li>
</ul>
@@ -4292,7 +4593,8 @@ types: <code class="highlighter-rouge">RANK</code>, <code class="highlighter-rou
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1901">CALCITE-1901</a>] SQL reference should say that “ONLY” is required after “FETCH … ROWS”</li>
</ul>
-<h2 id="v1-13-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.13.0">1.13.0</a> / 2017-06-20</h2>
+<h2 id="v1-13-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.13.0">1.13.0</a> / 2017-06-20</h2>
<p>This release comes three months after 1.12.0. It includes more than 75 resolved issues, comprising
a large number of new features as well as general improvements and bug-fixes.</p>
@@ -4336,7 +4638,8 @@ other software versions as specified in <code class="highlighter-rouge">pom.xml<
Add <code class="highlighter-rouge">MATCH_RECOGNIZE</code> operator, for event pattern-matching
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1647">CALCITE-1647</a>]
-Classifier and <code class="highlighter-rouge">match_number</code> syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code></li>
+Classifier and <code class="highlighter-rouge">match_number</code> syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1646">CALCITE-1646</a>]
Partition by and order by syntax support for <code class="highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1645">CALCITE-1645</a>]
@@ -4352,9 +4655,11 @@ Support <code class="highlighter-rouge">MEASURES</code> clause in <code class="h
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1853">CALCITE-1853</a>]
Push Count distinct into Druid when approximate results are acceptable (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1829">CALCITE-1829</a>]
-Add <code class="highlighter-rouge">TIME</code>/<code class="highlighter-rouge">TIMESTAMP</code>/<code class="highlighter-rouge">DATE</code> datatype handling to <code class="highlighter-rouge">RexImplicationChecker</code></li>
+Add <code class="highlighter-rouge">TIME</code>/<code class="highlighter-rouge">TIMESTAMP</code>/<code class="highlighter-rouge">DATE</code> datatype handling to <code class="highlighter-rouge">RexImplicationChecker</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1613">CALCITE-1613</a>]
-Implement <code class="highlighter-rouge">EXTRACT</code> for time unit <code class="highlighter-rouge">DOW</code>, <code class="highlighter-rouge">DOY</code>; and fix <code class="highlighter-rouge">CENTURY</code></li>
+Implement <code class="highlighter-rouge">EXTRACT</code> for time unit <code class="highlighter-rouge">DOW</code>, <code class="highlighter-rouge">DOY</code>; and fix <code class="highlighter-rouge">CENTURY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1807">CALCITE-1807</a>]
Upgrade to Avatica 1.10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1802">CALCITE-1802</a>]
@@ -4372,7 +4677,8 @@ Add <code class="highlighter-rouge">required Order</code> and <code class="highl
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1306">CALCITE-1306</a>]
Allow <code class="highlighter-rouge">GROUP BY</code> and <code class="highlighter-rouge">HAVING</code> to reference <code class="highlighter-rouge">SELECT</code> expressions by ordinal and alias (Rajeshbabu Chintaguntla)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1781">CALCITE-1781</a>]
-Allow expression in <code class="highlighter-rouge">CUBE</code> and <code class="highlighter-rouge">ROLLUP</code></li>
+Allow expression in <code class="highlighter-rouge">CUBE</code> and <code class="highlighter-rouge">ROLLUP</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1771">CALCITE-1771</a>]
Upgrade to Druid 0.10.0 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1772">CALCITE-1772</a>]
@@ -4398,7 +4704,8 @@ Push <code class="highlighter-rouge">Extraction</code> filter on <code class="hi
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1725">CALCITE-1725</a>]
Push project aggregate of time extract to druid (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1747">CALCITE-1747</a>]
-<code class="highlighter-rouge">RelMdColumnUniqueness</code> for <code class="highlighter-rouge">HepRelVertex</code></li>
+<code class="highlighter-rouge">RelMdColumnUniqueness</code> for <code class="highlighter-rouge">HepRelVertex</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1749">CALCITE-1749</a>]
Push filter conditions partially into Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1730">CALCITE-1730</a>]
@@ -4415,11 +4722,13 @@ Fix float values in Cassandra adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1848">CALCITE-1848</a>]
Rename MySource to FileSource (Darion Yaphet)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1852">CALCITE-1852</a>]
-Fix for <code class="highlighter-rouge">UnionMergeRule</code> to deal correctly with <code class="highlighter-rouge">EXCEPT</code></li>
+Fix for <code class="highlighter-rouge">UnionMergeRule</code> to deal correctly with <code class="highlighter-rouge">EXCEPT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1850">CALCITE-1850</a>]
Extend <code class="highlighter-rouge">UnionMergeRule</code> to deal with more than 2 branches (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1805">CALCITE-1805</a>]
-Druid adapter incorrectly pushes down <code class="highlighter-rouge">COUNT(c)</code>; Druid only supports <code class="highlighter-rouge">COUNT(*)</code></li>
+Druid adapter incorrectly pushes down <code class="highlighter-rouge">COUNT(c)</code>; Druid only supports <code class="highlighter-rouge">COUNT(*)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1846">CALCITE-1846</a>]
Metadata pulled up predicates should skip non-deterministic calls (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1819">CALCITE-1819</a>]
@@ -4437,7 +4746,8 @@ Allow <code class="highlighter-rouge">NULL</code> for <code class="highlighter-r
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1816">CALCITE-1816</a>]
<code class="highlighter-rouge">JaninoRelMetadataProvider</code> generated classes leak ACTIVE nodes on exception (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1690">CALCITE-1690</a>]
-Calcite timestamp literals cannot express precision above millisecond, <code class="highlighter-rouge">TIMESTAMP(3)</code></li>
+Calcite timestamp literals cannot express precision above millisecond, <code class="highlighter-rouge">TIMESTAMP(3)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1664">CALCITE-1664</a>]
<code class="highlighter-rouge">CAST(<string> as TIMESTAMP)</code> adds part of sub-second fraction to the value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1742">CALCITE-1742</a>]
@@ -4509,7 +4819,8 @@ Update materialized views documentation</li>
Better documentation on the use of materialized views</li>
</ul>
-<h2 id="v1-12-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.12.0">1.12.0</a> / 2017-03-24</h2>
+<h2 id="v1-12-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.12.0">1.12.0</a> / 2017-03-24</h2>
<p><a href="../news/2017/03/24/release-1.12.0">Features of note</a> this release are
JDK 9 support,
@@ -4559,7 +4870,8 @@ Support <code class="highlighter-rouge">HOP</code> and <code class="highlighter-
More efficient plan for correlated sub-queries, omitting value-generating
scans where possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1638">CALCITE-1638</a>]
-Simplify <code class="highlighter-rouge">$x = $x</code> to <code class="highlighter-rouge">$x is not null</code></li>
+Simplify <code class="highlighter-rouge">$x = $x</code> to <code class="highlighter-rouge">$x is not null</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-884">CALCITE-884</a>]
File adapter (Henry Olson)
<ul>
@@ -4578,20 +4890,25 @@ access)</li>
<li>Ability to parse HTML, CSV and JSON from local files</li>
<li>Combine the <a href="https://github.com/HenryOlson/optiq-web">optiq-web</a>
project with code from the
-<a href="/org/apache/calcite/adapter/csv/package-summary.html">CSV adapter</a></li>
+<a href="/org/apache/calcite/adapter/csv/package-summary.html">CSV adapter</a>
+</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1652">CALCITE-1652</a>]
-Allow <code class="highlighter-rouge">GROUPING</code> function to have multiple arguments, like <code class="highlighter-rouge">GROUPING_ID</code></li>
+Allow <code class="highlighter-rouge">GROUPING</code> function to have multiple arguments, like <code class="highlighter-rouge">GROUPING_ID</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1634">CALCITE-1634</a>]
Make <code class="highlighter-rouge">RelBuilder.distinct</code> no-op if input is already distinct; use it in
-<code class="highlighter-rouge">RelDecorrelator</code></li>
+<code class="highlighter-rouge">RelDecorrelator</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1635">CALCITE-1635</a>]
Add <code class="highlighter-rouge">MinRowCount</code> metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1628">CALCITE-1628</a>]
-Add an alternative match pattern for <code class="highlighter-rouge">SemiJoinRule</code></li>
+Add an alternative match pattern for <code class="highlighter-rouge">SemiJoinRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1618">CALCITE-1618</a>]
-<code class="highlighter-rouge">SortProjectTransposeRule</code> should check for monotonicity preserving <code class="highlighter-rouge">CAST</code></li>
+<code class="highlighter-rouge">SortProjectTransposeRule</code> should check for monotonicity preserving <code class="highlighter-rouge">CAST</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1510">CALCITE-1510</a>]
In <code class="highlighter-rouge">INSERT</code>/<code class="highlighter-rouge">UPSERT</code> without an explicit target column list, allow fewer source
columns than table (Kevin Liew)
@@ -4637,7 +4954,8 @@ Pig adapter: Use the shaded Avatica dependency instead</li>
Make <code class="highlighter-rouge">PigTest</code> cluster aware of data files; hopefully this will prevent
intermittent test failures (Eli Levine)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1696">CALCITE-1696</a>]
-Support <code class="highlighter-rouge">RexLocalRef</code> for <code class="highlighter-rouge">EXPLAIN PLAN AS JSON</code></li>
+Support <code class="highlighter-rouge">RexLocalRef</code> for <code class="highlighter-rouge">EXPLAIN PLAN AS JSON</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1683">CALCITE-1683</a>]
Druid-specific rules to transpose <code class="highlighter-rouge">Filter</code> with other relations
(Nishant Bangarwa)</li>
@@ -4646,10 +4964,12 @@ Change default precision of <code class="highlighter-rouge">VARCHAR</code> and <
“unspecified” (Kevin Liew)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1691">CALCITE-1691</a>]
<code class="highlighter-rouge">ClassCastException</code> in <code class="highlighter-rouge">RelOptUtil.containsNullableFields</code>, attempting to
-convert executor to <code class="highlighter-rouge">RexExecutorImpl</code></li>
+convert executor to <code class="highlighter-rouge">RexExecutorImpl</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1688">CALCITE-1688</a>]
Infinite loop during materialization substitution if query contains <code class="highlighter-rouge">Union</code>,
-<code class="highlighter-rouge">Minus</code> or <code class="highlighter-rouge">Intersect</code></li>
+<code class="highlighter-rouge">Minus</code> or <code class="highlighter-rouge">Intersect</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1665">CALCITE-1665</a>]
<code class="highlighter-rouge">HAVING</code> support in <code class="highlighter-rouge">RelToSqlConverter</code> (Zhiqiang He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1673">CALCITE-1673</a>]
@@ -4658,7 +4978,8 @@ throws CompileException (Gangadhar Kairi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1674">CALCITE-1674</a>]
<code class="highlighter-rouge">LIKE</code> does not match value that contains newline (Mark Payne)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1675">CALCITE-1675</a>]
-Two-level column name cannot be resolved in <code class="highlighter-rouge">ORDER BY</code></li>
+Two-level column name cannot be resolved in <code class="highlighter-rouge">ORDER BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1667">CALCITE-1667</a>]
Forbid calls to JDK APIs that use the default locale, time zone or character
set</li>
@@ -4683,16 +5004,19 @@ Add mutable equivalents for all relational expressions (e.g. <code class="highli
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1621">CALCITE-1621</a>]
Add a cast around the NULL literal in aggregate rules (Anton Mushin)
<ul>
- <li>Add <code class="highlighter-rouge">RexBuilder.makeNullLiteral(RelDataType)</code></li>
+ <li>Add <code class="highlighter-rouge">RexBuilder.makeNullLiteral(RelDataType)</code>
+</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1649">CALCITE-1649</a>]
-Data type mismatch in <code class="highlighter-rouge">EnumerableMergeJoin</code></li>
+Data type mismatch in <code class="highlighter-rouge">EnumerableMergeJoin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1636">CALCITE-1636</a>]
JDBC adapter generates wrong SQL for self join with sub-query (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1633">CALCITE-1633</a>]
In plans, output <code class="highlighter-rouge">Correlate.joinType</code> attribute in lower-case, same as
-<code class="highlighter-rouge">Join.joinType</code></li>
+<code class="highlighter-rouge">Join.joinType</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1632">CALCITE-1632</a>]
Return type of “datetime + interval” expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-365">CALCITE-365</a>]
@@ -4701,11 +5025,13 @@ Return type of “datetime + interval” expression</li>
Make sure <code class="highlighter-rouge">DATE</code>, <code class="highlighter-rouge">TIME</code> and <code class="highlighter-rouge">TIMESTAMP</code> literals have <code class="highlighter-rouge">Calendar</code> with GMT
timezone</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1619">CALCITE-1619</a>]
-<code class="highlighter-rouge">CAST</code> is ignored by rules pushing operators into <code class="highlighter-rouge">DruidQuery</code></li>
+<code class="highlighter-rouge">CAST</code> is ignored by rules pushing operators into <code class="highlighter-rouge">DruidQuery</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1617">CALCITE-1617</a>]
Druid adapter: Send timestamp literals to Druid as local time, not UTC</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1500">CALCITE-1500</a>]
-Decouple materialization and lattice substitution from <code class="highlighter-rouge">VolcanoPlanner</code></li>
+Decouple materialization and lattice substitution from <code class="highlighter-rouge">VolcanoPlanner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1589">CALCITE-1589</a>]
Druid adapter: <code class="highlighter-rouge">timeseries</code> query shows all days, even if no data</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1572">CALCITE-1572</a>]
@@ -4724,7 +5050,8 @@ Code generation for fields of type <code class="highlighter-rouge">java.sql.Date
<code class="highlighter-rouge">RelToSqlConverter</code> doesn’t handle cartesian join (Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1597">CALCITE-1597</a>]
Obsolete <code class="highlighter-rouge">Util.newInternal</code>, <code class="highlighter-rouge">.pre</code>, <code class="highlighter-rouge">.post</code>, <code class="highlighter-rouge">.permAssert</code> and
-<code class="highlighter-rouge">Throwables.propagate</code></li>
+<code class="highlighter-rouge">Throwables.propagate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1586">CALCITE-1586</a>]
JDBC adapter generates wrong SQL if <code class="highlighter-rouge">UNION</code> has more than two inputs (Zhiqiang
He)</li>
@@ -4738,10 +5065,12 @@ Druid adapter: Incorrect result - limit on timestamp disappears</li>
Druid adapter: <code class="highlighter-rouge">topN</code> query returns approximate results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1578">CALCITE-1578</a>]
Druid adapter: wrong semantics of <code class="highlighter-rouge">topN</code> query limit with granularity</li>
- <li>Druid adapter: Add <code class="highlighter-rouge">enum Granularity</code></li>
+ <li>Druid adapter: Add <code class="highlighter-rouge">enum Granularity</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1592">CALCITE-1592</a>]
<code class="highlighter-rouge">SqlToRelConverter</code> throws <code class="highlighter-rouge">UnsupportedOperationException</code> if query has
-<code class="highlighter-rouge">NOT ... NOT IN</code></li>
+<code class="highlighter-rouge">NOT ... NOT IN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1590">CALCITE-1590</a>]
Support Guava version 21.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1575">CALCITE-1575</a>]
@@ -4751,7 +5080,8 @@ Wrong plan for <code class="highlighter-rouge">NOT IN</code> sub-queries with di
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1574">CALCITE-1574</a>]
Memory leak in maven</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1571">CALCITE-1571</a>]
-Could not resolve view with <code class="highlighter-rouge">SimpleCalciteSchema</code></li>
+Could not resolve view with <code class="highlighter-rouge">SimpleCalciteSchema</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1558">CALCITE-1558</a>]
<code class="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> gets field mapping wrong if group key
is used in aggregate function (Zhenghua Gao)</li>
@@ -4786,7 +5116,8 @@ Calcite</a> page (Todd Mostak)</li>
Bugs in website example code (Damjan Jovanovic)</li>
</ul>
-<h2 id="v1-11-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.11.0">1.11.0</a> / 2017-01-09</h2>
+<h2 id="v1-11-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.11.0">1.11.0</a> / 2017-01-09</h2>
<p>Nearly three months after the previous release, there is a long list
of improvements and bug-fixes, many of them making planner rules
@@ -4810,8 +5141,10 @@ few correctness bugs.</p>
<p>New SQL syntax:</p>
<ul>
- <li><code class="highlighter-rouge">CROSS APPLY</code> and <code class="highlighter-rouge">OUTER APPLY</code>;</li>
- <li><code class="highlighter-rouge">MINUS</code> as a synonym for <code class="highlighter-rouge">EXCEPT</code>;</li>
+ <li>
+<code class="highlighter-rouge">CROSS APPLY</code> and <code class="highlighter-rouge">OUTER APPLY</code>;</li>
+ <li>
+<code class="highlighter-rouge">MINUS</code> as a synonym for <code class="highlighter-rouge">EXCEPT</code>;</li>
<li>an <code class="highlighter-rouge">AS JSON</code> option for the <code class="highlighter-rouge">EXPLAIN</code> command;</li>
<li>compound identifiers in the target list of <code class="highlighter-rouge">INSERT</code>, allowing you to
insert into individual fields of record-valued columns (or column
@@ -4863,7 +5196,8 @@ Balint)</li>
Add a project to the planner root so that rules know which output fields are
used</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1425">CALCITE-1425</a>]
-Support two-level column structure in <code class="highlighter-rouge">INSERT</code>/<code class="highlighter-rouge">UPDATE</code>/<code class="highlighter-rouge">MERGE</code></li>
+Support two-level column structure in <code class="highlighter-rouge">INSERT</code>/<code class="highlighter-rouge">UPDATE</code>/<code class="highlighter-rouge">MERGE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1472">CALCITE-1472</a>]
Support <code class="highlighter-rouge">CROSS</code>/<code class="highlighter-rouge">OUTER APPLY</code> syntax (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1506">CALCITE-1506</a>]
@@ -4892,17 +5226,21 @@ Support <code class="highlighter-rouge">ANY</code> type with binary comparison a
Add <code class="highlighter-rouge">CONVERT</code> function (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1448">CALCITE-1448</a>]
Add rules to flatten and prune <code class="highlighter-rouge">Intersect</code> and <code class="highlighter-rouge">Minus</code>;
-flatten set-operators if the top is <code class="highlighter-rouge">DISTINCT</code> and bottom is <code class="highlighter-rouge">ALL</code></li>
+flatten set-operators if the top is <code class="highlighter-rouge">DISTINCT</code> and bottom is <code class="highlighter-rouge">ALL</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1426">CALCITE-1426</a>]
-Support customized star expansion in <code class="highlighter-rouge">Table</code></li>
+Support customized star expansion in <code class="highlighter-rouge">Table</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1454">CALCITE-1454</a>]
-Allow custom implementations of <code class="highlighter-rouge">SqlConformance</code></li>
+Allow custom implementations of <code class="highlighter-rouge">SqlConformance</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1417">CALCITE-1417</a>]
In <code class="highlighter-rouge">RelBuilder</code>, simplify “CAST(literal TO type)” to a literal when possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1443">CALCITE-1443</a>]
Add authentication support in Cassandra adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1404">CALCITE-1404</a>]
-Implement <code class="highlighter-rouge">FILTER</code> on aggregate functions in <code class="highlighter-rouge">Interpreter</code></li>
+Implement <code class="highlighter-rouge">FILTER</code> on aggregate functions in <code class="highlighter-rouge">Interpreter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1418">CALCITE-1418</a>]
Implement <code class="highlighter-rouge">SUBSTRING</code> function for <code class="highlighter-rouge">BINARY</code> and <code class="highlighter-rouge">VARBINARY</code> (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1422">CALCITE-1422</a>]
@@ -4912,7 +5250,8 @@ join condition (Viktor Batytskyi)</li>
Implement JDBC functions: <code class="highlighter-rouge">LTRIM</code>, <code class="highlighter-rouge">RTRIM</code> and 3-parameter <code class="highlighter-rouge">LOCATE</code> and
<code class="highlighter-rouge">POSITION</code> (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-917">CALCITE-917</a>]
-Add <code class="highlighter-rouge">AS JSON</code> as output option for <code class="highlighter-rouge">EXPLAIN</code></li>
+Add <code class="highlighter-rouge">AS JSON</code> as output option for <code class="highlighter-rouge">EXPLAIN</code>
+</li>
</ul>
<h4 id="fixes-1-11-0">Bug-fixes, API changes and minor enhancements</h4>
@@ -4939,7 +5278,8 @@ Wrong plan for <code class="highlighter-rouge">NOT IN</code> correlated queries<
Use <code class="highlighter-rouge">Strong</code> to infer whether a predicate’s inputs may be null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1530">CALCITE-1530</a>]
Create a visitor to traverse linq4j expressions without mutating them, and
-rename <code class="highlighter-rouge">Visitor</code> to <code class="highlighter-rouge">Shuttle</code></li>
+rename <code class="highlighter-rouge">Visitor</code> to <code class="highlighter-rouge">Shuttle</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1507">CALCITE-1507</a>]
<code class="highlighter-rouge">OFFSET</code> cannot be pushed through a <code class="highlighter-rouge">JOIN</code> if the non-preserved side of outer
join is not count-preserving</li>
@@ -4951,9 +5291,11 @@ In <code class="highlighter-rouge">HttpUtils</code>, don’t log HTTP requests;
Column uniqueness is calculated incorrectly for <code class="highlighter-rouge">Correlate</code> (Alexey Makhmutov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1495">CALCITE-1495</a>]
<code class="highlighter-rouge">SemiJoinRule</code> should not apply to <code class="highlighter-rouge">RIGHT</code> and <code class="highlighter-rouge">FULL JOIN</code>, and should strip
-<code class="highlighter-rouge">LEFT JOIN</code></li>
+<code class="highlighter-rouge">LEFT JOIN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1516">CALCITE-1516</a>]
-Upgrade <code class="highlighter-rouge">hydromatic-resource-maven-plugin</code>, and re-work <code class="highlighter-rouge">SaffronProperties</code></li>
+Upgrade <code class="highlighter-rouge">hydromatic-resource-maven-plugin</code>, and re-work <code class="highlighter-rouge">SaffronProperties</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1498">CALCITE-1498</a>]
Avoid <code class="highlighter-rouge">LIMIT</code> with trivial <code class="highlighter-rouge">ORDER BY</code> being pushed through <code class="highlighter-rouge">JOIN</code> endlessly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1501">CALCITE-1501</a>]
@@ -4966,7 +5308,8 @@ value and literal (Serhii Harnyk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1486">CALCITE-1486</a>]
Invalid “Invalid literal” error for complex expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1488">CALCITE-1488</a>]
-<code class="highlighter-rouge">ValuesReduceRule</code> should ignore empty <code class="highlighter-rouge">Values</code></li>
+<code class="highlighter-rouge">ValuesReduceRule</code> should ignore empty <code class="highlighter-rouge">Values</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1384">CALCITE-1384</a>]
Extension point for <code class="highlighter-rouge">ALTER</code> statements (Gabriel Reid)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1484">CALCITE-1484</a>]
@@ -4976,17 +5319,21 @@ Fix leak on CassandraSchema creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1479">CALCITE-1479</a>]
<code class="highlighter-rouge">AssertionError</code> in <code class="highlighter-rouge">ReduceExpressionsRule</code> on multi-column <code class="highlighter-rouge">IN</code> sub-query
(Gian Merlino)</li>
- <li>Upgrade <code class="highlighter-rouge">Quidem</code></li>
+ <li>Upgrade <code class="highlighter-rouge">Quidem</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1416">CALCITE-1416</a>]
Make classes implement <code class="highlighter-rouge">AutoCloseable</code> where possible (Chinmay Kolhatkar)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1474">CALCITE-1474</a>]
-Upgrade <code class="highlighter-rouge">aggdesigner</code></li>
+Upgrade <code class="highlighter-rouge">aggdesigner</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1270">CALCITE-1270</a>]
-Upgrade to <code class="highlighter-rouge">avatica-1.9</code>, <code class="highlighter-rouge">sqlline-1.2.0</code></li>
+Upgrade to <code class="highlighter-rouge">avatica-1.9</code>, <code class="highlighter-rouge">sqlline-1.2.0</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1461">CALCITE-1461</a>]
Hard-coded class name in <code class="highlighter-rouge">JaninoRelMetadataProvider</code> breaks shading (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1465">CALCITE-1465</a>]
-Store constants as a derived field in <code class="highlighter-rouge">RelOptPredicateList</code></li>
+Store constants as a derived field in <code class="highlighter-rouge">RelOptPredicateList</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1429">CALCITE-1429</a>]
Druid adapter must send <code class="highlighter-rouge">fromNext</code> when requesting rows from Druid (Jiarong
Wei)</li>
@@ -4998,7 +5345,8 @@ Interval fractional second precision returns wrong value (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1434">CALCITE-1434</a>]
User-defined aggregate function that uses a generic interface (Arun Mahadevan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1431">CALCITE-1431</a>]
-<code class="highlighter-rouge">RelDataTypeFactoryImpl.copyType()</code> did not copy <code class="highlighter-rouge">StructKind</code></li>
+<code class="highlighter-rouge">RelDataTypeFactoryImpl.copyType()</code> did not copy <code class="highlighter-rouge">StructKind</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1424">CALCITE-1424</a>]
Druid type is called <code class="highlighter-rouge">FLOAT</code>, not <code class="highlighter-rouge">DOUBLE</code> (Jiarong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1415">CALCITE-1415</a>]
@@ -5013,7 +5361,8 @@ Add sub-query support for RelStructuredTypeFlattener</li>
Add Apache Apex to “Powered By” page (Chinmay Kolhatkar)</li>
</ul>
-<h2 id="v1-10-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.10.0">1.10.0</a> / 2016-10-12</h2>
+<h2 id="v1-10-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.10.0">1.10.0</a> / 2016-10-12</h2>
<p>This release comes shortly after 1.9.0. It includes mainly bug-fixes for the core and
Druid adapter. For the latest, we fixed an
@@ -5031,7 +5380,8 @@ other software versions as specified in <code class="highlighter-rouge">pom.xml<
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1374">CALCITE-1374</a>]
-Support operator <code class="highlighter-rouge">!=</code> as an alternative to <code class="highlighter-rouge"><></code></li>
+Support operator <code class="highlighter-rouge">!=</code> as an alternative to <code class="highlighter-rouge"><></code>
+</li>
</ul>
<h4 id="fixes-1-10-0">Bug-fixes, API changes and minor enhancements</h4>
@@ -5040,7 +5390,8 @@ Support operator <code class="highlighter-rouge">!=</code> as an alternative to
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1378">CALCITE-1378</a>]
<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> in sql-to-rel conversion for two-level columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1379">CALCITE-1379</a>]
-When expanding <code class="highlighter-rouge">STAR</code>, expand sub-fields in <code class="highlighter-rouge">RecordType</code> columns of <code class="highlighter-rouge">StructKind.PEEK_FIELDS</code> and <code class="highlighter-rouge">StructKind.PEEK_FIELDS_DEFAULT</code></li>
+When expanding <code class="highlighter-rouge">STAR</code>, expand sub-fields in <code class="highlighter-rouge">RecordType</code> columns of <code class="highlighter-rouge">StructKind.PEEK_FIELDS</code> and <code class="highlighter-rouge">StructKind.PEEK_FIELDS_DEFAULT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1381">CALCITE-1381</a>]
Function quantifier should be retained in a cloned Sql call (zhengdong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1386">CALCITE-1386</a>]
@@ -5050,9 +5401,11 @@ Druid default time column not properly recognized</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1394">CALCITE-1394</a>]
Using <code class="highlighter-rouge">CoreMatchers.containsString</code> causes javadoc errors</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1396">CALCITE-1396</a>]
-<code class="highlighter-rouge">isDeterministic</code> only explores top <code class="highlighter-rouge">RexCall</code></li>
+<code class="highlighter-rouge">isDeterministic</code> only explores top <code class="highlighter-rouge">RexCall</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1397">CALCITE-1397</a>]
-<code class="highlighter-rouge">ClassCastException</code> in <code class="highlighter-rouge">FilterReduceExpressionsRule</code></li>
+<code class="highlighter-rouge">ClassCastException</code> in <code class="highlighter-rouge">FilterReduceExpressionsRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1398">CALCITE-1398</a>]
Change visibility of <code class="highlighter-rouge">RelFieldTrimmer</code> utility methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1400">CALCITE-1400</a>]
@@ -5072,7 +5425,8 @@ Allow Calcite JDBC Driver minor version to be greater than 9</li>
Exclude packages <code class="highlighter-rouge">org.apache.calcite.benchmarks.generated</code>, <code class="highlighter-rouge">org.openjdk.jmh</code> from javadoc</li>
</ul>
-<h2 id="v1-9-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.9.0">1.9.0</a> / 2016-09-22</h2>
+<h2 id="v1-9-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.9.0">1.9.0</a> / 2016-09-22</h2>
<p>This release includes extensions and fixes for the Druid adapter. New features were
added, such as the capability to
@@ -5125,7 +5479,8 @@ Broken Druid query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1348">CALCITE-1348</a>]
In Druid adapter, adjust how <code class="highlighter-rouge">SegmentMetadataQuery</code> is used to detect types (Gian Merlino)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1357">CALCITE-1357</a>]
-Recognize Druid <code class="highlighter-rouge">Timeseries</code> and <code class="highlighter-rouge">TopN</code> queries in <code class="highlighter-rouge">DruidQuery</code></li>
+Recognize Druid <code class="highlighter-rouge">Timeseries</code> and <code class="highlighter-rouge">TopN</code> queries in <code class="highlighter-rouge">DruidQuery</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1358">CALCITE-1358</a>]
Push filters on time dimension to Druid</li>
</ul>
@@ -5146,7 +5501,8 @@ Convert predicates on <code class="highlighter-rouge">EXTRACT</code> function ca
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1342">CALCITE-1342</a>]
<code class="highlighter-rouge">ProjectPusher</code> should use rel factories when creating new rels, e.g. project/filter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1365">CALCITE-1365</a>]
-Introduce <code class="highlighter-rouge">UnionPullUpConstantsRule</code></li>
+Introduce <code class="highlighter-rouge">UnionPullUpConstantsRule</code>
+</li>
</ul>
<h4 id="fixes-1-9-0">Bug-fixes, API changes and minor enhancements</h4>
@@ -5163,31 +5519,40 @@ Creating output row type of a Join does not obey case-sensitivity flags</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-991">CALCITE-991</a>]
Create separate <code class="highlighter-rouge">SqlFunctionCategory</code> values for table functions and macros (Julien Le Dem)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1043">CALCITE-1043</a>]
-<code class="highlighter-rouge">RexOptUtil</code> does not support function table other than <code class="highlighter-rouge">SqlStdOperatorTable</code></li>
+<code class="highlighter-rouge">RexOptUtil</code> does not support function table other than <code class="highlighter-rouge">SqlStdOperatorTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1095">CALCITE-1095</a>]
<code class="highlighter-rouge">NOT</code> precedence</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1148">CALCITE-1148</a>]
-Trait conversion broken for <code class="highlighter-rouge">RelTraits</code> other than <code class="highlighter-rouge">Convention</code></li>
+Trait conversion broken for <code class="highlighter-rouge">RelTraits</code> other than <code class="highlighter-rouge">Convention</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1278">CALCITE-1278</a>]
-CalciteSignature’s ColumnMetaData for <code class="highlighter-rouge">DELETE</code> should be same as <code class="highlighter-rouge">INSERT</code></li>
+CalciteSignature’s ColumnMetaData for <code class="highlighter-rouge">DELETE</code> should be same as <code class="highlighter-rouge">INSERT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1283">CALCITE-1283</a>]
-Nullability incorrectly assigned in <code class="highlighter-rouge">SqlTypeFactory.leastRestrictiveSqlType()</code></li>
+Nullability incorrectly assigned in <code class="highlighter-rouge">SqlTypeFactory.leastRestrictiveSqlType()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1284">CALCITE-1284</a>]
Move <code class="highlighter-rouge">Quidem</code> tests from <code class="highlighter-rouge">JdbcTest</code> into their own class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1297">CALCITE-1297</a>]
<code class="highlighter-rouge">RelBuilder</code> should rename fields without creating an identity Project (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1302">CALCITE-1302</a>]
-Create <code class="highlighter-rouge">SqlTypeName</code> values for each interval range, e.g. <code class="highlighter-rouge">YEAR_MONTH</code></li>
+Create <code class="highlighter-rouge">SqlTypeName</code> values for each interval range, e.g. <code class="highlighter-rouge">YEAR_MONTH</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1305">CALCITE-1305</a>]
-Case-insensitive table aliases and <code class="highlighter-rouge">GROUP BY</code></li>
+Case-insensitive table aliases and <code class="highlighter-rouge">GROUP BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1310">CALCITE-1310</a>]
Infer type of arguments to <code class="highlighter-rouge">BETWEEN</code> operator (Yiming Liu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1312">CALCITE-1312</a>]
-Return type of <code class="highlighter-rouge">TIMESTAMP_ADD</code> applied to a <code class="highlighter-rouge">DATE</code> should be <code class="highlighter-rouge">TIMESTAMP</code> if unit is smaller than <code class="highlighter-rouge">DAY</code></li>
+Return type of <code class="highlighter-rouge">TIMESTAMP_ADD</code> applied to a <code class="highlighter-rouge">DATE</code> should be <code class="highlighter-rouge">TIMESTAMP</code> if unit is smaller than <code class="highlighter-rouge">DAY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1313">CALCITE-1313</a>]
-Validator should derive type of expression in <code class="highlighter-rouge">ORDER BY</code></li>
+Validator should derive type of expression in <code class="highlighter-rouge">ORDER BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1314">CALCITE-1314</a>]
-Intermittent failure in <code class="highlighter-rouge">SqlParserTest.testGenerateKeyWords</code></li>
+Intermittent failure in <code class="highlighter-rouge">SqlParserTest.testGenerateKeyWords</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1321">CALCITE-1321</a>]
In-list to join optimization should have configurable in-list size (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1327">CALCITE-1327</a>]
@@ -5195,7 +5560,8 @@ Nested aggregate windowed query fails (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1330">CALCITE-1330</a>]
DB2 does not support character sets in data type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1332">CALCITE-1332</a>]
-JDBC adapter for DB2 should always use aliases for tables: <code class="highlighter-rouge">x.y.z AS z</code></li>
+JDBC adapter for DB2 should always use aliases for tables: <code class="highlighter-rouge">x.y.z AS z</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1333">CALCITE-1333</a>]
<code class="highlighter-rouge">AggFunctions</code> supported by <code class="highlighter-rouge">JdbcAggregate</code> should depend on <code class="highlighter-rouge">SqlKind</code>, instead of operator instance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1336">CALCITE-1336</a>]
@@ -5209,9 +5575,11 @@ Incorrect inferred precision when <code class="highlighter-rouge">BigDecimal</co
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1346">CALCITE-1346</a>]
Invalid nested window aggregate query with alias (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1360">CALCITE-1360</a>]
-Custom schema in file in current directory gives <code class="highlighter-rouge">NullPointerException</code></li>
+Custom schema in file in current directory gives <code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1366">CALCITE-1366</a>]
-Metadata provider should not pull predicates up through <code class="highlighter-rouge">GROUP BY</code></li>
+Metadata provider should not pull predicates up through <code class="highlighter-rouge">GROUP BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1370">CALCITE-1370</a>]
In <code class="highlighter-rouge">SqlKind</code>, add <code class="highlighter-rouge">OTHER_DDL</code> to <code class="highlighter-rouge">DDL</code> enum set (Rajeshbabu Chintaguntla)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1372">CALCITE-1372</a>]
@@ -5229,7 +5597,8 @@ Druid adapter requires Guava 14.0 or higher</li>
As part of release, generate a file containing multiple digests</li>
</ul>
-<h2 id="v1-8-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.8.0">1.8.0</a> / 2016-06-13</h2>
+<h2 id="v1-8-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.8.0">1.8.0</a> / 2016-06-13</h2>
<p>This release adds adapters for
<a href="https://issues.apache.org/jira/browse/CALCITE-1253">Elasticsearch</a> and
@@ -5274,13 +5643,15 @@ Support aggregates within windowed aggregates (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1253">CALCITE-1253</a>]
Elasticsearch adapter (Subhobrata Dey)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1228">CALCITE-1228</a>]
-Bind parameters in <code class="highlighter-rouge">INSERT</code></li>
+Bind parameters in <code class="highlighter-rouge">INSERT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1120">CALCITE-1120</a>]
<code class="highlighter-rouge">SELECT</code> without <code class="highlighter-rouge">FROM</code> (Jimmy Xiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-855">CALCITE-855</a>]
<code class="highlighter-rouge">UNNEST</code> with multiple arguments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1225">CALCITE-1225</a>]
-<code class="highlighter-rouge">UNNEST</code> with <code class="highlighter-rouge">JOIN</code></li>
+<code class="highlighter-rouge">UNNEST</code> with <code class="highlighter-rouge">JOIN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1115">CALCITE-1115</a>]
Add <code class="highlighter-rouge">TRANSLATE</code> function with 3 parameters, like the one in Oracle (Javanshir
Yelchiyev)</li>
@@ -5308,7 +5679,8 @@ Rule to convert <code class="highlighter-rouge">Filter</code>-on-<code class="hi
Extend <code class="highlighter-rouge">RelOptUtil.splitJoinCondition</code> to handle <code class="highlighter-rouge">IS NOT DISTINCT FROM</code>
(Venki Korukanti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1211">CALCITE-1211</a>]
-Allow free use of <code class="highlighter-rouge">CassandraSort</code> for <code class="highlighter-rouge">LIMIT</code></li>
+Allow free use of <code class="highlighter-rouge">CassandraSort</code> for <code class="highlighter-rouge">LIMIT</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1210">CALCITE-1210</a>]
Allow UUID filtering in Cassandra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1182">CALCITE-1182</a>]
@@ -5320,11 +5692,14 @@ substitution</li>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1281">CALCITE-1281</a>]
-Druid adapter wrongly returns all numeric values as <code class="highlighter-rouge">int</code> or <code class="highlighter-rouge">float</code></li>
+Druid adapter wrongly returns all numeric values as <code class="highlighter-rouge">int</code> or <code class="highlighter-rouge">float</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1279">CALCITE-1279</a>]
-Druid “select” query gives <code class="highlighter-rouge">ClassCastException</code></li>
+Druid “select” query gives <code class="highlighter-rouge">ClassCastException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1277">CALCITE-1277</a>]
-Rat fails on source distribution due to <code class="highlighter-rouge">git.properties</code></li>
+Rat fails on source distribution due to <code class="highlighter-rouge">git.properties</code>
+</li>
<li>Update KEYS</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1252">CALCITE-1252</a>]
Handle <code class="highlighter-rouge">ANY</code> type in <code class="highlighter-rouge">RexBuilder.ensureType</code> and <code class="highlighter-rouge">TypeFactory.leastRestrictive</code>
@@ -5346,7 +5721,8 @@ Upgrade to avatica-1.8.0</li>
<code class="highlighter-rouge">Litmus</code> argument interpolation (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1245">CALCITE-1245</a>]
Allow <code class="highlighter-rouge">RelBuilder.scan</code> to take qualified table name (Chris Baynes)</li>
- <li>Move code from <code class="highlighter-rouge">Enumerables</code> to <code class="highlighter-rouge">EnumerableDefaults</code></li>
+ <li>Move code from <code class="highlighter-rouge">Enumerables</code> to <code class="highlighter-rouge">EnumerableDefaults</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1246">CALCITE-1246</a>]
Cleanup duplicate variables in <code class="highlighter-rouge">JoinPushThroughJoinRule</code> (Yi Xinglu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1241">CALCITE-1241</a>]
@@ -5366,24 +5742,30 @@ Bastien)</li>
Add SQLSTATE reference data as <code class="highlighter-rouge">enum SqlState</code> in Avatica, and
deprecate <code class="highlighter-rouge">SqlStateCodes</code> in Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1199">CALCITE-1199</a>]
-Incorrect trimming of <code class="highlighter-rouge">CHAR</code> when performing cast to <code class="highlighter-rouge">VARCHAR</code></li>
+Incorrect trimming of <code class="highlighter-rouge">CHAR</code> when performing cast to <code class="highlighter-rouge">VARCHAR</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1219">CALCITE-1219</a>]
Add method <code class="highlighter-rouge">SqlOperatorBinding.isOperandLiteral()</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1222">CALCITE-1222</a>]
-<code class="highlighter-rouge">DatabaseMetaData.getColumnLabel</code> returns null when query has <code class="highlighter-rouge">ORDER BY</code></li>
+<code class="highlighter-rouge">DatabaseMetaData.getColumnLabel</code> returns null when query has <code class="highlighter-rouge">ORDER BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1215">CALCITE-1215</a>]
-Fix missing override in <code class="highlighter-rouge">CassandraTable</code></li>
+Fix missing override in <code class="highlighter-rouge">CassandraTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1212">CALCITE-1212</a>]
Fix NPE on some Cassandra projects</li>
<li>Remove trailing spaces from all source files</li>
<li>Move HTTP utilities from Splunk adapter to core</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/PHOENIX-2767">PHOENIX-2767</a>],
-non-constant in <code class="highlighter-rouge">IN</code></li>
+non-constant in <code class="highlighter-rouge">IN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1166">CALCITE-1166</a>]
-Disallow sub-classes of <code class="highlighter-rouge">RelOptRuleOperand</code></li>
+Disallow sub-classes of <code class="highlighter-rouge">RelOptRuleOperand</code>
+</li>
<li>Remove all calls to deprecated methods</li>
- <li>Add class <code class="highlighter-rouge">ConsList</code></li>
+ <li>Add class <code class="highlighter-rouge">ConsList</code>
+</li>
<li>More of [<a href="https://issues.apache.org/jira/browse/CALCITE-999">CALCITE-999</a>]
Clean up maven POM files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1204">CALCITE-1204</a>]
@@ -5401,7 +5783,8 @@ Allow apache-rat to be run outside of release process</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1273">CALCITE-1273</a>]
Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-306">CALCITE-306</a>],
-update references to <code class="highlighter-rouge">EnumerableTableAccessRel</code> to <code class="highlighter-rouge">EnumerableTableScan</code></li>
+update references to <code class="highlighter-rouge">EnumerableTableAccessRel</code> to <code class="highlighter-rouge">EnumerableTableScan</code>
+</li>
<li>Fix typo in SQL (Yi Xinglu)</li>
<li>Site: add committer, and post slides/video from Polyalgebra talk</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1203">CALCITE-1203</a>]
@@ -5411,7 +5794,8 @@ Lock version of Jekyll for bundler</li>
<li>Site: add upcoming talks, and fix link to Apache phonebook</li>
</ul>
-<h2 id="v1-7-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.7.0">1.7.0</a> / 2016-03-22</h2>
+<h2 id="v1-7-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.7.0">1.7.0</a> / 2016-03-22</h2>
<p>This is the first Apache Calcite release since
<a href="/avatica/news/2016/03/03/separate-project/">Avatica became an independent project</a>.
@@ -5463,7 +5847,8 @@ other software versions as specified in <code class="highlighter-rouge">pom.xml<
Add <code class="highlighter-rouge">TIMESTAMPADD</code>, <code class="highlighter-rouge">TIMESTAMPDIFF</code> functions (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1066">CALCITE-1066</a>]
Add Oracle function table, and functions <code class="highlighter-rouge">DECODE</code>, <code class="highlighter-rouge">NVL</code>, <code class="highlighter-rouge">LTRIM</code>, <code class="highlighter-rouge">RTRIM</code>,
-<code class="highlighter-rouge">GREATEST</code>, <code class="highlighter-rouge">LEAST</code></li>
+<code class="highlighter-rouge">GREATEST</code>, <code class="highlighter-rouge">LEAST</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1080">CALCITE-1080</a>]
Cassandra adapter (Michael Mior)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1062">CALCITE-1062</a>]
@@ -5495,7 +5880,8 @@ If constant reduction no-ops, don’t create a new <code class="highlighter-roug
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1076">CALCITE-1076</a>]
Update <code class="highlighter-rouge">RelMdDistribution</code> to match other metadata APIs (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1056">CALCITE-1056</a>]
-In <code class="highlighter-rouge">RelBuilder</code>, simplify predicates, and optimize away <code class="highlighter-rouge">WHERE FALSE</code></li>
+In <code class="highlighter-rouge">RelBuilder</code>, simplify predicates, and optimize away <code class="highlighter-rouge">WHERE FALSE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1059">CALCITE-1059</a>]
Not valid to convert <code class="highlighter-rouge">Aggregate</code> on empty to empty if its <code class="highlighter-rouge">GROUP BY</code> key is empty</li>
</ul>
@@ -5512,9 +5898,11 @@ Wrong path in CSV example model (wanglan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1156">CALCITE-1156</a>]
Increase Jetty version to 9.2.15.v20160210</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1064">CALCITE-1064</a>]
-Address problematic <code class="highlighter-rouge">maven-remote-resources-plugin</code></li>
+Address problematic <code class="highlighter-rouge">maven-remote-resources-plugin</code>
+</li>
<li>In <code class="highlighter-rouge">TimeUnit</code> add <code class="highlighter-rouge">WEEK</code>, <code class="highlighter-rouge">QUARTER</code>, <code class="highlighter-rouge">MICROSECOND</code> values, and change type of
-<code class="highlighter-rouge">multiplier</code></li>
+<code class="highlighter-rouge">multiplier</code>
+</li>
<li>Deprecate <code class="highlighter-rouge">SqlLiteral.SqlSymbol</code>; <code class="highlighter-rouge">SqlSymbol</code> can now wrap any enum</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1078">CALCITE-1078</a>]
Detach avatica from the core calcite Maven project
@@ -5529,7 +5917,8 @@ Exclude Avatica from Calcite source release</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1111">CALCITE-1111</a>]
Upgrade Guava, and test on a range of Guava versions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1054">CALCITE-1054</a>]
-Wrong code generation for <code class="highlighter-rouge">TIMESTAMP</code> values that may be <code class="highlighter-rouge">NULL</code></li>
+Wrong code generation for <code class="highlighter-rouge">TIMESTAMP</code> values that may be <code class="highlighter-rouge">NULL</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-604">CALCITE-604</a>]
Tune metadata by generating a dispatcher at runtime</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1063">CALCITE-1063</a>]
@@ -5555,7 +5944,8 @@ CSV adapter incorrectly parses <code class="highlighter-rouge">TIMESTAMP</code>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-669">CALCITE-669</a>]
Mass removal of Java Logging for SLF4J</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1068">CALCITE-1068</a>]
-Deprecate <code class="highlighter-rouge">Stacks</code></li>
+Deprecate <code class="highlighter-rouge">Stacks</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1067">CALCITE-1067</a>]
Test failures due to clashing temporary table names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-864">CALCITE-864</a>]
@@ -5586,7 +5976,8 @@ Upgrade to new Apache logo</li>
Delete old releases from mirroring system</li>
</ul>
-<h2 id="v1-6-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.6.0">1.6.0</a> / 2016-01-22</h2>
+<h2 id="v1-6-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.6.0">1.6.0</a> / 2016-01-22</h2>
<p>As usual in this release, there are new SQL features, improvements to
planning rules and Avatica, and lots of bug-fixes. We’ll spotlight a
@@ -5627,17 +6018,21 @@ other software versions as specified in <code class="highlighter-rouge">pom.xml<
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>]
-Represent sub-query as a <code class="highlighter-rouge">RexNode</code></li>
+Represent sub-query as a <code class="highlighter-rouge">RexNode</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-854">CALCITE-854</a>]
-Implement <code class="highlighter-rouge">UNNEST ... WITH ORDINALITY</code></li>
+Implement <code class="highlighter-rouge">UNNEST ... WITH ORDINALITY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1003">CALCITE-1003</a>]
Utility to convert <code class="highlighter-rouge">RelNode</code> to SQL (Amogh Margoor)
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1010">CALCITE-1010</a>]
<code class="highlighter-rouge">FETCH/LIMIT</code> and <code class="highlighter-rouge">OFFSET</code> in RelToSqlConverter (Amogh Margoor)</li>
<li>Move code from <code class="highlighter-rouge">JdbcImplementor</code> and <code class="highlighter-rouge">JdbcRules</code> to new class
-<code class="highlighter-rouge">SqlImplementor</code></li>
- <li>Deduce dialect’s null collation from <code class="highlighter-rouge">DatabaseMetaData</code></li>
+<code class="highlighter-rouge">SqlImplementor</code>
+</li>
+ <li>Deduce dialect’s null collation from <code class="highlighter-rouge">DatabaseMetaData</code>
+</li>
<li>Fix <code class="highlighter-rouge">RelToSqlConverterTest</code> on Windows</li>
</ul>
</li>
@@ -5664,7 +6059,8 @@ If <code class="highlighter-rouge">NULLS FIRST</code>/<code class="highlighter-r
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1040">CALCITE-1040</a>]
Differentiate better between arrays and scalars in protobuf</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-934">CALCITE-934</a>]
-Use an OS-assigned ephemeral port for <code class="highlighter-rouge">CalciteRemoteDriverTest</code></li>
+Use an OS-assigned ephemeral port for <code class="highlighter-rouge">CalciteRemoteDriverTest</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-767">CALCITE-767</a>]
Create Avatica RPC endpoints for commit and rollback commands</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-983">CALCITE-983</a>]
@@ -5674,7 +6070,8 @@ Add server’s address in each response</li>
<li>Fix some bugs found by static analysis</li>
<li>Make all <code class="highlighter-rouge">equals</code> and <code class="highlighter-rouge">hashCode</code> methods uniform</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-962">CALCITE-962</a>]
-Propagate the cause, not just the cause’s message, from <code class="highlighter-rouge">JdbcMeta</code></li>
+Propagate the cause, not just the cause’s message, from <code class="highlighter-rouge">JdbcMeta</code>
+</li>
</ul>
<h4 id="planner-rules-1-6-0">Planner rules</h4>
@@ -5699,7 +6096,8 @@ Simplify predicate when we create a <code class="highlighter-rouge">Filter</code
occurs in when <code class="highlighter-rouge">NOT IN</code> is expanded</li>
<li>Fix variant of
[<a href="https://issues.apache.org/jira/browse/CALCITE-923">CALCITE-923</a>]
-that occurs in <code class="highlighter-rouge">RelOptRulesTest.testPushFilterPastProject</code></li>
+that occurs in <code class="highlighter-rouge">RelOptRulesTest.testPushFilterPastProject</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1023">CALCITE-1023</a>]
and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1038">CALCITE-1038</a>]
@@ -5732,11 +6130,14 @@ Add description to <code class="highlighter-rouge">SortProjectTransposeRule</cod
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1060">CALCITE-1060</a>]
-Fix test deadlock by initializing <code class="highlighter-rouge">DriverManager</code> before registering <code class="highlighter-rouge">AlternatingDriver</code></li>
+Fix test deadlock by initializing <code class="highlighter-rouge">DriverManager</code> before registering <code class="highlighter-rouge">AlternatingDriver</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1047">CALCITE-1047</a>]
-<code class="highlighter-rouge">ChunkList.clear</code> throws <code class="highlighter-rouge">AssertionError</code></li>
+<code class="highlighter-rouge">ChunkList.clear</code> throws <code class="highlighter-rouge">AssertionError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1053">CALCITE-1053</a>]
-CPU spin, <code class="highlighter-rouge">ReflectiveRelMetadataProvider.apply</code> waiting for <code class="highlighter-rouge">HashMap.get</code></li>
+CPU spin, <code class="highlighter-rouge">ReflectiveRelMetadataProvider.apply</code> waiting for <code class="highlighter-rouge">HashMap.get</code>
+</li>
<li>Upgrade toolbox, to fix line length issue on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1051">CALCITE-1051</a>]
Underflow exception due to scaling IN clause literals (Frankie Bollaert)</li>
@@ -5750,28 +6151,37 @@ Detect cycles when computing statistics
<li>Tune algorithm that deduces the return type of <code class="highlighter-rouge">AND</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-842">CALCITE-842</a>]
Decorrelator gets field offsets confused if fields have been trimmed</li>
- <li>Fix <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">SqlJoin.toString()</code></li>
- <li>Add <code class="highlighter-rouge">ImmutableBitSet.rebuild()</code></li>
+ <li>Fix <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">SqlJoin.toString()</code>
+</li>
+ <li>Add <code class="highlighter-rouge">ImmutableBitSet.rebuild()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-915">CALCITE-915</a>]
Tests now unset <code class="highlighter-rouge">ThreadLocal</code> values on exit</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1036">CALCITE-1036</a>]
<code class="highlighter-rouge">DiffRepository</code> should not insert new resources at the end of the repository</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-955">CALCITE-955</a>]
<code class="highlighter-rouge">Litmus</code> (continuation-passing style for methods that check invariants)</li>
- <li><code class="highlighter-rouge">RelBuilder.project</code> now does nothing if asked to project the identity with
+ <li>
+<code class="highlighter-rouge">RelBuilder.project</code> now does nothing if asked to project the identity with
the same field names</li>
<li>Deprecate some <code class="highlighter-rouge">Util</code> methods, and upgrade last Maven modules to JDK 1.7</li>
- <li>Document <code class="highlighter-rouge">RelOptPredicateList</code></li>
- <li>Add <code class="highlighter-rouge">ImmutableNullableList.copyOf(Iterable)</code></li>
- <li>Fix “endPosTable already set” error from <code class="highlighter-rouge">javac</code></li>
- <li>Add benchmark of <code class="highlighter-rouge">Parser.create(sql).parseQuery()</code></li>
+ <li>Document <code class="highlighter-rouge">RelOptPredicateList</code>
+</li>
+ <li>Add <code class="highlighter-rouge">ImmutableNullableList.copyOf(Iterable)</code>
+</li>
+ <li>Fix “endPosTable already set” error from <code class="highlighter-rouge">javac</code>
+</li>
+ <li>Add benchmark of <code class="highlighter-rouge">Parser.create(sql).parseQuery()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1042">CALCITE-1042</a>]
-Ensure that <code class="highlighter-rouge">FILTER</code> is <code class="highlighter-rouge">BOOLEAN NOT NULL</code></li>
+Ensure that <code class="highlighter-rouge">FILTER</code> is <code class="highlighter-rouge">BOOLEAN NOT NULL</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1039">CALCITE-1039</a>]
Assign a <code class="highlighter-rouge">SqlKind</code> value for each built-in aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1030">CALCITE-1030</a>]
JSON <code class="highlighter-rouge">ModelHandler</code> calling <code class="highlighter-rouge">SchemaPlus.setCacheEnabled()</code> causes
-<code class="highlighter-rouge">UnsupportedOperationException</code> when using <code class="highlighter-rouge">SimpleCalciteSchema</code></li>
+<code class="highlighter-rouge">UnsupportedOperationException</code> when using <code class="highlighter-rouge">SimpleCalciteSchema</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1028">CALCITE-1028</a>]
Move populate materializations after sql-to-rel conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1034">CALCITE-1034</a>]
@@ -5785,7 +6195,8 @@ In a planner test, if a rule should have no effect, state that explicitly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1016">CALCITE-1016</a>]
<code class="highlighter-rouge">GROUP BY *constant*</code> on empty relation should return 0 rows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1022">CALCITE-1022</a>]
-Rename <code class="highlighter-rouge">.oq</code> Quidem files to <code class="highlighter-rouge">.iq</code></li>
+Rename <code class="highlighter-rouge">.oq</code> Quidem files to <code class="highlighter-rouge">.iq</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-980">CALCITE-980</a>]
Fix <code class="highlighter-rouge">AND</code> and <code class="highlighter-rouge">OR</code> implementation in <code class="highlighter-rouge">Enumerable</code> convention</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-459">CALCITE-459</a>]
@@ -5793,7 +6204,8 @@ When parsing SQL, allow single line comment on last line (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1009">CALCITE-1009</a>]
<code class="highlighter-rouge">SelfPopulatingList</code> is not thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1008">CALCITE-1008</a>]
-Replace <code class="highlighter-rouge">Closeable</code> with <code class="highlighter-rouge">AutoCloseable</code></li>
+Replace <code class="highlighter-rouge">Closeable</code> with <code class="highlighter-rouge">AutoCloseable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1001">CALCITE-1001</a>]
Upgrade to quidem-0.7</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-990">CALCITE-990</a>]
@@ -5803,11 +6215,13 @@ In <code class="highlighter-rouge">VolcanoPlanner</code>, populate <code class="
<code class="highlighter-rouge">VolcanoPlanner</code> now clears <code class="highlighter-rouge">ruleNames</code> in order to avoid rule name
conflicting error</li>
<li>Factor user-defined function tests from <code class="highlighter-rouge">JdbcTest</code> to <code class="highlighter-rouge">UdfTest</code>, and classes
-into <code class="highlighter-rouge">Smalls</code></li>
+into <code class="highlighter-rouge">Smalls</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-974">CALCITE-974</a>]
Exception while validating <code class="highlighter-rouge">DELETE</code> (Yuri Au Yong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-964">CALCITE-964</a>]
-Rename <code class="highlighter-rouge">timezone</code> connection property to <code class="highlighter-rouge">timeZone</code></li>
+Rename <code class="highlighter-rouge">timezone</code> connection property to <code class="highlighter-rouge">timeZone</code>
+</li>
</ul>
<h4 id="site-1-6-0">Web site and documentation</h4>
@@ -5838,7 +6252,8 @@ Download links for pgp, md5, <code class="highlighter-rouge">KEYS</code> files,
Link to downloads page from each release news item</li>
</ul>
-<h2 id="v1-5-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.5.0">1.5.0</a> / 2015-11-06</h2>
+<h2 id="v1-5-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.5.0">1.5.0</a> / 2015-11-06</h2>
<p>Our first release as a top-level Apache project!</p>
@@ -5894,7 +6309,8 @@ Theta join in JDBC adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-823">CALCITE-823</a>]
Add <code class="highlighter-rouge">ALTER ... RESET</code> statement (Sudheesh Katkam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-881">CALCITE-881</a>]
-Allow schema.table.column references in <code class="highlighter-rouge">GROUP BY</code></li>
+Allow schema.table.column references in <code class="highlighter-rouge">GROUP BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-852">CALCITE-852</a>]
DDL statements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-851">CALCITE-851</a>]
@@ -5939,7 +6355,8 @@ Avatica <code class="highlighter-rouge">JdbcMeta</code> statement IDs are not un
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-866">CALCITE-866</a>]
Break out Avatica documentation and add JSON reference (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-843">CALCITE-843</a>]
-<code class="highlighter-rouge">AvaticaConnection.getAutoCommit</code> throws <code class="highlighter-rouge">NullPointerException</code></li>
+<code class="highlighter-rouge">AvaticaConnection.getAutoCommit</code> throws <code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-840">CALCITE-840</a>]
Protocol buffer serialization over HTTP for Avatica Server (Josh Elser)</li>
</ul>
@@ -5964,7 +6381,8 @@ Margoor)</li>
Planner requires unnecessary collation when using materialized view (Maryann
Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-825">CALCITE-825</a>]
-Allow user to specify sort order of an <code class="highlighter-rouge">ArrayTable</code></li>
+Allow user to specify sort order of an <code class="highlighter-rouge">ArrayTable</code>
+</li>
</ul>
<h4 id="planner-rules-1-5-0">Planner rules</h4>
@@ -5993,13 +6411,15 @@ Make <code class="highlighter-rouge">ReduceExpressionsRule</code> extensible</li
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-856">CALCITE-856</a>]
Make more rules extensible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-902">CALCITE-902</a>]
-Match nullability when reducing expressions in a <code class="highlighter-rouge">Project</code></li>
+Match nullability when reducing expressions in a <code class="highlighter-rouge">Project</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-895">CALCITE-895</a>]
Simplify “(<code class="highlighter-rouge">CASE</code> … <code class="highlighter-rouge">END</code>) = constant” inside <code class="highlighter-rouge">AND</code> or <code class="highlighter-rouge">OR</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-828">CALCITE-828</a>]
Use RelBuilder in rules rather than type-specific RelNode factories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-892">CALCITE-892</a>]
-Implement <code class="highlighter-rouge">SortJoinTransposeRule</code></li>
+Implement <code class="highlighter-rouge">SortJoinTransposeRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-876">CALCITE-876</a>]
After pushing <code class="highlighter-rouge">LogicalProject</code> past <code class="highlighter-rouge">LogicalWindow</code>, adjust references to
constants properly (Hsuan-Yi Chu)</li>
@@ -6009,7 +6429,8 @@ Push <code class="highlighter-rouge">Project</code> through <code class="highlig
Redundant windows when window function arguments are expressions (Hsuan-Yi
Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-846">CALCITE-846</a>]
-Push <code class="highlighter-rouge">Aggregate</code> with <code class="highlighter-rouge">Filter</code> through <code class="highlighter-rouge">Union(all)</code></li>
+Push <code class="highlighter-rouge">Aggregate</code> with <code class="highlighter-rouge">Filter</code> through <code class="highlighter-rouge">Union(all)</code>
+</li>
</ul>
<h4 id="rel-builder-1-5-0">RelBuilder and Piglet</h4>
@@ -6025,7 +6446,8 @@ Add “Piglet”, a subset of Pig Latin on top of Calcite algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-869">CALCITE-869</a>]
Add <code class="highlighter-rouge">VALUES</code> command to Piglet</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-868">CALCITE-868</a>]
-Add API to execute queries expressed as <code class="highlighter-rouge">RelNode</code></li>
+Add API to execute queries expressed as <code class="highlighter-rouge">RelNode</code>
+</li>
<li>In RelBuilder, build expressions by table alias</li>
</ul>
@@ -6033,7 +6455,8 @@ Add API to execute queries expressed as <code class="highlighter-rouge">RelNode<
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-948">CALCITE-948</a>]
-Indicator columns not preserved by <code class="highlighter-rouge">RelFieldTrimmer</code></li>
+Indicator columns not preserved by <code class="highlighter-rouge">RelFieldTrimmer</code>
+</li>
<li>Fix Windows issues (line endings and checkstyle suppressions)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-937">CALCITE-937</a>]
User-defined function within view</li>
@@ -6043,13 +6466,15 @@ Rules fail to match because of missing link to parent equivalence set
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-908">CALCITE-908</a>]
Bump protobuf to 3.0.0-beta-1, fix deprecations and update docs (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-932">CALCITE-932</a>]
-Fix muddled columns when <code class="highlighter-rouge">RelFieldTrimmer</code> is applied to <code class="highlighter-rouge">Aggregate</code></li>
+Fix muddled columns when <code class="highlighter-rouge">RelFieldTrimmer</code> is applied to <code class="highlighter-rouge">Aggregate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-930">CALCITE-930</a>]
Now Calcite is a top-level project, remove references to “incubating”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-929">CALCITE-929</a>]
Calls to <code class="highlighter-rouge">AbstractRelNode</code> may result in NPE</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-923">CALCITE-923</a>]
-Type mismatch when converting <code class="highlighter-rouge">LEFT JOIN</code> to <code class="highlighter-rouge">INNER</code></li>
+Type mismatch when converting <code class="highlighter-rouge">LEFT JOIN</code> to <code class="highlighter-rouge">INNER</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-666">CALCITE-666</a>]
Anti-semi-joins against JDBC adapter give wrong results (Yeong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-918">CALCITE-918</a>]
@@ -6058,7 +6483,8 @@ Anti-semi-joins against JDBC adapter give wrong results (Yeong Wei)</li>
Obsolete <code class="highlighter-rouge">RelNode.isKey</code> and <code class="highlighter-rouge">isDistinct</code> methods</li>
<li>Allow FlatLists of different length to be compared</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-898">CALCITE-898</a>]
-Type of ‘Java<Long> * `INTEGER`' should be `BIGINT`</Long></li>
+Type of ‘Java<long> * `INTEGER`' should be `BIGINT`</long>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-894">CALCITE-894</a>]
Do not generate redundant column alias for the left relation when
translating <code class="highlighter-rouge">IN</code> sub-query (Maryann Xue)</li>
@@ -6080,11 +6506,14 @@ Allow web site to be deployed not as the root directory of the web server
Synchronize HSQLDB at a coarse level using a Lock (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-870">CALCITE-870</a>]
Remove copyright content from archers.json</li>
- <li>Replace <code class="highlighter-rouge">Stack</code> with <code class="highlighter-rouge">ArrayDeque</code></li>
+ <li>Replace <code class="highlighter-rouge">Stack</code> with <code class="highlighter-rouge">ArrayDeque</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-874">CALCITE-874</a>]
<code class="highlighter-rouge">ReflectiveRelMetadataProvider</code> is not thread-safe</li>
- <li>Add <code class="highlighter-rouge">LogicalWindow.create()</code></li>
- <li>Add <code class="highlighter-rouge">ImmutableBitSet.get(int, int)</code></li>
+ <li>Add <code class="highlighter-rouge">LogicalWindow.create()</code>
+</li>
+ <li>Add <code class="highlighter-rouge">ImmutableBitSet.get(int, int)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-865">CALCITE-865</a>]
Unknown table type causes <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">JdbcSchema</code>
<ul>
@@ -6110,7 +6539,8 @@ Validate that window functions have <code class="highlighter-rouge">OVER</code>
Type inference when converting <code class="highlighter-rouge">IN</code> clause to semijoin (Josh Wills)</li>
</ul>
-<h2 id="v1-4-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.4.0-incubating">1.4.0-incubating</a> / 2015-09-02</h2>
+<h2 id="v1-4-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.4.0-incubating">1.4.0-incubating</a> / 2015-09-02</h2>
<p>In addition to a large number of bug-fixes and minor enhancements,
this release includes improvements to lattices and materialized views,
@@ -6130,7 +6560,8 @@ algebra expressions.</p>
Detect if materialized view can be used to rewrite a query in
non-trivial cases (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-732">CALCITE-732</a>]
- Implement multiple distinct-<code class="highlighter-rouge">COUNT</code> using <code class="highlighter-rouge">GROUPING SETS</code></li>
+ Implement multiple distinct-<code class="highlighter-rouge">COUNT</code> using <code class="highlighter-rouge">GROUPING SETS</code>
+</li>
<li>Add various <code class="highlighter-rouge">BitSet</code> and <code class="highlighter-rouge">ImmutableBitSet</code> utilities</li>
</ul>
@@ -6170,13 +6601,15 @@ for it</li>
<code class="highlighter-rouge">RelOptUtil.splitJoinCondition</code> incorrectly splits a join condition
(Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>]
- Add a unit test case to test collation of <code class="highlighter-rouge">LogicalAggregate</code></li>
+ Add a unit test case to test collation of <code class="highlighter-rouge">LogicalAggregate</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>]
Revert incorrect <code class="highlighter-rouge">LogicalAggregate</code> collation inferring logic made in
[<a href="https://issues.apache.org/jira/browse/CALCITE-783">CALCITE-783</a>]
(Milinda Pathirage)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-826">CALCITE-826</a>]
- Use <code class="highlighter-rouge">ProjectFactory</code> in <code class="highlighter-rouge">AggregateJoinTranposeRule</code> and <code class="highlighter-rouge">FilterJoinRule</code></li>
+ Use <code class="highlighter-rouge">ProjectFactory</code> in <code class="highlighter-rouge">AggregateJoinTranposeRule</code> and <code class="highlighter-rouge">FilterJoinRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-821">CALCITE-821</a>]
<code class="highlighter-rouge">Frameworks</code> gives NPE when <code class="highlighter-rouge">FrameworkConfig</code> has no default schema</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-811">CALCITE-811</a>]
@@ -6197,18 +6630,22 @@ manager declarations</li>
When de-correlating, push join condition into sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-751">CALCITE-751</a>]
Push aggregate with aggregate functions through join</li>
- <li>Add <code class="highlighter-rouge">RelBuilder.avg</code></li>
+ <li>Add <code class="highlighter-rouge">RelBuilder.avg</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-806">CALCITE-806</a>]
<code class="highlighter-rouge">ROW_NUMBER</code> should emit distinct values</li>
<li>Document JSON model, making javadoc consistent with the model reference</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-808">CALCITE-808</a>]
- Optimize <code class="highlighter-rouge">ProjectMergeRule</code></li>
+ Optimize <code class="highlighter-rouge">ProjectMergeRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-791">CALCITE-791</a>]
- Optimize <code class="highlighter-rouge">RelOptUtil.pushFilterPastProject</code></li>
+ Optimize <code class="highlighter-rouge">RelOptUtil.pushFilterPastProject</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-783">CALCITE-783</a>]
Infer collation of <code class="highlighter-rouge">Project</code> using monotonicity (Milinda Pathirage)</li>
<li>Change the argument types of <code class="highlighter-rouge">SqlOperator.getMonotonicity</code> to allow it to be
-used for <code class="highlighter-rouge">RexNode</code> as well as <code class="highlighter-rouge">SqlNode</code></li>
+used for <code class="highlighter-rouge">RexNode</code> as well as <code class="highlighter-rouge">SqlNode</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-800">CALCITE-800</a>]
Window function defined within another window function should be invalid
(Hsuan-Yi Chu)</li>
@@ -6222,21 +6659,25 @@ service (Lukáš Lalinský)</li>
When <code class="highlighter-rouge">GROUP BY</code> is present, ensure that window function operands only
refer to grouping keys (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-799">CALCITE-799</a>]
- Incorrect result for <code class="highlighter-rouge">HAVING count(*) > 1</code></li>
+ Incorrect result for <code class="highlighter-rouge">HAVING count(*) > 1</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-801">CALCITE-801</a>]
<code class="highlighter-rouge">NullPointerException</code> using <code class="highlighter-rouge">USING</code> on table alias with column aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-390">CALCITE-390</a>]
Infer predicates for semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-789">CALCITE-789</a>]
<code class="highlighter-rouge">MetaImpl.MetaCatalog</code> should expose <code class="highlighter-rouge">TABLE_CAT</code> instead of
- <code class="highlighter-rouge">TABLE_CATALOG</code></li>
+ <code class="highlighter-rouge">TABLE_CATALOG</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-752">CALCITE-752</a>]
Add back sqlline as a dependency to csv example</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-780">CALCITE-780</a>]
HTTP error 413 when sending a long string to the Avatica server</li>
<li>In <code class="highlighter-rouge">RelBuilder</code>, calling <code class="highlighter-rouge">sort</code> then <code class="highlighter-rouge">limit</code> has same effect as calling
-<code class="highlighter-rouge">sortLimit</code></li>
- <li>Add <code class="highlighter-rouge">Ord.reverse</code></li>
+<code class="highlighter-rouge">sortLimit</code>
+</li>
+ <li>Add <code class="highlighter-rouge">Ord.reverse</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-788">CALCITE-788</a>]
Allow <code class="highlighter-rouge">EnumerableJoin</code> to be sub-classed (Li Yang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-280">CALCITE-280</a>]
@@ -6248,9 +6689,11 @@ refer to grouping keys (Hsuan-Yi Chu)</li>
functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-765">CALCITE-765</a>]
Set <code class="highlighter-rouge">Content-Type</code> from the RPC server to <code class="highlighter-rouge">application/json</code> (Lukáš Lalinský)</li>
- <li>Fix Windows line-endings in <code class="highlighter-rouge">RelBuilderTest</code></li>
+ <li>Fix Windows line-endings in <code class="highlighter-rouge">RelBuilderTest</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-727">CALCITE-727</a>]
- Constant folding involving <code class="highlighter-rouge">CASE</code> and <code class="highlighter-rouge">NULL</code></li>
+ Constant folding involving <code class="highlighter-rouge">CASE</code> and <code class="highlighter-rouge">NULL</code>
+</li>
<li>Related to
[<a href="https://issues.apache.org/jira/browse/CALCITE-758">CALCITE-758</a>],
speed up matching by not considering tiles separately from other
@@ -6296,7 +6739,8 @@ cause the right RPCs</li>
present</li>
</ul>
-<h2 id="v1-3-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.3.0-incubating">1.3.0-incubating</a> / 2015-05-30</h2>
+<h2 id="v1-3-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.3.0-incubating">1.3.0-incubating</a> / 2015-05-30</h2>
<p>Mainly bug-fixes, but this release adds support for
<a href="https://issues.apache.org/jira/browse/CALCITE-505">modifiable views</a>
@@ -6324,15 +6768,18 @@ Remote fetch in Calcite JDBC driver</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-722">CALCITE-722</a>]
Rename markdown files to lower-case</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-697">CALCITE-697</a>]
-Obsolete class <code class="highlighter-rouge">RelOptQuery</code></li>
+Obsolete class <code class="highlighter-rouge">RelOptQuery</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-693">CALCITE-693</a>]
-Allow clients to control creation of <code class="highlighter-rouge">RelOptCluster</code></li>
+Allow clients to control creation of <code class="highlighter-rouge">RelOptCluster</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-691">CALCITE-691</a>]
Allow projects to supply alternate SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-675">CALCITE-675</a>]
Enable <code class="highlighter-rouge">AggregateProjectMergeRule</code> in standard rule set</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-679">CALCITE-679</a>]
-Factory method for <code class="highlighter-rouge">SemiJoin</code></li>
+Factory method for <code class="highlighter-rouge">SemiJoin</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-674">CALCITE-674</a>]
Add a <code class="highlighter-rouge">SWAP_OUTER</code> static instance to <code class="highlighter-rouge">JoinCommuteRule</code> (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-735">CALCITE-735</a>]
@@ -6356,7 +6803,8 @@ Oracle SQL (Yeong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-733">CALCITE-733</a>]
Multiple distinct-<code class="highlighter-rouge">COUNT</code> query gives wrong results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-730">CALCITE-730</a>]
-<code class="highlighter-rouge">ClassCastException</code> in table from <code class="highlighter-rouge">CloneSchema</code></li>
+<code class="highlighter-rouge">ClassCastException</code> in table from <code class="highlighter-rouge">CloneSchema</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-728">CALCITE-728</a>]
Test suite hangs on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-723">CALCITE-723</a>]
@@ -6366,7 +6814,8 @@ Add Apache headers to markdown files</li>
<li>Upgrade quidem</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-716">CALCITE-716</a>]
Scalar sub-query and aggregate function in <code class="highlighter-rouge">SELECT</code> or <code class="highlighter-rouge">HAVING</code> clause gives
-<code class="highlighter-rouge">AssertionError</code></li>
+<code class="highlighter-rouge">AssertionError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-694">CALCITE-694</a>]
Scan <code class="highlighter-rouge">HAVING</code> clause for sub-queries and <code class="highlighter-rouge">IN</code>-lists (Hsuan-Yi Chu)</li>
<li>Upgrade hydromatic-resource-maven-plugin</li>
@@ -6417,7 +6866,8 @@ Jye)</li>
<code class="highlighter-rouge">SemiJoinRule</code> mixes up fields when <code class="highlighter-rouge">Aggregate.groupSet</code> is not field #0</li>
</ul>
-<h2 id="v1-2-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.2.0-incubating">1.2.0-incubating</a> / 2015-04-07</h2>
+<h2 id="v1-2-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.2.0-incubating">1.2.0-incubating</a> / 2015-04-07</h2>
<p>A short release, less than a month after 1.1.</p>
@@ -6530,9 +6980,11 @@ SQL <code class="highlighter-rouge">ANY</code> type should be nullable (Jinfeng
<li>Disable tests, pending
[<a href="https://issues.apache.org/jira/browse/CALCITE-673">CALCITE-673</a>]
Timeout executing joins against MySQL</li>
- <li>Fix traits in MongoDB adapter, and <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">JdbcTest</code></li>
+ <li>Fix traits in MongoDB adapter, and <code class="highlighter-rouge">NullPointerException</code> in <code class="highlighter-rouge">JdbcTest</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-662">CALCITE-662</a>]
-Query validation fails when an <code class="highlighter-rouge">ORDER BY</code> clause is used with <code class="highlighter-rouge">WITH CLAUSE</code></li>
+Query validation fails when an <code class="highlighter-rouge">ORDER BY</code> clause is used with <code class="highlighter-rouge">WITH CLAUSE</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-606">CALCITE-606</a>]
Fix trait propagation and add test case</li>
<li>Remove checkstyle Eclipse properties from git tracking</li>
@@ -6547,7 +6999,8 @@ Sort order returned by <code class="highlighter-rouge">SUPERCLASS_COMPARATOR</co
<code class="highlighter-rouge">ReflectiveRelMetadataProvider</code> is inconsistent (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-335">CALCITE-335</a>]
-Remove uses of linq4j <code class="highlighter-rouge">Functions.adapt</code></li>
+Remove uses of linq4j <code class="highlighter-rouge">Functions.adapt</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-592">CALCITE-592</a>]
Upgrade to Guava 14.0.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-596">CALCITE-596</a>]
@@ -6555,12 +7008,14 @@ JDBC adapter incorrectly reads null values as 0 (Ng Jiunn Jye)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-633">CALCITE-633</a>]
<code class="highlighter-rouge">WITH ... ORDER BY</code> cannot find table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-614">CALCITE-614</a>]
-<code class="highlighter-rouge">IN</code> clause in <code class="highlighter-rouge">CASE</code> in <code class="highlighter-rouge">GROUP BY</code> gives <code class="highlighter-rouge">AssertionError</code></li>
+<code class="highlighter-rouge">IN</code> clause in <code class="highlighter-rouge">CASE</code> in <code class="highlighter-rouge">GROUP BY</code> gives <code class="highlighter-rouge">AssertionError</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-619">CALCITE-619</a>]
Slim down dependencies in parent POM</li>
</ul>
-<h2 id="v1-1-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.1.0-incubating">1.1.0-incubating</a> / 2015-03-13</h2>
+<h2 id="v1-1-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.1.0-incubating">1.1.0-incubating</a> / 2015-03-13</h2>
<p>This Calcite release makes it possible to exploit physical properties
of relational expressions to produce more efficient plans, introducing
@@ -6592,7 +7047,8 @@ Operator <code class="highlighter-rouge">||</code> mishandles <code class="highl
<li>Planner rule improvements
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-445">CALCITE-445</a>]
-Pull up filters rejected by a <code class="highlighter-rouge">ProjectableFilterableTable</code></li>
+Pull up filters rejected by a <code class="highlighter-rouge">ProjectableFilterableTable</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-600">CALCITE-600</a>]
Use <code class="highlighter-rouge">SetOpFactory</code> in rules containing <code class="highlighter-rouge">Union</code> operator (Jesus
Camacho Rodriguez)</li>
@@ -6624,7 +7080,8 @@ Provide a way to declare that tables are sorted</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-576">CALCITE-576</a>]
Make <code class="highlighter-rouge">RelCollation</code> trait and <code class="highlighter-rouge">AbstractRelNode.getCollationList</code> consistent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-254">CALCITE-254</a>]
-Propagate <code class="highlighter-rouge">RelCollation</code> on aliased columns in <code class="highlighter-rouge">JoinRule</code></li>
+Propagate <code class="highlighter-rouge">RelCollation</code> on aliased columns in <code class="highlighter-rouge">JoinRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>]
<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> when deducing collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-594">CALCITE-594</a>]
@@ -6653,7 +7110,8 @@ contexts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-599">CALCITE-599</a>]
<code class="highlighter-rouge">EquiJoin</code> in wrong package (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-573">CALCITE-573</a>]
-Use user-given names in <code class="highlighter-rouge">RelOptUtil.createProject</code> and <code class="highlighter-rouge">createRename</code></li>
+Use user-given names in <code class="highlighter-rouge">RelOptUtil.createProject</code> and <code class="highlighter-rouge">createRename</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-572">CALCITE-572</a>]
Remove <code class="highlighter-rouge">Project.flags</code> (methods are deprecated, to be removed before 2.0)</li>
</ul>
@@ -6673,19 +7131,23 @@ Reduce dependency on third-party maven repositories</li>
Method <code class="highlighter-rouge">setAggChildKeys</code> should take into account indicator columns of
<code class="highlighter-rouge">Aggregate</code> operator (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-566">CALCITE-566</a>]
-<code class="highlighter-rouge">ReduceExpressionsRule</code> requires planner to have an <code class="highlighter-rouge">Executor</code></li>
+<code class="highlighter-rouge">ReduceExpressionsRule</code> requires planner to have an <code class="highlighter-rouge">Executor</code>
+</li>
<li>Refactor <code class="highlighter-rouge">TableScanNode.create</code> method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-593">CALCITE-593</a>]
Validator in <code class="highlighter-rouge">Frameworks</code> should expand identifiers (Jinfeng Ni)</li>
<li>Australian time-zones changed in <code class="highlighter-rouge">tzdata2014f</code>, Java 1.8.0_31</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-580">CALCITE-580</a>]
-Average aggregation on an <code class="highlighter-rouge">Integer</code> column throws <code class="highlighter-rouge">ClassCastException</code></li>
+Average aggregation on an <code class="highlighter-rouge">Integer</code> column throws <code class="highlighter-rouge">ClassCastException</code>
+</li>
<li>In Travis, ask Surefire to print results to screen</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-586">CALCITE-586</a>]
-Prevent JSON serialization of <code class="highlighter-rouge">Signature.internalParameters</code></li>
+Prevent JSON serialization of <code class="highlighter-rouge">Signature.internalParameters</code>
+</li>
</ul>
-<h2 id="v1-0-0"><a href="https://github.com/apache/calcite/releases/tag/calcite-1.0.0-incubating">1.0.0-incubating</a> / 2015-01-31</h2>
+<h2 id="v1-0-0">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-1.0.0-incubating">1.0.0-incubating</a> / 2015-01-31</h2>
<p>Calcite’s first major release.</p>
@@ -6716,7 +7178,8 @@ Add <code class="highlighter-rouge">EXTEND</code> clause, for defining columns a
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-497">CALCITE-497</a>]
Support optional qualifier for column name references</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-356">CALCITE-356</a>]
-Allow column references of the form <code class="highlighter-rouge">schema.table.column</code></li>
+Allow column references of the form <code class="highlighter-rouge">schema.table.column</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-462">CALCITE-462</a>]
Allow table functions in <code class="highlighter-rouge">LATERAL</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-282">CALCITE-282</a>]
@@ -6738,7 +7201,8 @@ Optimize away <code class="highlighter-rouge">Project</code> that merely renames
<li>Detect and merge duplicate predicates <code class="highlighter-rouge">AND(x, y, x)</code> to <code class="highlighter-rouge">AND(x, y)</code> in more
circumstances</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-557">CALCITE-557</a>]
-Speed up planning by never creating <code class="highlighter-rouge">AbstractConverter</code></li>
+Speed up planning by never creating <code class="highlighter-rouge">AbstractConverter</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-545">CALCITE-545</a>]
When a projected expression can only have one value, replace with that
constant</li>
@@ -6814,11 +7278,14 @@ Standardize code style for “import package.*;”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-474">CALCITE-474</a>]
Clean up rule naming in order to support enabling/disabling rules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-460">CALCITE-460</a>]
-Add <code class="highlighter-rouge">ImmutableBitSet</code> and replace uses of <code class="highlighter-rouge">BitSet</code></li>
+Add <code class="highlighter-rouge">ImmutableBitSet</code> and replace uses of <code class="highlighter-rouge">BitSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-479">CALCITE-479</a>]
-Migrate <code class="highlighter-rouge">RelNode.getChildExps</code> to <code class="highlighter-rouge">RelNode.accept(RexShuttle)</code></li>
+Migrate <code class="highlighter-rouge">RelNode.getChildExps</code> to <code class="highlighter-rouge">RelNode.accept(RexShuttle)</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-527">CALCITE-527</a>]
-Drop <code class="highlighter-rouge">rowType</code> field and constructor/copy argument of <code class="highlighter-rouge">Calc</code></li>
+Drop <code class="highlighter-rouge">rowType</code> field and constructor/copy argument of <code class="highlighter-rouge">Calc</code>
+</li>
</ul>
</li>
<li>Add linq4j and example-csv modules
@@ -6849,10 +7316,12 @@ Skip overwrite of <code class="highlighter-rouge">NOTICE</code>, <code class="hi
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-538">CALCITE-538</a>]
Generate <code class="highlighter-rouge">Parser.jj</code> only at first build</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-539">CALCITE-539</a>]
-Avoid rewrite of <code class="highlighter-rouge">org-apache-calcite-jdbc.properties</code></li>
+Avoid rewrite of <code class="highlighter-rouge">org-apache-calcite-jdbc.properties</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-540">CALCITE-540</a>]
Create git.properties file only at first build. This saves time in
-development at a cost of stale <code class="highlighter-rouge">git.properties</code></li>
+development at a cost of stale <code class="highlighter-rouge">git.properties</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-536">CALCITE-536</a>]
Add <code class="highlighter-rouge">@PackageMarker</code> to <code class="highlighter-rouge">package-info.java</code> so maven-compiler skips
compilation when the sources are unchanged</li>
@@ -6870,7 +7339,8 @@ field names are identical (John Pullokkaran)</li>
condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-568">CALCITE-568</a>]
Upgrade to a version of <code class="highlighter-rouge">pentaho-aggdesigner</code> that does not pull in
-<code class="highlighter-rouge">servlet-api</code></li>
+<code class="highlighter-rouge">servlet-api</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-567">CALCITE-567</a>]
Make <code class="highlighter-rouge">quidem</code> dependency have scope “test”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-570">CALCITE-570</a>]
@@ -6879,7 +7349,8 @@ Make <code class="highlighter-rouge">quidem</code> dependency have scope “test
Upgrade parent POM</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-458">CALCITE-458</a>]
ArrayIndexOutOfBoundsException when using just a single column in interpreter</li>
- <li>Fix spurious extra row from <code class="highlighter-rouge">FULL JOIN</code></li>
+ <li>Fix spurious extra row from <code class="highlighter-rouge">FULL JOIN</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-554">CALCITE-554</a>]
Outer join over NULL keys generates wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-489">CALCITE-489</a>]
@@ -6897,7 +7368,8 @@ Extend <code class="highlighter-rouge">induce</code> method to return <code clas
</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-212">CALCITE-212</a>]
-Join condition with <code class="highlighter-rouge">OR</code></li>
+Join condition with <code class="highlighter-rouge">OR</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-550">CALCITE-550</a>]
Case-insensitive matching of sub-query columns fails
<ul>
@@ -6905,7 +7377,8 @@ Case-insensitive matching of sub-query columns fails
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-448">CALCITE-448</a>]
-<code class="highlighter-rouge">FilterIntoJoinRule</code> creates filters containing invalid <code class="highlighter-rouge">RexInputRef</code></li>
+<code class="highlighter-rouge">FilterIntoJoinRule</code> creates filters containing invalid <code class="highlighter-rouge">RexInputRef</code>
+</li>
<li>When registering a <code class="highlighter-rouge">RelNode</code>, be tolerant if it is equivalent to a <code class="highlighter-rouge">RelNode</code>
with different traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-547">CALCITE-547</a>]
@@ -6926,13 +7399,16 @@ claim to accept</li>
<li>Add a model that has lattices and works against HSQLDB</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-509">CALCITE-509</a>]
<code class="highlighter-rouge">RelMdColumnUniqueness</code> uses <code class="highlighter-rouge">ImmutableBitSet.Builder</code> twice, gets
-<code class="highlighter-rouge">NullPointerException</code></li>
+<code class="highlighter-rouge">NullPointerException</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-488">CALCITE-488</a>]
<code class="highlighter-rouge">Enumerable<Holder></code> does not work if where <code class="highlighter-rouge">Holder</code> is a custom class
with a single field; Calcite tries to treat it as <code class="highlighter-rouge">SCALAR</code> due to premature
-<code class="highlighter-rouge">JavaRowFormat.optimize</code></li>
+<code class="highlighter-rouge">JavaRowFormat.optimize</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-352">CALCITE-352</a>]
-Throw exception if <code class="highlighter-rouge">ResultSet.next()</code> is called after <code class="highlighter-rouge">close()</code></li>
+Throw exception if <code class="highlighter-rouge">ResultSet.next()</code> is called after <code class="highlighter-rouge">close()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-403">CALCITE-403</a>]
<code class="highlighter-rouge">Enumerable</code> gives <code class="highlighter-rouge">NullPointerException</code> with <code class="highlighter-rouge">NOT</code> on nullable expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-469">CALCITE-469</a>]
@@ -6946,7 +7422,8 @@ Update <code class="highlighter-rouge">EMPS.deptno</code> column Integer → int
attributes</li>
<li>Update link optiq-mat-plugin → mat-calcite-plugin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-467">CALCITE-467</a>]
-Incorrect namespace in <code class="highlighter-rouge">package-info.java</code></li>
+Incorrect namespace in <code class="highlighter-rouge">package-info.java</code>
+</li>
<li>Add headers, to appease the RAT</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-446">CALCITE-446</a>]
CSV adapter should read from directory relative to the model file</li>
@@ -6957,7 +7434,8 @@ Simpler SPI to query Table</li>
<li>Update release HOWTO</li>
</ul>
-<h2 id="v0-9-2"><a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.2-incubating">0.9.2-incubating</a> / 2014-11-05</h2>
+<h2 id="v0-9-2">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.2-incubating">0.9.2-incubating</a> / 2014-11-05</h2>
<p>A fairly minor release, and last release before we rename all of the
packages and lots of classes, in what we expect to call 1.0. If you
@@ -6968,7 +7446,8 @@ before you move on to 1.0.</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-436">CALCITE-436</a>]
-Simpler SPI to query <code class="highlighter-rouge">Table</code></li>
+Simpler SPI to query <code class="highlighter-rouge">Table</code>
+</li>
</ul>
<h4 id="api-0-9-2">API changes</h4>
@@ -7004,14 +7483,16 @@ travis CI now that [INFRA-8413] is fixed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-439">CALCITE-439</a>]
<code class="highlighter-rouge">SqlValidatorUtil.uniquify()</code> may not terminate under some conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-438">CALCITE-438</a>]
-Push predicates through <code class="highlighter-rouge">SemiJoinRel</code></li>
+Push predicates through <code class="highlighter-rouge">SemiJoinRel</code>
+</li>
<li>Add test case for <code class="highlighter-rouge">LIKE ... ESCAPE</code>.</li>
<li>HOWTO: Modify release instructions.</li>
<li>Update <code class="highlighter-rouge">DiffRepository</code> documentation.</li>
<li>Add tests for windowed aggregates without <code class="highlighter-rouge">ORDER BY</code>. (Works already.)</li>
</ul>
-<h2 id="v0-9-1"><a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.1-incubating">0.9.1-incubating</a> / 2014-10-02</h2>
+<h2 id="v0-9-1">
+<a href="https://github.com/apache/calcite/releases/tag/calcite-0.9.1-incubating">0.9.1-incubating</a> / 2014-10-02</h2>
<p>This is the first release as Calcite. (The project was previously called Optiq.)</p>
@@ -7080,7 +7561,8 @@ Make <code class="highlighter-rouge">FieldTrimmer</code> work with <code class="
Handle semi-joins in field trimmer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-395">CALCITE-395</a>]
Make <code class="highlighter-rouge">FieldTrimmer.trimFields(SetOp)</code> generate <code class="highlighter-rouge">ProjectRel</code> instead of
-<code class="highlighter-rouge">CalcRel</code></li>
+<code class="highlighter-rouge">CalcRel</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-393">CALCITE-393</a>]
If no fields are projected from a table, field trimmer should project a
dummy expression</li>
@@ -7093,7 +7575,8 @@ dummy expression</li>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-413">CALCITE-413</a>]
Add <code class="highlighter-rouge">RelDataTypeSystem</code> plugin, allowing different max precision of a
-<code class="highlighter-rouge">DECIMAL</code></li>
+<code class="highlighter-rouge">DECIMAL</code>
+</li>
<li>In <code class="highlighter-rouge">Planner</code>, query de-correlation no longer requires state in a
<code class="highlighter-rouge">SqlToRelConverter</code>.</li>
<li>Factories:
@@ -7103,9 +7586,11 @@ Add <code class="highlighter-rouge">RelDataTypeSystem</code> plugin, allowing di
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-382">CALCITE-382</a>]
Refactoring rules to use factories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-398">CALCITE-398</a>]
-Move <code class="highlighter-rouge">CalcRel.createProject</code> methods to <code class="highlighter-rouge">RelOptUtil</code></li>
+Move <code class="highlighter-rouge">CalcRel.createProject</code> methods to <code class="highlighter-rouge">RelOptUtil</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-396">CALCITE-396</a>]
-Change return type of <code class="highlighter-rouge">JoinFactory.createJoin()</code>; add <code class="highlighter-rouge">SemiJoinFactory</code></li>
+Change return type of <code class="highlighter-rouge">JoinFactory.createJoin()</code>; add <code class="highlighter-rouge">SemiJoinFactory</code>
+</li>
</ul>
</li>
</ul>
@@ -7119,7 +7604,8 @@ Fix NOTICE</li>
<li>Add recent presentation to README.md.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-427">CALCITE-427</a>]
Off-by-one issues in <code class="highlighter-rouge">RemoveDistinctAggregateRule</code>,
-<code class="highlighter-rouge">AggregateFilterTransposeRule</code></li>
+<code class="highlighter-rouge">AggregateFilterTransposeRule</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-414">CALCITE-414</a>]
Bad class name in <code class="highlighter-rouge">sqlline</code> shell script</li>
<li>Bad package name in <code class="highlighter-rouge">package-info.java</code> was causing errors in Eclipse.</li>
@@ -7168,7 +7654,8 @@ most recently.</li>
</li>
</ul>
-<h2 id="v0-9-0"><a href="https://github.com/apache/calcite/releases/tag/optiq-0.9.0-incubating">0.9.0-incubating</a> / 2014-08-19</h2>
+<h2 id="v0-9-0">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-0.9.0-incubating">0.9.0-incubating</a> / 2014-08-19</h2>
<p>This is the first release under the Apache incubator process.</p>
@@ -7204,7 +7691,8 @@ creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-316">CALCITE-316</a>]
In <code class="highlighter-rouge">SqlRun</code>, match output regardless of order if <code class="highlighter-rouge">ORDER BY</code> not present</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-300">CALCITE-300</a>]
-Support multiple parameters in <code class="highlighter-rouge">COUNT(DISTINCT x, y, ...)</code></li>
+Support multiple parameters in <code class="highlighter-rouge">COUNT(DISTINCT x, y, ...)</code>
+</li>
</ul>
<h4 id="api-0-9-0">API changes</h4>
@@ -7228,7 +7716,8 @@ so framework implementors can support late bound function implementations.</li>
Add <code class="highlighter-rouge">ViewExpander</code> for <code class="highlighter-rouge">Planner</code> in <code class="highlighter-rouge">Frameworks</code>. Expose additional
properties of <code class="highlighter-rouge">ViewTable</code> to allow subclassing.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-247">CALCITE-247</a>]
-Add <code class="highlighter-rouge">Context</code> and <code class="highlighter-rouge">FrameworkConfig</code></li>
+Add <code class="highlighter-rouge">Context</code> and <code class="highlighter-rouge">FrameworkConfig</code>
+</li>
</ul>
<h4 id="fixes-0-9-0">Bug-fixes and internal changes</h4>
@@ -7298,18 +7787,21 @@ Migrate issue URLs</li>
Precision/scale compatibility checks should always succeed for <code class="highlighter-rouge">ANY</code> type</li>
<li>In <code class="highlighter-rouge">SqlRun</code>, allow <code class="highlighter-rouge">!plan</code> after <code class="highlighter-rouge">!ok</code> for same SQL statement.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-318">CALCITE-318</a>]
-Add unit test for <code class="highlighter-rouge">SqlRun</code></li>
+Add unit test for <code class="highlighter-rouge">SqlRun</code>
+</li>
<li>Fix a bug where composite <code class="highlighter-rouge">SELECT DISTINCT</code> would return duplicate rows.</li>
</ul>
-<h2 id="v0-8"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.8">0.8</a> / 2014-06-27</h2>
+<h2 id="v0-8">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.8">0.8</a> / 2014-06-27</h2>
<h4 id="new-features-0-8">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-310">CALCITE-310</a>]
Implement LEAD, LAG and NTILE windowed aggregates</li>
- <li>Reduce <code class="highlighter-rouge">COUNT(not-null-expression)</code> to <code class="highlighter-rouge">COUNT()</code></li>
+ <li>Reduce <code class="highlighter-rouge">COUNT(not-null-expression)</code> to <code class="highlighter-rouge">COUNT()</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-292">CALCITE-292</a>]
Improve windowed aggregate return types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-302">CALCITE-302</a>]
@@ -7334,7 +7826,8 @@ Add <code class="highlighter-rouge">SqlRun</code>, an idempotent utility for run
<li>Re-organize planner initialization,
to make it easier to use heuristic join order.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-301">CALCITE-301</a>]
-Add <code class="highlighter-rouge">Program</code> interface, a planner phase more general than current <code class="highlighter-rouge">RuleSet</code></li>
+Add <code class="highlighter-rouge">Program</code> interface, a planner phase more general than current <code class="highlighter-rouge">RuleSet</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-263">CALCITE-263</a>]
Add operand type that will cause a rule to fire when a new subset is created</li>
<li>Clean up and document SqlKind.
@@ -7350,12 +7843,15 @@ including for <code class="highlighter-rouge">IS_NOT_UNKNOWN</code> operator.</l
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-312">CALCITE-312</a>]
-Trim non-required fields before <code class="highlighter-rouge">WindowRel</code></li>
+Trim non-required fields before <code class="highlighter-rouge">WindowRel</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-311">CALCITE-311</a>]
Wrong results when filtering the results of windowed aggregation</li>
- <li>More tests for <code class="highlighter-rouge">WITH ... ORDER BY</code></li>
+ <li>More tests for <code class="highlighter-rouge">WITH ... ORDER BY</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-309">CALCITE-309</a>]
-<code class="highlighter-rouge">WITH ... ORDER BY</code> query gives <code class="highlighter-rouge">AssertionError</code></li>
+<code class="highlighter-rouge">WITH ... ORDER BY</code> query gives <code class="highlighter-rouge">AssertionError</code>
+</li>
<li>Enable <code class="highlighter-rouge">MultiJoinRel</code> and some other planner rule tests.</li>
<li>Add <code class="highlighter-rouge">ImmutableNullableList</code> and <code class="highlighter-rouge">UnmodifiableArrayList</code>,
and remove calls to <code class="highlighter-rouge">Arrays.asList</code>.</li>
@@ -7374,16 +7870,20 @@ Add tests for windowed aggregation based on Postgres reference queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-286">CALCITE-286</a>]
Error casting MongoDB date</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-284">CALCITE-284</a>]
-Window functions range defaults to <code class="highlighter-rouge">CURRENT ROW</code></li>
+Window functions range defaults to <code class="highlighter-rouge">CURRENT ROW</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-285">CALCITE-285</a>]
-Window functions throw exception without <code class="highlighter-rouge">ORDER BY</code></li>
+Window functions throw exception without <code class="highlighter-rouge">ORDER BY</code>
+</li>
<li>Test case for
[<a href=“https://issues.apache.org/jira/browse/CALCITE-285”>CALCITE-285</a>].</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-281">CALCITE-281</a>]
-<code class="highlighter-rouge">EXTRACT</code> function’s SQL return type is <code class="highlighter-rouge">BIGINT</code> but implemented as Java <code class="highlighter-rouge">int</code></li>
+<code class="highlighter-rouge">EXTRACT</code> function’s SQL return type is <code class="highlighter-rouge">BIGINT</code> but implemented as Java <code class="highlighter-rouge">int</code>
+</li>
</ul>
-<h2 id="v0-7"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.7">0.7</a> / 2014-05-13</h2>
+<h2 id="v0-7">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.7">0.7</a> / 2014-05-13</h2>
<h4 id="new-features-0-7">New features</h4>
@@ -7407,7 +7907,8 @@ Support column alias in WITH queries (common table expressions)</li>
<li>Windowed aggregates:
<ul>
<li>Aggregate over constants, e.g. <code class="highlighter-rouge">SUM(1) OVER (ROWS 10 PRECEDING)</code>;</li>
- <li><code class="highlighter-rouge">UNBOUNDED PRECEDING</code> window range;</li>
+ <li>
+<code class="highlighter-rouge">UNBOUNDED PRECEDING</code> window range;</li>
<li>Windowed aggregates computed over primitive scalars.</li>
</ul>
</li>
@@ -7460,7 +7961,8 @@ of the original <code class="highlighter-rouge">RelNode</code>.</li>
<li>Hush warnings from <code class="highlighter-rouge">SplunkAdapterTest</code> if Splunk is not available.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-252">CALCITE-252</a>]
Scalar sub-query that returns 0 rows should become NULL value</li>
- <li><code class="highlighter-rouge">SplunkAdapterTest</code> now uses the same Foodmart database as <code class="highlighter-rouge">JdbcTest</code>.</li>
+ <li>
+<code class="highlighter-rouge">SplunkAdapterTest</code> now uses the same Foodmart database as <code class="highlighter-rouge">JdbcTest</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-242">CALCITE-242</a>]
SplunkAdapterTest fails</li>
<li>Remove some obsolete classes.</li>
@@ -7468,7 +7970,8 @@ SplunkAdapterTest fails</li>
Suspicious map.get in VolcanoPlanner.reregister</li>
</ul>
-<h2 id="v0-6"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.6">0.6</a> / 2014-04-11</h2>
+<h2 id="v0-6">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.6">0.6</a> / 2014-04-11</h2>
<h4 id="new-features-0-6">New features</h4>
@@ -7529,7 +8032,8 @@ Common base class for TableFunction, ScalarFunction
<ul>
<li>Upgrade to linq4j-0.2.</li>
- <li><code class="highlighter-rouge">FETCH</code> and <code class="highlighter-rouge">LIMIT</code> are ignored during SQL-to-RelNode translation.
+ <li>
+<code class="highlighter-rouge">FETCH</code> and <code class="highlighter-rouge">LIMIT</code> are ignored during SQL-to-RelNode translation.
(Venki Korukanti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-245">CALCITE-245</a>]
Off-by-one translation of ON clause of JOIN</li>
@@ -7537,7 +8041,8 @@ Off-by-one translation of ON clause of JOIN</li>
Rotate time/date/timestamp vals to local timezone</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-244">CALCITE-244</a>]
<code class="highlighter-rouge">RelOptTableImpl.create</code> always expects <code class="highlighter-rouge">QueryableTable</code> type in
-<code class="highlighter-rouge">OptiqSchema.TableEntry</code></li>
+<code class="highlighter-rouge">OptiqSchema.TableEntry</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-225">CALCITE-225</a>]
Optiq doesn’t correctly decorrelate queries</li>
<li>Clean up package-info. Remove duplicates in test packages so they
@@ -7570,7 +8075,8 @@ Consistent strategy for line-endings in tests
Convert uses of <code class="highlighter-rouge">NL</code> in tests to Linux newline “\n”.
This makes string constants simpler.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-218">CALCITE-218</a>]
-Functions case sensitive when using <code class="highlighter-rouge">Lex.MYSQL</code></li>
+Functions case sensitive when using <code class="highlighter-rouge">Lex.MYSQL</code>
+</li>
<li>Add tests that a query with aggregate expressions in the <code class="highlighter-rouge">SELECT</code>
clause is considered an aggregate query, even if there is no <code class="highlighter-rouge">GROUP BY</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-216">CALCITE-216</a>]
@@ -7593,7 +8099,8 @@ and obsolete our copy of the resource framework.</li>
(Jinfeng Ni)</li>
</ul>
-<h2 id="v0-5"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.5">0.5</a> / 2014-03-14</h2>
+<h2 id="v0-5">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.5">0.5</a> / 2014-03-14</h2>
<h4 id="new-features-0-5">New features</h4>
@@ -7619,7 +8126,8 @@ Optiq should recognize ‘SYSTEM TABLE’, ‘JOIN’, ‘INDEX’ as table type
and make <code class="highlighter-rouge">ProjectRelBase.copy(RelTraitSet, RelNode)</code> final.
(<strong>This is a breaking change</strong> for sub-classes of <code class="highlighter-rouge">ProjectRelBase</code>.)</li>
<li>Change <code class="highlighter-rouge">RexBuilder.makeRangeReference</code> parameter type.</li>
- <li><code class="highlighter-rouge">RexBuilder.makeInputRef</code> replaces <code class="highlighter-rouge">RelOptUtil.createInputRef</code>.</li>
+ <li>
+<code class="highlighter-rouge">RexBuilder.makeInputRef</code> replaces <code class="highlighter-rouge">RelOptUtil.createInputRef</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-160">CALCITE-160</a>]
Allow comments in schema definitions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-147">CALCITE-147</a>]
@@ -7647,8 +8155,10 @@ ORDER BY expression doesn’t work with SELECT *</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-143">CALCITE-143</a>]
Remove dependency on eigenbase-resgen</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-173">CALCITE-173</a>]
-Case-insensitive table names are not supported for <code class="highlighter-rouge">Casing.UNCHANGED</code></li>
- <li><code class="highlighter-rouge">DATE.getLimit</code> now returns <code class="highlighter-rouge">Calendar</code> in GMT time zone (Vladimir Sitnikov)</li>
+Case-insensitive table names are not supported for <code class="highlighter-rouge">Casing.UNCHANGED</code>
+</li>
+ <li>
+<code class="highlighter-rouge">DATE.getLimit</code> now returns <code class="highlighter-rouge">Calendar</code> in GMT time zone (Vladimir Sitnikov)</li>
<li>Set <code class="highlighter-rouge">en_US</code> locale in tests that match against error numbers, dates
(Vladimir Sitnikov)</li>
<li>Use 1 test thread per CPU to avoid thread starvation on dual core CPUs
@@ -7696,7 +8206,8 @@ maven-central, we can make optiq-spark part of the regular build, and remove
the spark profile.)</li>
</ul>
-<h2 id="v0-4-18"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.18">0.4.18</a> / 2014-02-14</h2>
+<h2 id="v0-4-18">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.18">0.4.18</a> / 2014-02-14</h2>
<h4 id="api-0-4-18">API and functionality changes</h4>
@@ -7752,7 +8263,8 @@ User-defined scalar functions</li>
sort, aggregation, join if their inputs are known to be empty, and
propagate the fact that the relational expressions are known to be
empty up the tree. (We already do this for union, filter, project.)</li>
- <li><code class="highlighter-rouge">RexNode</code> and its sub-classes are now immutable.</li>
+ <li>
+<code class="highlighter-rouge">RexNode</code> and its sub-classes are now immutable.</li>
</ul>
<h4 id="fixes-0-4-18">Bug-fixes and internal changes</h4>
@@ -7805,7 +8317,8 @@ Java boolean column should be treated as SQL boolean</li>
strings.</li>
</ul>
-<h2 id="v0-4-17"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.17">0.4.17</a> / 2014-01-13</h2>
+<h2 id="v0-4-17">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.17">0.4.17</a> / 2014-01-13</h2>
<h4 id="fixes-0-4-17">API changes</h4>
@@ -7886,7 +8399,8 @@ eigenbase-resgen-1.3.6.</li>
Correlated EXISTS</li>
<li>Fix a bug in <code class="highlighter-rouge">VolcanoCost</code>.</li>
<li>Add class <code class="highlighter-rouge">FoodMartQuerySet</code>, that contains the 6,700 foodmart queries.</li>
- <li>Fix factory class names in <code class="highlighter-rouge">UnregisteredDriver</code></li>
+ <li>Fix factory class names in <code class="highlighter-rouge">UnregisteredDriver</code>
+</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-96">CALCITE-96</a>]
LIMIT against a table in a clone schema causes UnsupportedOperationException</li>
<li>Disable spark module by default.</li>
@@ -7895,7 +8409,8 @@ password; not just dataSource.</li>
<li>Wrap internal error in <code class="highlighter-rouge">SQLException</code>.</li>
</ul>
-<h2 id="v0-4-16"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.16">0.4.16</a> / 2013-11-24</h2>
+<h2 id="v0-4-16">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.16">0.4.16</a> / 2013-11-24</h2>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-69">CALCITE-69</a>]
@@ -7953,7 +8468,8 @@ tracing.</li>
<li>Upgrade to linq4j-0.1.11.</li>
</ul>
-<h2 id="v0-4-15"><a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.15">0.4.15</a> / 2013-10-14</h2>
+<h2 id="v0-4-15">
+<a href="https://github.com/apache/calcite/releases/tag/optiq-parent-0.4.15">0.4.15</a> / 2013-10-14</h2>
<ul>
<li>Lots of good stuff that this margin is too small to contain. See
@@ -7979,7 +8495,8 @@ calcite-example-csv module.</p>
<li>Add NOTICE and LICENSE files in generated JAR file</li>
</ul>
-<h2 id="csv-v0-3"><a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.3">0.3</a> / 2014-03-21</h2>
+<h2 id="csv-v0-3">
+<a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.3">0.3</a> / 2014-03-21</h2>
<ul>
<li>Upgrade to optiq-0.5</li>
@@ -7987,14 +8504,16 @@ calcite-example-csv module.</p>
[<a href="https://github.com/jline/jline2/issues/62">JLINE2-62</a>]
to <code class="highlighter-rouge">sqlline.bat</code> (windows) and <code class="highlighter-rouge">sqlline</code> (windows using cygwin)</li>
<li>Fix classpath construction: <code class="highlighter-rouge">sqlline.bat</code> copies dependencies to
-<code class="highlighter-rouge">target/dependencies</code>; <code class="highlighter-rouge">sqlline</code> constructs <code class="highlighter-rouge">target/classpath.txt</code></li>
+<code class="highlighter-rouge">target/dependencies</code>; <code class="highlighter-rouge">sqlline</code> constructs <code class="highlighter-rouge">target/classpath.txt</code>
+</li>
<li>Build, checkstyle and tests now succeed on windows (both native and cygwin)</li>
<li>Models can now contain comments</li>
<li>[<a href="https://github.com/julianhyde/optiq-csv/issues/2">OPTIQ-CSV-2</a>]
Update tutorial to reflect changes to Optiq’s JDBC adapter</li>
</ul>
-<h2 id="csv-v0-2"><a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.2">0.2</a> / 2014-02-18</h2>
+<h2 id="csv-v0-2">
+<a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.2">0.2</a> / 2014-02-18</h2>
<ul>
<li>Add test case for
@@ -8006,7 +8525,8 @@ Update tutorial to reflect changes to Optiq’s JDBC adapter</li>
<li>Enable maven-checkstyle-plugin; fix checkstyle exceptions</li>
</ul>
-<h2 id="csv-v0-1"><a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.1">0.1</a> / 2014-01-13</h2>
+<h2 id="csv-v0-1">
+<a href="https://github.com/julianhyde/optiq-csv/releases/tag/optiq-csv-0.1">0.1</a> / 2014-01-13</h2>
<ul>
<li>Add release notes and history</li>
@@ -8036,7 +8556,8 @@ calcite-0.9.2 onwards, the code was included as calcite-linq4j, and
features added to linq4j in a particular calcite release are described
with the other changes in that release.</p>
-<h2 id="linq4j-v0-4"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.4">0.4</a> / 2014-05-28</h2>
+<h2 id="linq4j-v0-4">
+<a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.4">0.4</a> / 2014-05-28</h2>
<ul>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/27">#27</a>,
@@ -8046,7 +8567,8 @@ with the other changes in that release.</p>
<code class="highlighter-rouge">contains</code> with <code class="highlighter-rouge">EqualityComparer</code>, <code class="highlighter-rouge">first</code>, <code class="highlighter-rouge">first</code> with predicate.</li>
</ul>
-<h2 id="linq4j-v0-3"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.3">0.3</a> / 2014-04-21</h2>
+<h2 id="linq4j-v0-3">
+<a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.3">0.3</a> / 2014-04-21</h2>
<ul>
<li>Move optimizer visitor from optiq to linq4j; add
@@ -8066,7 +8588,8 @@ etc.),
<li>Clean build on cygwin/Windows.</li>
</ul>
-<h2 id="linq4j-v0-2"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.2">0.2</a> / 2014-04-11</h2>
+<h2 id="linq4j-v0-2">
+<a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.2">0.2</a> / 2014-04-11</h2>
<ul>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/8">#8</a>,
@@ -8083,13 +8606,15 @@ complex expressions are cached into a field of the expression.</li>
<li>Support <code class="highlighter-rouge">Statement.toString</code> via <code class="highlighter-rouge">ExpressionWriter</code>.</li>
<li>Use <code class="highlighter-rouge">AtomicInteger</code> for naming of <code class="highlighter-rouge">ParameterExpression</code>s to avoid
conflicts in multithreaded usage</li>
- <li>Cleanup: use <code class="highlighter-rouge">Functions.adapt</code> rather than <code class="highlighter-rouge">new AbstractList</code></li>
+ <li>Cleanup: use <code class="highlighter-rouge">Functions.adapt</code> rather than <code class="highlighter-rouge">new AbstractList</code>
+</li>
<li>Add <code class="highlighter-rouge">NOTICE</code> and <code class="highlighter-rouge">LICENSE</code> files in generated JAR file.</li>
<li>Optimize <code class="highlighter-rouge">select()</code> if selector is identity.</li>
<li>Enable checkstyle.</li>
</ul>
-<h2 id="linq4j-v0-1-13"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.13">0.1.13</a> / 2014-01-20</h2>
+<h2 id="linq4j-v0-1-13">
+<a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.13">0.1.13</a> / 2014-01-20</h2>
<ul>
<li>Remove spurious “null” generated when converting expression to string.</li>
@@ -8098,7 +8623,8 @@ conflicts in multithreaded usage</li>
<li>Enable <code class="highlighter-rouge">oraclejdk8</code> in <a href="https://travis-ci.org/julianhyde/linq4j">Travis CI</a>.</li>
</ul>
-<h2 id="linq4j-v0-1-12"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.12">0.1.12</a> / 2013-12-07</h2>
+<h2 id="linq4j-v0-1-12">
+<a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.12">0.1.12</a> / 2013-12-07</h2>
<ul>
<li>Add release notes.</li>
@@ -8107,7 +8633,8 @@ conflicts in multithreaded usage</li>
<code class="highlighter-rouge">Queryable</code>).</li>
</ul>
-<h2 id="linq4j-v0-1-11"><a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.11">0.1.11</a> / 2013-11-06</h2>
+<h2 id="linq4j-v0-1-11">
+<a href="https://github.com/julianhyde/linq4j/releases/tag/linq4j-0.1.11">0.1.11</a> / 2013-11-06</h2>
<ul>
<li>Initial commit</li>
@@ -8430,11 +8957,11 @@ conflicts in multithreaded usage</li>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/howto.html b/docs/howto.html
index 813c6b3..6342c0b 100644
--- a/docs/howto.html
+++ b/docs/howto.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>HOWTO</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -85,7 +86,8 @@ adapters.</p>
<li><a href="#building-from-git" id="markdown-toc-building-from-git">Building from Git</a></li>
<li><a href="#gradle-vs-gradle-wrapper" id="markdown-toc-gradle-vs-gradle-wrapper">Gradle vs Gradle wrapper</a></li>
<li><a href="#running-tests" id="markdown-toc-running-tests">Running tests</a></li>
- <li><a href="#running-integration-tests" id="markdown-toc-running-integration-tests">Running integration tests</a> <ul>
+ <li>
+<a href="#running-integration-tests" id="markdown-toc-running-integration-tests">Running integration tests</a> <ul>
<li><a href="#vm-preparation" id="markdown-toc-vm-preparation">VM preparation</a></li>
<li><a href="#vm-management" id="markdown-toc-vm-management">VM management</a></li>
<li><a href="#suggested-test-flow" id="markdown-toc-suggested-test-flow">Suggested test flow</a></li>
@@ -94,7 +96,8 @@ adapters.</p>
</li>
<li><a href="#contributing" id="markdown-toc-contributing">Contributing</a></li>
<li><a href="#getting-started" id="markdown-toc-getting-started">Getting started</a></li>
- <li><a href="#setting-up-an-ide-for-contributing" id="markdown-toc-setting-up-an-ide-for-contributing">Setting up an IDE for contributing</a> <ul>
+ <li>
+<a href="#setting-up-an-ide-for-contributing" id="markdown-toc-setting-up-an-ide-for-contributing">Setting up an IDE for contributing</a> <ul>
<li><a href="#setting-up-intellij-idea" id="markdown-toc-setting-up-intellij-idea">Setting up IntelliJ IDEA</a></li>
<li><a href="#setting-up-netbeans" id="markdown-toc-setting-up-netbeans">Setting up NetBeans</a></li>
</ul>
@@ -104,23 +107,27 @@ adapters.</p>
<li><a href="#csv-adapter" id="markdown-toc-csv-adapter">CSV adapter</a></li>
<li><a href="#mongodb-adapter" id="markdown-toc-mongodb-adapter">MongoDB adapter</a></li>
<li><a href="#splunk-adapter" id="markdown-toc-splunk-adapter">Splunk adapter</a></li>
- <li><a href="#implementing-an-adapter" id="markdown-toc-implementing-an-adapter">Implementing an adapter</a> <ul>
+ <li>
+<a href="#implementing-an-adapter" id="markdown-toc-implementing-an-adapter">Implementing an adapter</a> <ul>
<li><a href="#testing-adapter-in-java" id="markdown-toc-testing-adapter-in-java">Testing adapter in Java</a></li>
</ul>
</li>
- <li><a href="#advanced-topics-for-developers" id="markdown-toc-advanced-topics-for-developers">Advanced topics for developers</a> <ul>
+ <li>
+<a href="#advanced-topics-for-developers" id="markdown-toc-advanced-topics-for-developers">Advanced topics for developers</a> <ul>
<li><a href="#javatypefactory" id="markdown-toc-javatypefactory">JavaTypeFactory</a></li>
<li><a href="#rebuilding-generated-protocol-buffer-code" id="markdown-toc-rebuilding-generated-protocol-buffer-code">Rebuilding generated Protocol Buffer code</a></li>
<li><a href="#create-a-planner-rule" id="markdown-toc-create-a-planner-rule">Create a planner rule</a></li>
</ul>
</li>
- <li><a href="#advanced-topics-for-committers" id="markdown-toc-advanced-topics-for-committers">Advanced topics for committers</a> <ul>
+ <li>
+<a href="#advanced-topics-for-committers" id="markdown-toc-advanced-topics-for-committers">Advanced topics for committers</a> <ul>
<li><a href="#managing-calcite-repositories-through-github" id="markdown-toc-managing-calcite-repositories-through-github">Managing Calcite repositories through GitHub</a></li>
<li><a href="#merging-pull-requests" id="markdown-toc-merging-pull-requests">Merging pull requests</a></li>
<li><a href="#set-up-pgp-signing-keys" id="markdown-toc-set-up-pgp-signing-keys">Set up PGP signing keys</a></li>
<li><a href="#set-up-nexus-repository-credentials" id="markdown-toc-set-up-nexus-repository-credentials">Set up Nexus repository credentials</a></li>
<li><a href="#making-a-snapshot" id="markdown-toc-making-a-snapshot">Making a snapshot</a></li>
- <li><a href="#making-a-release-candidate" id="markdown-toc-making-a-release-candidate">Making a release candidate</a> <ul>
+ <li>
+<a href="#making-a-release-candidate" id="markdown-toc-making-a-release-candidate">Making a release candidate</a> <ul>
<li><a href="#starting-the-release-candidate-build" id="markdown-toc-starting-the-release-candidate-build">Starting the release candidate build</a></li>
<li><a href="#troubleshooting" id="markdown-toc-troubleshooting">Troubleshooting</a></li>
<li><a href="#checking-the-artifacts" id="markdown-toc-checking-the-artifacts">Checking the artifacts</a></li>
@@ -210,22 +217,27 @@ be impedance mismatch between different versions.</p>
environment, as follows.</p>
<ul>
- <li><code class="highlighter-rouge">-Dcalcite.test.db=DB</code> (where db is <code class="highlighter-rouge">h2</code>, <code class="highlighter-rouge">hsqldb</code>, <code class="highlighter-rouge">mysql</code>, or <code class="highlighter-rouge">postgresql</code>) allows you
+ <li>
+<code class="highlighter-rouge">-Dcalcite.test.db=DB</code> (where db is <code class="highlighter-rouge">h2</code>, <code class="highlighter-rouge">hsqldb</code>, <code class="highlighter-rouge">mysql</code>, or <code class="highlighter-rouge">postgresql</code>) allows you
to change the JDBC data source for the test suite. Calcite’s test
suite requires a JDBC data source populated with the foodmart data
set.
<ul>
- <li><code class="highlighter-rouge">hsqldb</code>, the default, uses an in-memory hsqldb database.</li>
+ <li>
+<code class="highlighter-rouge">hsqldb</code>, the default, uses an in-memory hsqldb database.</li>
<li>All others access a test virtual machine
(see <a href="#running-integration-tests">integration tests</a> below).
<code class="highlighter-rouge">mysql</code> and <code class="highlighter-rouge">postgresql</code> might be somewhat faster than hsqldb, but you need
to populate it (i.e. provision a VM).</li>
</ul>
</li>
- <li><code class="highlighter-rouge">-Dcalcite.debug</code> prints extra debugging information to stdout.</li>
- <li><code class="highlighter-rouge">-Dcalcite.test.splunk</code> enables tests that run against Splunk.
+ <li>
+<code class="highlighter-rouge">-Dcalcite.debug</code> prints extra debugging information to stdout.</li>
+ <li>
+<code class="highlighter-rouge">-Dcalcite.test.splunk</code> enables tests that run against Splunk.
Splunk must be installed and running.</li>
- <li><code class="highlighter-rouge">./gradlew testSlow</code> runs tests that take longer to execute. For
+ <li>
+<code class="highlighter-rouge">./gradlew testSlow</code> runs tests that take longer to execute. For
example, there are tests that create virtual TPC-H and TPC-DS schemas
in-memory and run tests from those benchmarks.</li>
</ul>
@@ -237,11 +249,20 @@ By default, the build script passes the following <code class="highlighter-rouge
<ul>
<li><code class="highlighter-rouge">java.awt.headless</code></li>
- <li><code class="highlighter-rouge">junit.jupiter.execution.parallel.enabled</code>, default: <code class="highlighter-rouge">true</code></li>
- <li><code class="highlighter-rouge">junit.jupiter.execution.timeout.default</code>, default: <code class="highlighter-rouge">5 m</code></li>
- <li><code class="highlighter-rouge">user.language</code>, default: <code class="highlighter-rouge">TR</code></li>
- <li><code class="highlighter-rouge">user.country</code>, default: <code class="highlighter-rouge">tr</code></li>
- <li><code class="highlighter-rouge">calcite.**</code> (to enable <code class="highlighter-rouge">calcite.test.db</code> and others above)</li>
+ <li>
+<code class="highlighter-rouge">junit.jupiter.execution.parallel.enabled</code>, default: <code class="highlighter-rouge">true</code>
+</li>
+ <li>
+<code class="highlighter-rouge">junit.jupiter.execution.timeout.default</code>, default: <code class="highlighter-rouge">5 m</code>
+</li>
+ <li>
+<code class="highlighter-rouge">user.language</code>, default: <code class="highlighter-rouge">TR</code>
+</li>
+ <li>
+<code class="highlighter-rouge">user.country</code>, default: <code class="highlighter-rouge">tr</code>
+</li>
+ <li>
+<code class="highlighter-rouge">calcite.**</code> (to enable <code class="highlighter-rouge">calcite.test.db</code> and others above)</li>
</ul>
<h2 id="running-integration-tests">Running integration tests</h2>
@@ -286,9 +307,12 @@ The connection strings for different databases are listed in <a href="https://gi
<ul>
<li>Executing regular unit tests (does not require external data): no change. <code class="highlighter-rouge">./gradlew test</code> or <code class="highlighter-rouge">./gradlew build</code>.</li>
<li>Executing all tests, for all the DBs: <code class="highlighter-rouge">./gradlew test integTestAll</code>.</li>
- <li>Executing just tests for external DBs, excluding unit tests: <code class="highlighter-rouge">./gradlew integTestAll</code></li>
- <li>Executing PostgreSQL JDBC tests: <code class="highlighter-rouge">./gradlew integTestPostgresql</code></li>
- <li>Executing just MongoDB tests: <code class="highlighter-rouge">./gradlew :mongo:build</code></li>
+ <li>Executing just tests for external DBs, excluding unit tests: <code class="highlighter-rouge">./gradlew integTestAll</code>
+</li>
+ <li>Executing PostgreSQL JDBC tests: <code class="highlighter-rouge">./gradlew integTestPostgresql</code>
+</li>
+ <li>Executing just MongoDB tests: <code class="highlighter-rouge">./gradlew :mongo:build</code>
+</li>
</ul>
<p>From within IDE:</p>
@@ -296,8 +320,10 @@ The connection strings for different databases are listed in <a href="https://gi
<ul>
<li>Executing regular unit tests: no change.</li>
<li>Executing MongoDB tests: run <code class="highlighter-rouge">MongoAdapterTest.java</code> with <code class="highlighter-rouge">calcite.integrationTest=true</code> system property</li>
- <li>Executing MySQL tests: run <code class="highlighter-rouge">JdbcTest</code> and <code class="highlighter-rouge">JdbcAdapterTest</code> with setting <code class="highlighter-rouge">-Dcalcite.test.db=mysql</code></li>
- <li>Executing PostgreSQL tests: run <code class="highlighter-rouge">JdbcTest</code> and <code class="highlighter-rouge">JdbcAdapterTest</code> with setting <code class="highlighter-rouge">-Dcalcite.test.db=postgresql</code></li>
+ <li>Executing MySQL tests: run <code class="highlighter-rouge">JdbcTest</code> and <code class="highlighter-rouge">JdbcAdapterTest</code> with setting <code class="highlighter-rouge">-Dcalcite.test.db=mysql</code>
+</li>
+ <li>Executing PostgreSQL tests: run <code class="highlighter-rouge">JdbcTest</code> and <code class="highlighter-rouge">JdbcAdapterTest</code> with setting <code class="highlighter-rouge">-Dcalcite.test.db=postgresql</code>
+</li>
</ul>
<h3 id="integration-tests-technical-details">Integration tests technical details</h3>
@@ -391,7 +417,8 @@ code. The generated classes can be debugged interactively
<ul>
<li><code class="highlighter-rouge">-Dorg.codehaus.janino.source_debugging.enable=true</code></li>
- <li><code class="highlighter-rouge">-Dorg.codehaus.janino.source_debugging.dir=C:\tmp</code> (This property is optional;
+ <li>
+<code class="highlighter-rouge">-Dorg.codehaus.janino.source_debugging.dir=C:\tmp</code> (This property is optional;
if not set, Janino will create temporary files in the system’s default location
for temporary files, such as <code class="highlighter-rouge">/tmp</code> on Unix-based systems.)</li>
</ul>
@@ -802,7 +829,8 @@ if new critical vulnerabilities are found among dependencies.</li>
<li>Decide the supported configurations of JDK, operating system and
Guava. These will probably be the same as those described in the
release notes of the previous release. Document them in the release
-notes. To test Guava version <em>x.y</em>, specify <code class="highlighter-rouge">-Pguava.version=x.y</code></li>
+notes. To test Guava version <em>x.y</em>, specify <code class="highlighter-rouge">-Pguava.version=x.y</code>
+</li>
<li>Optional tests using properties:
<ul>
<li><code class="highlighter-rouge">-Dcalcite.test.db=mysql</code></li>
@@ -879,9 +907,11 @@ git clean <span class="nt">-xn</span>
<h4 id="troubleshooting">Troubleshooting</h4>
<ul>
- <li><code class="highlighter-rouge">net.rubygrapefruit.platform.NativeException: Could not start 'svnmucc'</code>: Make sure you have <code class="highlighter-rouge">svnmucc</code> command
+ <li>
+<code class="highlighter-rouge">net.rubygrapefruit.platform.NativeException: Could not start 'svnmucc'</code>: Make sure you have <code class="highlighter-rouge">svnmucc</code> command
installed in your machine.</li>
- <li><code class="highlighter-rouge">Execution failed for task ':closeRepository' ... Possible staging rules violation. Check repository status using Nexus UI</code>:
+ <li>
+<code class="highlighter-rouge">Execution failed for task ':closeRepository' ... Possible staging rules violation. Check repository status using Nexus UI</code>:
Log into <a href="https://repository.apache.org/#stagingRepositories">Nexus UI</a> to see the actual error. In case of
<code class="highlighter-rouge">Failed: Signature Validation. No public key: Key with id: ... was not able to be located</code>, make sure you have uploaded
your key to the keyservers used by Nexus, see above.</li>
@@ -911,22 +941,27 @@ no binary distro), check that all files belong to a directory called
</li>
<li>Make sure that the following files do not occur in the source
distros: <code class="highlighter-rouge">KEYS</code>, <code class="highlighter-rouge">gradlew</code>, <code class="highlighter-rouge">gradlew.bat</code>, <code class="highlighter-rouge">gradle-wrapper.jar</code>,
-<code class="highlighter-rouge">gradle-wrapper.properties</code></li>
+<code class="highlighter-rouge">gradle-wrapper.properties</code>
+</li>
<li>Make sure that there is no <code class="highlighter-rouge">KEYS</code> file in the source distros</li>
<li>In each .jar (for example
<code class="highlighter-rouge">core/build/libs/calcite-core-X.Y.Z.jar</code> and
<code class="highlighter-rouge">mongodb/build/libs/calcite-mongodb-X.Y.Z-sources.jar</code>), check
that the <code class="highlighter-rouge">META-INF</code> directory contains <code class="highlighter-rouge">LICENSE</code>,
-<code class="highlighter-rouge">NOTICE</code></li>
- <li>Check PGP, per <a href="https://httpd.apache.org/dev/verification.html">this</a></li>
+<code class="highlighter-rouge">NOTICE</code>
+</li>
+ <li>Check PGP, per <a href="https://httpd.apache.org/dev/verification.html">this</a>
+</li>
</ul>
<p>Verify the staged artifacts in the Nexus repository:</p>
<ul>
<li>Go to <a href="https://repository.apache.org/">https://repository.apache.org/</a> and login</li>
- <li>Under <code class="highlighter-rouge">Build Promotion</code>, click <code class="highlighter-rouge">Staging Repositories</code></li>
- <li>In the <code class="highlighter-rouge">Staging Repositories</code> tab there should be a line with profile <code class="highlighter-rouge">org.apache.calcite</code></li>
+ <li>Under <code class="highlighter-rouge">Build Promotion</code>, click <code class="highlighter-rouge">Staging Repositories</code>
+</li>
+ <li>In the <code class="highlighter-rouge">Staging Repositories</code> tab there should be a line with profile <code class="highlighter-rouge">org.apache.calcite</code>
+</li>
<li>Navigate through the artifact tree and make sure the .jar, .pom, .asc files are present</li>
<li>Check the box on in the first column of the row,
and press the ‘Close’ button to publish the repository at
@@ -1390,11 +1425,11 @@ that <code class="highlighter-rouge">master</code> code freeze is over and commi
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/index.html b/docs/index.html
index 289b262..12439da 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Background</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -188,9 +189,12 @@ COUNT(DISTINCT …) and FILTER), HAVING, ORDER BY (including NULLS
FIRST/LAST), set operations (UNION, INTERSECT, MINUS), sub-queries
(including correlated sub-queries), windowed aggregates, LIMIT
(syntax as <a href="https://www.postgresql.org/docs/8.4/static/sql-select.html#SQL-LIMIT">Postgres</a>);
-more details in the <a href="reference.html">SQL reference</a></li>
- <li>Local and remote JDBC drivers; see <a href="avatica_overview.html">Avatica</a></li>
- <li>Several <a href="adapter.html">adapters</a></li>
+more details in the <a href="reference.html">SQL reference</a>
+</li>
+ <li>Local and remote JDBC drivers; see <a href="avatica_overview.html">Avatica</a>
+</li>
+ <li>Several <a href="adapter.html">adapters</a>
+</li>
</ul>
@@ -463,11 +467,11 @@ more details in the <a href="reference.html">SQL reference</a></li>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/innodb_adapter.html b/docs/innodb_adapter.html
index 640a492..7f2c61a 100644
--- a/docs/innodb_adapter.html
+++ b/docs/innodb_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>InnoDB adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -733,11 +734,11 @@ leveraging cost based optimization.
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/kafka_adapter.html b/docs/kafka_adapter.html
index 013d98c..fb8821c 100644
--- a/docs/kafka_adapter.html
+++ b/docs/kafka_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Kafka adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -461,11 +462,11 @@ sqlline> <span class="o">!</span>connect jdbc:calcite:model<span class="o">=<
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/lattice.html b/docs/lattice.html
index c5ed713..c9783c9 100644
--- a/docs/lattice.html
+++ b/docs/lattice.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Lattices</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -696,11 +697,11 @@ data is changed.</li>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/materialized_views.html b/docs/materialized_views.html
index bda244b..8743c34 100644
--- a/docs/materialized_views.html
+++ b/docs/materialized_views.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Materialized Views</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -81,11 +82,15 @@
<ul id="markdown-toc">
<li><a href="#materialized-views-maintained-by-calcite" id="markdown-toc-materialized-views-maintained-by-calcite">Materialized views maintained by Calcite</a></li>
- <li><a href="#expose-materialized-views-to-calcite" id="markdown-toc-expose-materialized-views-to-calcite">Expose materialized views to Calcite</a> <ul>
- <li><a href="#view-based-query-rewriting" id="markdown-toc-view-based-query-rewriting">View-based query rewriting</a> <ul>
+ <li>
+<a href="#expose-materialized-views-to-calcite" id="markdown-toc-expose-materialized-views-to-calcite">Expose materialized views to Calcite</a> <ul>
+ <li>
+<a href="#view-based-query-rewriting" id="markdown-toc-view-based-query-rewriting">View-based query rewriting</a> <ul>
<li><a href="#substitution-via-rules-transformation" id="markdown-toc-substitution-via-rules-transformation">Substitution via rules transformation</a></li>
- <li><a href="#rewriting-using-plan-structural-information" id="markdown-toc-rewriting-using-plan-structural-information">Rewriting using plan structural information</a> <ul>
- <li><a href="#rewriting-coverage" id="markdown-toc-rewriting-coverage">Rewriting coverage</a> <ul>
+ <li>
+<a href="#rewriting-using-plan-structural-information" id="markdown-toc-rewriting-using-plan-structural-information">Rewriting using plan structural information</a> <ul>
+ <li>
+<a href="#rewriting-coverage" id="markdown-toc-rewriting-coverage">Rewriting coverage</a> <ul>
<li><a href="#join-rewriting" id="markdown-toc-join-rewriting">Join rewriting</a></li>
<li><a href="#aggregate-rewriting" id="markdown-toc-aggregate-rewriting">Aggregate rewriting</a></li>
<li><a href="#aggregate-rewriting-with-aggregation-rollup" id="markdown-toc-aggregate-rewriting-with-aggregation-rollup">Aggregate rewriting (with aggregation rollup)</a></li>
@@ -133,9 +138,12 @@ Currently, Calcite has two implementations of view-based query rewriting.</p>
<p>The following example is taken from the documentation of <code class="highlighter-rouge">SubstitutionVisitor</code>:</p>
<ul>
- <li>Query: <code class="highlighter-rouge">SELECT a, c FROM t WHERE x = 5 AND b = 4</code></li>
- <li>Target (materialized view definition): <code class="highlighter-rouge">SELECT a, b, c FROM t WHERE x = 5</code></li>
- <li>Result: <code class="highlighter-rouge">SELECT a, c FROM mv WHERE b = 4</code></li>
+ <li>Query: <code class="highlighter-rouge">SELECT a, c FROM t WHERE x = 5 AND b = 4</code>
+</li>
+ <li>Target (materialized view definition): <code class="highlighter-rouge">SELECT a, b, c FROM t WHERE x = 5</code>
+</li>
+ <li>Result: <code class="highlighter-rouge">SELECT a, c FROM mv WHERE b = 4</code>
+</li>
</ul>
<p>Note that <code class="highlighter-rouge">result</code> uses the materialized view table <code class="highlighter-rouge">mv</code> and a simplified condition <code class="highlighter-rouge">b = 4</code>.</p>
@@ -157,26 +165,26 @@ Additionally, the rule can rewrite expressions rooted at an Aggregate operator,
<p>Let us illustrate with some examples the coverage of the view rewriting algorithm implemented in <code class="highlighter-rouge">MaterializedViewRule</code>. The examples are based on the following database schema.</p>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CREATE TABLE depts(
- deptno INT NOT NULL,
- deptname VARCHAR(20),
- PRIMARY KEY (deptno)
-);
-CREATE TABLE locations(
- locationid INT NOT NULL,
- state CHAR(2),
- PRIMARY KEY (locationid)
-);
-CREATE TABLE emps(
- empid INT NOT NULL,
- deptno INT NOT NULL,
- locationid INT NOT NULL,
- empname VARCHAR(20) NOT NULL,
- salary DECIMAL (18, 2),
- PRIMARY KEY (empid),
- FOREIGN KEY (deptno) REFERENCES depts(deptno),
- FOREIGN KEY (locationid) REFERENCES locations(locationid)
-);
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">depts</span><span class="p">(</span>
+ <span class="n">deptno</span> <span class="n">INT</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
+ <span class="n">deptname</span> <span class="n">VARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">),</span>
+ <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">deptno</span><span class="p">)</span>
+<span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">locations</span><span class="p">(</span>
+ <span class="n">locationid</span> <span class="n">INT</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
+ <span class="k">state</span> <span class="n">CHAR</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span>
+ <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">locationid</span><span class="p">)</span>
+<span class="p">);</span>
+<span class="k">CREATE</span> <span class="k">TABLE</span> <span class="n">emps</span><span class="p">(</span>
+ <span class="n">empid</span> <span class="n">INT</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
+ <span class="n">deptno</span> <span class="n">INT</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
+ <span class="n">locationid</span> <span class="n">INT</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
+ <span class="n">empname</span> <span class="n">VARCHAR</span><span class="p">(</span><span class="mi">20</span><span class="p">)</span> <span class="k">NOT</span> <span class="k">NULL</span><span class="p">,</span>
+ <span class="n">salary</span> <span class="n">DECIMAL</span> <span class="p">(</span><span class="mi">18</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
+ <span class="k">PRIMARY</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">empid</span><span class="p">),</span>
+ <span class="k">FOREIGN</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">deptno</span><span class="p">)</span> <span class="k">REFERENCES</span> <span class="n">depts</span><span class="p">(</span><span class="n">deptno</span><span class="p">),</span>
+ <span class="k">FOREIGN</span> <span class="k">KEY</span> <span class="p">(</span><span class="n">locationid</span><span class="p">)</span> <span class="k">REFERENCES</span> <span class="n">locations</span><span class="p">(</span><span class="n">locationid</span><span class="p">)</span>
+<span class="p">);</span>
</code></pre></div></div>
<h6 id="join-rewriting">Join rewriting</h6>
@@ -187,31 +195,31 @@ CREATE TABLE emps(
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid
-FROM depts
-JOIN (
- SELECT empid, deptno
- FROM emps
- WHERE empid = 1) AS subq
-ON depts.deptno = subq.deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span>
+<span class="k">FROM</span> <span class="n">depts</span>
+<span class="k">JOIN</span> <span class="p">(</span>
+ <span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span>
+ <span class="k">FROM</span> <span class="n">emps</span>
+ <span class="k">WHERE</span> <span class="n">empid</span> <span class="o">=</span> <span class="mi">1</span><span class="p">)</span> <span class="k">AS</span> <span class="n">subq</span>
+<span class="k">ON</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">subq</span><span class="p">.</span><span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid
-FROM emps
-JOIN depts USING (deptno)
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">USING</span> <span class="p">(</span><span class="n">deptno</span><span class="p">)</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid
-FROM mv
-WHERE empid = 1
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span>
+<span class="k">FROM</span> <span class="n">mv</span>
+<span class="k">WHERE</span> <span class="n">empid</span> <span class="o">=</span> <span class="mi">1</span>
</code></pre></div></div>
<h6 id="aggregate-rewriting">Aggregate rewriting</h6>
@@ -220,30 +228,30 @@ WHERE empid = 1
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptno
-FROM emps
-WHERE deptno > 10
-GROUP BY deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptno</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">WHERE</span> <span class="n">deptno</span> <span class="o">></span> <span class="mi">10</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptno
-FROM emps
-WHERE deptno > 5
-GROUP BY empid, deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">WHERE</span> <span class="n">deptno</span> <span class="o">></span> <span class="mi">5</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptno
-FROM mv
-WHERE deptno > 10
-GROUP BY deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptno</span>
+<span class="k">FROM</span> <span class="n">mv</span>
+<span class="k">WHERE</span> <span class="n">deptno</span> <span class="o">></span> <span class="mi">10</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptno</span>
</code></pre></div></div>
<h6 id="aggregate-rewriting-with-aggregation-rollup">Aggregate rewriting (with aggregation rollup)</h6>
@@ -252,27 +260,27 @@ GROUP BY deptno
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptno, COUNT(*) AS c, SUM(salary) AS s
-FROM emps
-GROUP BY deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">AS</span> <span class="k">c</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><span class="p">)</span> <span class="k">AS</span> <span [...]
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptno, COUNT(*) AS c, SUM(salary) AS s
-FROM emps
-GROUP BY empid, deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">AS</span> <span class="k">c</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><spa [...]
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptno, SUM(c), SUM(s)
-FROM mv
-GROUP BY deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="k">c</span><span class="p">),</span> <span class="k">SUM</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
+<span class="k">FROM</span> <span class="n">mv</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptno</span>
</code></pre></div></div>
<h6 id="query-partial-rewriting">Query partial rewriting</h6>
@@ -283,28 +291,28 @@ GROUP BY deptno
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptno, COUNT(*)
-FROM emps
-GROUP BY deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, depts.deptno, COUNT(*) AS c, SUM(salary) AS s
-FROM emps
-JOIN depts USING (deptno)
-GROUP BY empid, depts.deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span><span class="p">,</span> <span class="k">COUNT</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">AS</span> <span class="k">c</span><span class="p">,</span> <span class="k">SUM</span><span [...]
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">USING</span> <span class="p">(</span><span class="n">deptno</span><span class="p">)</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptno, SUM(c)
-FROM mv
-GROUP BY deptno
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="k">c</span><span class="p">)</span>
+<span class="k">FROM</span> <span class="n">mv</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptno</span>
</code></pre></div></div>
<h6 id="view-partial-rewriting">View partial rewriting</h6>
@@ -313,31 +321,31 @@ GROUP BY deptno
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptname, state, SUM(salary) AS s
-FROM emps
-JOIN depts ON emps.deptno = depts.deptno
-JOIN locations ON emps.locationid = locations.locationid
-GROUP BY deptname, state
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">state</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><span class="p">)</span> <span class="k">AS</span> <span class="n">s</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">JOIN</span> <span class="n">locations</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">locationid</span> <span class="o">=</span> <span class="n">locations</span><span class="p">.</span><span class="n">locationid</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">state</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptno, state, SUM(salary) AS s
-FROM emps
-JOIN locations ON emps.locationid = locations.locationid
-GROUP BY empid, deptno, state
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">state</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><span class="p">)</span> <span class="k">AS</span> <span class="n">s</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">locations</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">locationid</span> <span class="o">=</span> <span class="n">locations</span><span class="p">.</span><span class="n">locationid</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptno</span><span class="p">,</span> <span class="k">state</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT deptname, state, SUM(s)
-FROM mv
-JOIN depts ON mv.deptno = depts.deptno
-GROUP BY deptname, state
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">state</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
+<span class="k">FROM</span> <span class="n">mv</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">mv</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">state</span>
</code></pre></div></div>
<h6 id="union-rewriting">Union rewriting</h6>
@@ -346,33 +354,33 @@ GROUP BY deptname, state
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptname
-FROM emps
-JOIN depts ON emps.deptno = depts.deptno
-WHERE salary > 10000
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">WHERE</span> <span class="n">salary</span> <span class="o">></span> <span class="mi">10000</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptname
-FROM emps
-JOIN depts ON emps.deptno = depts.deptno
-WHERE salary > 12000
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">WHERE</span> <span class="n">salary</span> <span class="o">></span> <span class="mi">12000</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptname
-FROM mv
-UNION ALL
-SELECT empid, deptname
-FROM emps
-JOIN depts ON emps.deptno = depts.deptno
-WHERE salary > 10000 AND salary <= 12000
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
+<span class="k">FROM</span> <span class="n">mv</span>
+<span class="k">UNION</span> <span class="k">ALL</span>
+<span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">WHERE</span> <span class="n">salary</span> <span class="o">></span> <span class="mi">10000</span> <span class="k">AND</span> <span class="n">salary</span> <span class="o"><=</span> <span class="mi">12000</span>
</code></pre></div></div>
<h6 id="union-rewriting-with-aggregate">Union rewriting with aggregate</h6>
@@ -381,39 +389,39 @@ WHERE salary > 10000 AND salary <= 12000
<li>Query:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptname, SUM(salary) AS s
-FROM emps
-JOIN depts ON emps.deptno = depts.deptno
-WHERE salary > 10000
-GROUP BY empid, deptname
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><span class="p">)</span> <span class="k">AS</span> <span class="n">s</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">WHERE</span> <span class="n">salary</span> <span class="o">></span> <span class="mi">10000</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
</code></pre></div></div>
<ul>
<li>Materialized view definition:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptname, SUM(salary) AS s
-FROM emps
-JOIN depts ON emps.deptno = depts.deptno
-WHERE salary > 12000
-GROUP BY empid, deptname
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><span class="p">)</span> <span class="k">AS</span> <span class="n">s</span>
+<span class="k">FROM</span> <span class="n">emps</span>
+<span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+<span class="k">WHERE</span> <span class="n">salary</span> <span class="o">></span> <span class="mi">12000</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
</code></pre></div></div>
<ul>
<li>Rewriting:</li>
</ul>
-<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>SELECT empid, deptname, SUM(s)
-FROM (
- SELECT empid, deptname, s
- FROM mv
- UNION ALL
- SELECT empid, deptname, SUM(salary) AS s
- FROM emps
- JOIN depts ON emps.deptno = depts.deptno
- WHERE salary > 10000 AND salary <= 12000
- GROUP BY empid, deptname) AS subq
-GROUP BY empid, deptname
+<div class="language-sql highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">s</span><span class="p">)</span>
+<span class="k">FROM</span> <span class="p">(</span>
+ <span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span><span class="p">,</span> <span class="n">s</span>
+ <span class="k">FROM</span> <span class="n">mv</span>
+ <span class="k">UNION</span> <span class="k">ALL</span>
+ <span class="k">SELECT</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span><span class="p">,</span> <span class="k">SUM</span><span class="p">(</span><span class="n">salary</span><span class="p">)</span> <span class="k">AS</span> <span class="n">s</span>
+ <span class="k">FROM</span> <span class="n">emps</span>
+ <span class="k">JOIN</span> <span class="n">depts</span> <span class="k">ON</span> <span class="n">emps</span><span class="p">.</span><span class="n">deptno</span> <span class="o">=</span> <span class="n">depts</span><span class="p">.</span><span class="n">deptno</span>
+ <span class="k">WHERE</span> <span class="n">salary</span> <span class="o">></span> <span class="mi">10000</span> <span class="k">AND</span> <span class="n">salary</span> <span class="o"><=</span> <span class="mi">12000</span>
+ <span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span><span class="p">)</span> <span class="k">AS</span> <span class="n">subq</span>
+<span class="k">GROUP</span> <span class="k">BY</span> <span class="n">empid</span><span class="p">,</span> <span class="n">deptname</span>
</code></pre></div></div>
<h5 id="limitations">Limitations</h5>
@@ -718,11 +726,11 @@ GROUP BY empid, deptname
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/model.html b/docs/model.html
index cde6b71..8f970f5 100644
--- a/docs/model.html
+++ b/docs/model.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>JSON/YAML models</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -136,9 +137,15 @@ become the default schema for connections to Calcite that use this model.</p>
<p><code class="highlighter-rouge">type</code> (optional string, default <code class="highlighter-rouge">map</code>) indicates sub-type. Values are:</p>
<ul>
- <li><code class="highlighter-rouge">map</code> for <a href="#map-schema">Map Schema</a></li>
- <li><code class="highlighter-rouge">custom</code> for <a href="#custom-schema">Custom Schema</a></li>
- <li><code class="highlighter-rouge">jdbc</code> for <a href="#jdbc-schema">JDBC Schema</a></li>
+ <li>
+<code class="highlighter-rouge">map</code> for <a href="#map-schema">Map Schema</a>
+</li>
+ <li>
+<code class="highlighter-rouge">custom</code> for <a href="#custom-schema">Custom Schema</a>
+</li>
+ <li>
+<code class="highlighter-rouge">jdbc</code> for <a href="#jdbc-schema">JDBC Schema</a>
+</li>
</ul>
<p><code class="highlighter-rouge">path</code> (optional list) is the SQL path that is used to
@@ -358,8 +365,12 @@ Calcite will create and populate an in-memory table.</p>
<p><code class="highlighter-rouge">type</code> (optional string, default <code class="highlighter-rouge">custom</code>) indicates sub-type. Values are:</p>
<ul>
- <li><code class="highlighter-rouge">custom</code> for <a href="#custom-table">Custom Table</a></li>
- <li><code class="highlighter-rouge">view</code> for <a href="#view">View</a></li>
+ <li>
+<code class="highlighter-rouge">custom</code> for <a href="#custom-table">Custom Table</a>
+</li>
+ <li>
+<code class="highlighter-rouge">view</code> for <a href="#view">View</a>
+</li>
</ul>
<p><code class="highlighter-rouge">columns</code> (list of <a href="#column">Column</a> elements, required for
@@ -1066,11 +1077,11 @@ when you want to pass the column as a measure argument.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/os_adapter.html b/docs/os_adapter.html
index 5294c37..2f944f9 100644
--- a/docs/os_adapter.html
+++ b/docs/os_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>OS adapter and sqlsh</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -102,8 +103,10 @@ commands, and these differ widely. So:</p>
<ul>
<li>These commands only work on Linux and macOS (not Windows, even with Cygwin);</li>
- <li><code class="highlighter-rouge">vmstat</code> has very different columns between Linux and macOS;</li>
- <li><code class="highlighter-rouge">files</code> and <code class="highlighter-rouge">ps</code> have the same column names but semantics differ;</li>
+ <li>
+<code class="highlighter-rouge">vmstat</code> has very different columns between Linux and macOS;</li>
+ <li>
+<code class="highlighter-rouge">files</code> and <code class="highlighter-rouge">ps</code> have the same column names but semantics differ;</li>
<li>Other commands work largely the same.</li>
</ul>
@@ -142,12 +145,18 @@ care. Often adding a back-slash will suffice.</p>
<p>The OS adapter contains the following tables:</p>
<ul>
- <li><code class="highlighter-rouge">du</code> - Disk usage (based on <code class="highlighter-rouge">du</code> command)</li>
- <li><code class="highlighter-rouge">ps</code> - Processes (based on <code class="highlighter-rouge">ps</code> command)</li>
- <li><code class="highlighter-rouge">stdin</code> - Standard input</li>
- <li><code class="highlighter-rouge">files</code> - Files (based on the <code class="highlighter-rouge">find</code> command)</li>
- <li><code class="highlighter-rouge">git_commits</code> - Git commits (based on <code class="highlighter-rouge">git log</code>)</li>
- <li><code class="highlighter-rouge">vmstat</code> - Virtual memory (based on <code class="highlighter-rouge">vmstat</code> command)</li>
+ <li>
+<code class="highlighter-rouge">du</code> - Disk usage (based on <code class="highlighter-rouge">du</code> command)</li>
+ <li>
+<code class="highlighter-rouge">ps</code> - Processes (based on <code class="highlighter-rouge">ps</code> command)</li>
+ <li>
+<code class="highlighter-rouge">stdin</code> - Standard input</li>
+ <li>
+<code class="highlighter-rouge">files</code> - Files (based on the <code class="highlighter-rouge">find</code> command)</li>
+ <li>
+<code class="highlighter-rouge">git_commits</code> - Git commits (based on <code class="highlighter-rouge">git log</code>)</li>
+ <li>
+<code class="highlighter-rouge">vmstat</code> - Virtual memory (based on <code class="highlighter-rouge">vmstat</code> command)</li>
</ul>
<p>Most tables are implemented as views on top of table functions.</p>
@@ -307,11 +316,15 @@ but is not complete.</p>
that do not have named fields, for instance <code class="highlighter-rouge">stdin</code>, but you could use them
even if fields have names. Also ‘$0’ to mean the whole input line.</li>
<li>Use the file adapter, e.g. <code class="highlighter-rouge">select * from file.scott.emp</code> would use the
-<a href="file_adapter.html">file adapter</a> to open the file <code class="highlighter-rouge">scott/emp.csv</code></li>
+<a href="file_adapter.html">file adapter</a> to open the file <code class="highlighter-rouge">scott/emp.csv</code>
+</li>
<li>More tables based on git, e.g. branches, tags, files changed in each commit</li>
- <li><code class="highlighter-rouge">wc</code> function, e.g. <code class="highlighter-rouge">select path, lineCount from git_ls_files cross apply wc(path)</code></li>
+ <li>
+<code class="highlighter-rouge">wc</code> function, e.g. <code class="highlighter-rouge">select path, lineCount from git_ls_files cross apply wc(path)</code>
+</li>
<li>Move <code class="highlighter-rouge">sqlsh</code> command, or at least the java code underneath it,
-into <a href="https://github.com/julianhyde/sqlline">sqlline</a></li>
+into <a href="https://github.com/julianhyde/sqlline">sqlline</a>
+</li>
</ul>
@@ -618,11 +631,11 @@ into <a href="https://github.com/julianhyde/sqlline">sqlline</a></li>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/pig_adapter.html b/docs/pig_adapter.html
index 42c3639..f8a702c 100644
--- a/docs/pig_adapter.html
+++ b/docs/pig_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Pig adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -442,11 +443,11 @@ So, Piglet is basically the opposite of the Pig adapter.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/powered_by.html b/docs/powered_by.html
index 9c0fe1a..9cef8c9 100644
--- a/docs/powered_by.html
+++ b/docs/powered_by.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Powered by Calcite</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -79,7 +80,7 @@
<p>The following companies and projects are powered by Apache Calcite.</p>
-<p><img src="/img/powered-by.png" alt="Companies and projects" /></p>
+<p><img src="/img/powered-by.png" alt="Companies and projects"></p>
<ul id="markdown-toc">
<li><a href="#alibaba-maxcompute" id="markdown-toc-alibaba-maxcompute">Alibaba MaxCompute</a></li>
@@ -109,7 +110,7 @@ and then use the “powered by Apache Calcite” logo
or <a href="/img/pb-calcite-240.png">240 px</a>)
on your site.</p>
-<p><img src="/img/pb-calcite-240.png" alt="Powered By" /></p>
+<p><img src="/img/pb-calcite-240.png" alt="Powered By"></p>
<h3 id="alibaba-maxcompute">Alibaba MaxCompute</h3>
@@ -534,11 +535,11 @@ graph database.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/redis_adapter.html b/docs/redis_adapter.html
index 078612c..0e6dafe 100644
--- a/docs/redis_adapter.html
+++ b/docs/redis_adapter.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Redis adapter</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -602,11 +603,11 @@ More Redis features need to be further refined: for example HyperLogLog and Pub/
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/reference.html b/docs/reference.html
index fa147f1..455d716 100644
--- a/docs/reference.html
+++ b/docs/reference.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>SQL language</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -1123,7 +1124,7 @@ name will have been converted to upper case also.</p>
<h3 id="scalar-types">Scalar types</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Data type</th>
@@ -1233,7 +1234,7 @@ name will have been converted to upper case also.</p>
<td style="text-align: left">Examples: ST_GeomFromText(‘POINT (30 10)’)</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Where:</p>
@@ -1258,7 +1259,7 @@ we also allow their plurals, YEARS, MONTHS, DAYS, HOURS, MINUTES and SECONDS.</l
<h3 id="non-scalar-types">Non-scalar types</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Type</th>
@@ -1298,7 +1299,7 @@ we also allow their plurals, YEARS, MONTHS, DAYS, HOURS, MINUTES and SECONDS.</l
<td style="text-align: left"> </td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Note:</p>
@@ -1317,7 +1318,7 @@ or binary strings encoded as
<p>Where you would use a literal, apply the <code class="highlighter-rouge">ST_GeomFromText</code> function,
for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</code>.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Data type</th>
@@ -1334,7 +1335,8 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<tr>
<td style="text-align: left">POINT</td>
<td style="text-align: left">1</td>
- <td style="text-align: left"><code>ST_GeomFromText(​'POINT (30 10)')</code> is a point in 2D space; <code>ST_GeomFromText(​'POINT Z(30 10 2)')</code> is point in 3D space</td>
+ <td style="text-align: left">
+<code>ST_GeomFromText('POINT (30 10)')</code> is a point in 2D space; <code>ST_GeomFromText('POINT Z(30 10 2)')</code> is point in 3D space</td>
</tr>
<tr>
<td style="text-align: left">CURVE</td>
@@ -1344,7 +1346,7 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<tr>
<td style="text-align: left">LINESTRING</td>
<td style="text-align: left">2</td>
- <td style="text-align: left"><code>ST_GeomFromText(​'LINESTRING (30 10, 10 30, 40 40)')</code></td>
+ <td style="text-align: left"><code>ST_GeomFromText('LINESTRING (30 10, 10 30, 40 40)')</code></td>
</tr>
<tr>
<td style="text-align: left">SURFACE</td>
@@ -1354,7 +1356,8 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<tr>
<td style="text-align: left">POLYGON</td>
<td style="text-align: left">3</td>
- <td style="text-align: left"><code>ST_GeomFromText(​'POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))')</code> is a pentagon; <code>ST_GeomFromText(​'POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))')</code> is a pentagon with a quadrilateral hole</td>
+ <td style="text-align: left">
+<code>ST_GeomFromText('POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))')</code> is a pentagon; <code>ST_GeomFromText('POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))')</code> is a pentagon with a quadrilateral hole</td>
</tr>
<tr>
<td style="text-align: left">POLYHEDRALSURFACE</td>
@@ -1369,7 +1372,9 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<tr>
<td style="text-align: left">MULTIPOINT</td>
<td style="text-align: left">4</td>
- <td style="text-align: left"><code>ST_GeomFromText(​'MULTIPOINT ((10 40), (40 30), (20 20), (30 10))')</code> is equivalent to <code>ST_GeomFromText(​'MULTIPOINT (10 40, 40 30, 20 20, 30 10)')</code></td>
+ <td style="text-align: left">
+<code>ST_GeomFromText('MULTIPOINT ((10 40), (40 30), (20 20), (30 10))')</code> is equivalent to <code>ST_GeomFromText('MULTIPOINT (10 40, 40 30, 20 20, 30 10)')</code>
+</td>
</tr>
<tr>
<td style="text-align: left">MULTICURVE</td>
@@ -1379,7 +1384,7 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<tr>
<td style="text-align: left">MULTILINESTRING</td>
<td style="text-align: left">5</td>
- <td style="text-align: left"><code>ST_GeomFromText(​'MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))')</code></td>
+ <td style="text-align: left"><code>ST_GeomFromText('MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))')</code></td>
</tr>
<tr>
<td style="text-align: left">MULTISURFACE</td>
@@ -1389,10 +1394,10 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<tr>
<td style="text-align: left">MULTIPOLYGON</td>
<td style="text-align: left">6</td>
- <td style="text-align: left"><code>ST_GeomFromText(​'MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))')</code></td>
+ <td style="text-align: left"><code>ST_GeomFromText('MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))')</code></td>
</tr>
</tbody>
-</table>
+</table></div>
<h2 id="operators-and-functions">Operators and functions</h2>
@@ -1400,7 +1405,7 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<p>The operator precedence and associativity, highest to lowest.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator</th>
@@ -1457,14 +1462,14 @@ for example <code class="highlighter-rouge">ST_GeomFromText('POINT (30 10)')</co
<td style="text-align: left">left</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Note that <code class="highlighter-rouge">::</code> is dialect-specific, but is shown in this table for
completeness.</p>
<h3 id="comparison-operators">Comparison operators</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -1518,27 +1523,33 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">value1 BETWEEN value2 AND value3</td>
- <td style="text-align: left">Whether <em>value1</em> is greater than or equal to <em>value2</em> and less than or equal to <em>value3</em></td>
+ <td style="text-align: left">Whether <em>value1</em> is greater than or equal to <em>value2</em> and less than or equal to <em>value3</em>
+</td>
</tr>
<tr>
<td style="text-align: left">value1 NOT BETWEEN value2 AND value3</td>
- <td style="text-align: left">Whether <em>value1</em> is less than <em>value2</em> or greater than <em>value3</em></td>
+ <td style="text-align: left">Whether <em>value1</em> is less than <em>value2</em> or greater than <em>value3</em>
+</td>
</tr>
<tr>
<td style="text-align: left">string1 LIKE string2 [ ESCAPE string3 ]</td>
- <td style="text-align: left">Whether <em>string1</em> matches pattern <em>string2</em></td>
+ <td style="text-align: left">Whether <em>string1</em> matches pattern <em>string2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">string1 NOT LIKE string2 [ ESCAPE string3 ]</td>
- <td style="text-align: left">Whether <em>string1</em> does not match pattern <em>string2</em></td>
+ <td style="text-align: left">Whether <em>string1</em> does not match pattern <em>string2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">string1 SIMILAR TO string2 [ ESCAPE string3 ]</td>
- <td style="text-align: left">Whether <em>string1</em> matches regular expression <em>string2</em></td>
+ <td style="text-align: left">Whether <em>string1</em> matches regular expression <em>string2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">string1 NOT SIMILAR TO string2 [ ESCAPE string3 ]</td>
- <td style="text-align: left">Whether <em>string1</em> does not match regular expression <em>string2</em></td>
+ <td style="text-align: left">Whether <em>string1</em> does not match regular expression <em>string2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">value IN (value [, value]*)</td>
@@ -1550,23 +1561,28 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">value IN (sub-query)</td>
- <td style="text-align: left">Whether <em>value</em> is equal to a row returned by <em>sub-query</em></td>
+ <td style="text-align: left">Whether <em>value</em> is equal to a row returned by <em>sub-query</em>
+</td>
</tr>
<tr>
<td style="text-align: left">value NOT IN (sub-query)</td>
- <td style="text-align: left">Whether <em>value</em> is not equal to every row returned by <em>sub-query</em></td>
+ <td style="text-align: left">Whether <em>value</em> is not equal to every row returned by <em>sub-query</em>
+</td>
</tr>
<tr>
<td style="text-align: left">value comparison SOME (sub-query)</td>
- <td style="text-align: left">Whether <em>value</em> <em>comparison</em> at least one row returned by <em>sub-query</em></td>
+ <td style="text-align: left">Whether <em>value</em> <em>comparison</em> at least one row returned by <em>sub-query</em>
+</td>
</tr>
<tr>
<td style="text-align: left">value comparison ANY (sub-query)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">SOME</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">SOME</code>
+</td>
</tr>
<tr>
<td style="text-align: left">value comparison ALL (sub-query)</td>
- <td style="text-align: left">Whether <em>value</em> <em>comparison</em> every row returned by <em>sub-query</em></td>
+ <td style="text-align: left">Whether <em>value</em> <em>comparison</em> every row returned by <em>sub-query</em>
+</td>
</tr>
<tr>
<td style="text-align: left">EXISTS (sub-query)</td>
@@ -1577,7 +1593,7 @@ completeness.</p>
<td style="text-align: left">Whether the rows returned by <em>sub-query</em> are unique (ignoring null values)</td>
</tr>
</tbody>
-</table>
+</table></div>
<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">comp</span><span class="p">:</span>
<span class="o">=</span>
@@ -1589,7 +1605,7 @@ completeness.</p>
<h3 id="logical-operators">Logical operators</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -1634,11 +1650,11 @@ completeness.</p>
<td style="text-align: left">Whether <em>boolean</em> is not UNKNOWN</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="arithmetic-operators-and-functions">Arithmetic operators and functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -1648,27 +1664,33 @@ completeness.</p>
<tbody>
<tr>
<td style="text-align: left">+ numeric</td>
- <td style="text-align: left">Returns <em>numeric</em></td>
+ <td style="text-align: left">Returns <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">- numeric</td>
- <td style="text-align: left">Returns negative <em>numeric</em></td>
+ <td style="text-align: left">Returns negative <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">numeric1 + numeric2</td>
- <td style="text-align: left">Returns <em>numeric1</em> plus <em>numeric2</em></td>
+ <td style="text-align: left">Returns <em>numeric1</em> plus <em>numeric2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">numeric1 - numeric2</td>
- <td style="text-align: left">Returns <em>numeric1</em> minus <em>numeric2</em></td>
+ <td style="text-align: left">Returns <em>numeric1</em> minus <em>numeric2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">numeric1 * numeric2</td>
- <td style="text-align: left">Returns <em>numeric1</em> multiplied by <em>numeric2</em></td>
+ <td style="text-align: left">Returns <em>numeric1</em> multiplied by <em>numeric2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">numeric1 / numeric2</td>
- <td style="text-align: left">Returns <em>numeric1</em> divided by <em>numeric2</em></td>
+ <td style="text-align: left">Returns <em>numeric1</em> divided by <em>numeric2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">numeric1 % numeric2</td>
@@ -1676,11 +1698,13 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">POWER(numeric1, numeric2)</td>
- <td style="text-align: left">Returns <em>numeric1</em> raised to the power of <em>numeric2</em></td>
+ <td style="text-align: left">Returns <em>numeric1</em> raised to the power of <em>numeric2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">ABS(numeric)</td>
- <td style="text-align: left">Returns the absolute value of <em>numeric</em></td>
+ <td style="text-align: left">Returns the absolute value of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">MOD(numeric1, numeric2)</td>
@@ -1688,47 +1712,58 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">SQRT(numeric)</td>
- <td style="text-align: left">Returns the square root of <em>numeric</em></td>
+ <td style="text-align: left">Returns the square root of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">LN(numeric)</td>
- <td style="text-align: left">Returns the natural logarithm (base <em>e</em>) of <em>numeric</em></td>
+ <td style="text-align: left">Returns the natural logarithm (base <em>e</em>) of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">LOG10(numeric)</td>
- <td style="text-align: left">Returns the base 10 logarithm of <em>numeric</em></td>
+ <td style="text-align: left">Returns the base 10 logarithm of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">EXP(numeric)</td>
- <td style="text-align: left">Returns <em>e</em> raised to the power of <em>numeric</em></td>
+ <td style="text-align: left">Returns <em>e</em> raised to the power of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">CEIL(numeric)</td>
- <td style="text-align: left">Rounds <em>numeric</em> up, returning the smallest integer that is greater than or equal to <em>numeric</em></td>
+ <td style="text-align: left">Rounds <em>numeric</em> up, returning the smallest integer that is greater than or equal to <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">FLOOR(numeric)</td>
- <td style="text-align: left">Rounds <em>numeric</em> down, returning the largest integer that is less than or equal to <em>numeric</em></td>
+ <td style="text-align: left">Rounds <em>numeric</em> down, returning the largest integer that is less than or equal to <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">RAND([seed])</td>
- <td style="text-align: left">Generates a random double between 0 and 1 inclusive, optionally initializing the random number generator with <em>seed</em></td>
+ <td style="text-align: left">Generates a random double between 0 and 1 inclusive, optionally initializing the random number generator with <em>seed</em>
+</td>
</tr>
<tr>
<td style="text-align: left">RAND_INTEGER([seed, ] numeric)</td>
- <td style="text-align: left">Generates a random integer between 0 and <em>numeric</em> - 1 inclusive, optionally initializing the random number generator with <em>seed</em></td>
+ <td style="text-align: left">Generates a random integer between 0 and <em>numeric</em> - 1 inclusive, optionally initializing the random number generator with <em>seed</em>
+</td>
</tr>
<tr>
<td style="text-align: left">ACOS(numeric)</td>
- <td style="text-align: left">Returns the arc cosine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the arc cosine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">ASIN(numeric)</td>
- <td style="text-align: left">Returns the arc sine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the arc sine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">ATAN(numeric)</td>
- <td style="text-align: left">Returns the arc tangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the arc tangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">ATAN2(numeric, numeric)</td>
@@ -1736,15 +1771,18 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">CBRT(numeric)</td>
- <td style="text-align: left">Returns the cube root of <em>numeric</em></td>
+ <td style="text-align: left">Returns the cube root of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">COS(numeric)</td>
- <td style="text-align: left">Returns the cosine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the cosine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">COT(numeric)</td>
- <td style="text-align: left">Returns the cotangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the cotangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">DEGREES(numeric)</td>
@@ -1752,7 +1790,8 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">PI()</td>
- <td style="text-align: left">Returns a value that is closer than any other value to <em>pi</em></td>
+ <td style="text-align: left">Returns a value that is closer than any other value to <em>pi</em>
+</td>
</tr>
<tr>
<td style="text-align: left">RADIANS(numeric)</td>
@@ -1764,26 +1803,29 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">SIGN(numeric)</td>
- <td style="text-align: left">Returns the signum of <em>numeric</em></td>
+ <td style="text-align: left">Returns the signum of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">SIN(numeric)</td>
- <td style="text-align: left">Returns the sine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the sine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">TAN(numeric)</td>
- <td style="text-align: left">Returns the tangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the tangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">TRUNCATE(numeric1 [, numeric2])</td>
<td style="text-align: left">Truncates <em>numeric1</em> to optionally <em>numeric2</em> (if not specified 0) places right to the decimal point</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="character-string-operators-and-functions">Character string operators and functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -1813,7 +1855,8 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">POSITION(string1 IN string2)</td>
- <td style="text-align: left">Returns the position of the first occurrence of <em>string1</em> in <em>string2</em></td>
+ <td style="text-align: left">Returns the position of the first occurrence of <em>string1</em> in <em>string2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">POSITION(string1 IN string2 FROM integer)</td>
@@ -1821,11 +1864,13 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">TRIM( { BOTH | LEADING | TRAILING } string1 FROM string2)</td>
- <td style="text-align: left">Removes the longest string containing only the characters in <em>string1</em> from the start/end/both ends of <em>string1</em></td>
+ <td style="text-align: left">Removes the longest string containing only the characters in <em>string1</em> from the start/end/both ends of <em>string1</em>
+</td>
</tr>
<tr>
<td style="text-align: left">OVERLAY(string1 PLACING string2 FROM integer [ FOR integer2 ])</td>
- <td style="text-align: left">Replaces a substring of <em>string1</em> with <em>string2</em></td>
+ <td style="text-align: left">Replaces a substring of <em>string1</em> with <em>string2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">SUBSTRING(string FROM integer)</td>
@@ -1840,7 +1885,7 @@ completeness.</p>
<td style="text-align: left">Returns <em>string</em> with the first letter of each word converter to upper case and the rest to lower case. Words are sequences of alphanumeric characters separated by non-alphanumeric characters.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
@@ -1850,7 +1895,7 @@ completeness.</p>
<h3 id="binary-string-operators-and-functions">Binary string operators and functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -1864,11 +1909,13 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">OCTET_LENGTH(binary)</td>
- <td style="text-align: left">Returns the number of bytes in <em>binary</em></td>
+ <td style="text-align: left">Returns the number of bytes in <em>binary</em>
+</td>
</tr>
<tr>
<td style="text-align: left">POSITION(binary1 IN binary2)</td>
- <td style="text-align: left">Returns the position of the first occurrence of <em>binary1</em> in <em>binary2</em></td>
+ <td style="text-align: left">Returns the position of the first occurrence of <em>binary1</em> in <em>binary2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">POSITION(binary1 IN binary2 FROM integer)</td>
@@ -1876,7 +1923,8 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">OVERLAY(binary1 PLACING binary2 FROM integer [ FOR integer2 ])</td>
- <td style="text-align: left">Replaces a substring of <em>binary1</em> with <em>binary2</em></td>
+ <td style="text-align: left">Replaces a substring of <em>binary1</em> with <em>binary2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">SUBSTRING(binary FROM integer)</td>
@@ -1887,11 +1935,11 @@ completeness.</p>
<td style="text-align: left">Returns a substring of <em>binary</em> starting at a given point with a given length</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="datetime-functions">Date/time functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -1933,11 +1981,13 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">FLOOR(datetime TO timeUnit)</td>
- <td style="text-align: left">Rounds <em>datetime</em> down to <em>timeUnit</em></td>
+ <td style="text-align: left">Rounds <em>datetime</em> down to <em>timeUnit</em>
+</td>
</tr>
<tr>
<td style="text-align: left">CEIL(datetime TO timeUnit)</td>
- <td style="text-align: left">Rounds <em>datetime</em> up to <em>timeUnit</em></td>
+ <td style="text-align: left">Rounds <em>datetime</em> up to <em>timeUnit</em>
+</td>
</tr>
<tr>
<td style="text-align: left">YEAR(date)</td>
@@ -1981,18 +2031,20 @@ completeness.</p>
</tr>
<tr>
<td style="text-align: left">TIMESTAMPADD(timeUnit, integer, datetime)</td>
- <td style="text-align: left">Returns <em>datetime</em> with an interval of (signed) <em>integer</em> <em>timeUnit</em>s added. Equivalent to <code class="highlighter-rouge">datetime + INTERVAL 'integer' timeUnit</code></td>
+ <td style="text-align: left">Returns <em>datetime</em> with an interval of (signed) <em>integer</em> <em>timeUnit</em>s added. Equivalent to <code class="highlighter-rouge">datetime + INTERVAL 'integer' timeUnit</code>
+</td>
</tr>
<tr>
<td style="text-align: left">TIMESTAMPDIFF(timeUnit, datetime, datetime2)</td>
- <td style="text-align: left">Returns the (signed) number of <em>timeUnit</em> intervals between <em>datetime</em> and <em>datetime2</em>. Equivalent to <code class="highlighter-rouge">(datetime2 - datetime) timeUnit</code></td>
+ <td style="text-align: left">Returns the (signed) number of <em>timeUnit</em> intervals between <em>datetime</em> and <em>datetime2</em>. Equivalent to <code class="highlighter-rouge">(datetime2 - datetime) timeUnit</code>
+</td>
</tr>
<tr>
<td style="text-align: left">LAST_DAY(date)</td>
<td style="text-align: left">Returns the date of the last day of the month in a value of datatype DATE; For example, it returns DATE’2020-02-29’ for both DATE’2020-02-10’ and TIMESTAMP’2020-02-10 10:10:10’</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Calls to niladic functions such as <code class="highlighter-rouge">CURRENT_DATE</code> do not accept parentheses in
standard SQL. Calls with parentheses, such as <code class="highlighter-rouge">CURRENT_DATE()</code> are accepted in certain
@@ -2012,7 +2064,7 @@ standard SQL. Calls with parentheses, such as <code class="highlighter-rouge">CU
<h3 id="system-functions">System functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2049,11 +2101,11 @@ standard SQL. Calls with parentheses, such as <code class="highlighter-rouge">CU
<td style="text-align: left">Returns the current schema</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="conditional-functions-and-operators">Conditional functions and operators</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2062,23 +2114,23 @@ standard SQL. Calls with parentheses, such as <code class="highlighter-rouge">CU
</thead>
<tbody>
<tr>
- <td style="text-align: left">CASE value<br />WHEN value1 [, value11 ]* THEN result1<br />[ WHEN valueN [, valueN1 ]* THEN resultN ]*<br />[ ELSE resultZ ]<br /> END</td>
+ <td style="text-align: left">CASE value<br>WHEN value1 [, value11 ]* THEN result1<br>[ WHEN valueN [, valueN1 ]* THEN resultN ]*<br>[ ELSE resultZ ]<br> END</td>
<td style="text-align: left">Simple case</td>
</tr>
<tr>
- <td style="text-align: left">CASE<br />WHEN condition1 THEN result1<br />[ WHEN conditionN THEN resultN ]*<br />[ ELSE resultZ ]<br />END</td>
+ <td style="text-align: left">CASE<br>WHEN condition1 THEN result1<br>[ WHEN conditionN THEN resultN ]*<br>[ ELSE resultZ ]<br>END</td>
<td style="text-align: left">Searched case</td>
</tr>
<tr>
<td style="text-align: left">NULLIF(value, value)</td>
- <td style="text-align: left">Returns NULL if the values are the same.<br /><br />For example, <code>NULLIF(5, 5)</code> returns NULL; <code>NULLIF(5, 0)</code> returns 5.</td>
+ <td style="text-align: left">Returns NULL if the values are the same.<br><br>For example, <code>NULLIF(5, 5)</code> returns NULL; <code>NULLIF(5, 0)</code> returns 5.</td>
</tr>
<tr>
<td style="text-align: left">COALESCE(value, value [, value ]*)</td>
- <td style="text-align: left">Provides a value if the first value is null.<br /><br />For example, <code>COALESCE(NULL, 5)</code> returns 5.</td>
+ <td style="text-align: left">Provides a value if the first value is null.<br><br>For example, <code>COALESCE(NULL, 5)</code> returns 5.</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="type-conversion">Type conversion</h3>
@@ -2098,7 +2150,7 @@ However, Calcite supports both implicit and explicit conversion of values from o
<h4 id="explicit-type-conversion">Explicit Type Conversion</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2111,7 +2163,7 @@ However, Calcite supports both implicit and explicit conversion of values from o
<td style="text-align: left">Converts a value to a given type.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Supported data types syntax:</p>
@@ -2192,7 +2244,7 @@ Calcite type conversions. The table shows all possible conversions,
without regard to the context in which it is made. The rules governing
these details follow the table.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">FROM - TO</th>
@@ -2485,7 +2537,7 @@ these details follow the table.</p>
<td style="text-align: left">i</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>i: implicit cast / e: explicit cast / x: not allowed</p>
@@ -2500,10 +2552,13 @@ string operand to data type of the other numeric operand;</li>
if operands are <code class="highlighter-rouge">STRING</code> and <code class="highlighter-rouge">TIMESTAMP</code>, promote to <code class="highlighter-rouge">TIMESTAMP</code>;
make <code class="highlighter-rouge">1 = true</code> and <code class="highlighter-rouge">0 = false</code> always evaluate to <code class="highlighter-rouge">TRUE</code>;
if there is numeric type operand, find common type for both operands.</li>
- <li><code class="highlighter-rouge">IN</code> sub-query: compare type of LHS and RHS, and find the common type;
+ <li>
+<code class="highlighter-rouge">IN</code> sub-query: compare type of LHS and RHS, and find the common type;
if it is struct type, find wider type for every field;</li>
- <li><code class="highlighter-rouge">IN</code> expression list: compare every expression to find the common type;</li>
- <li><code class="highlighter-rouge">CASE WHEN</code> expression or <code class="highlighter-rouge">COALESCE</code>: find the common wider type of the <code class="highlighter-rouge">THEN</code>
+ <li>
+<code class="highlighter-rouge">IN</code> expression list: compare every expression to find the common type;</li>
+ <li>
+<code class="highlighter-rouge">CASE WHEN</code> expression or <code class="highlighter-rouge">COALESCE</code>: find the common wider type of the <code class="highlighter-rouge">THEN</code>
and <code class="highlighter-rouge">ELSE</code> operands;</li>
<li>Character + <code class="highlighter-rouge">INTERVAL</code> or character - <code class="highlighter-rouge">INTERVAL</code>: promote character to
<code class="highlighter-rouge">TIMESTAMP</code>;</li>
@@ -2511,7 +2566,8 @@ and <code class="highlighter-rouge">ELSE</code> operands;</li>
find the family default type if checker rules allow it;</li>
<li>User-defined function (UDF): coerce based on the declared argument types
of the <code class="highlighter-rouge">eval()</code> method;</li>
- <li><code class="highlighter-rouge">INSERT</code> and <code class="highlighter-rouge">UPDATE</code>: coerce a source field to counterpart target table
+ <li>
+<code class="highlighter-rouge">INSERT</code> and <code class="highlighter-rouge">UPDATE</code>: coerce a source field to counterpart target table
field’s type if the two fields differ with type name or precision(scale).</li>
</ul>
@@ -2548,7 +2604,7 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<h3 id="value-constructors">Value constructors</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2589,11 +2645,11 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td style="text-align: left">Creates a map from a list of key-value pairs.</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="collection-functions">Collection functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2650,13 +2706,13 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td style="text-align: left">Returns the difference of <em>multiset</em> and <em>multiset2</em>, eliminating duplicates if DISTINCT is specified (ALL is the default).</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>See also: the UNNEST relational operator converts a collection to a relation.</p>
<h3 id="period-predicates">Period predicates</h3>
-<table>
+<div class="scroll-table-style"><table>
<tr>
<th>Operator syntax</th>
<th>Description</th>
@@ -2665,7 +2721,10 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 CONTAINS datetime</td>
<td>
<div class="container">
- <div class="gray"><div class="r15"></div><div class="r2"></div></div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r2"></div>
+</div>
</div>
</td>
</tr>
@@ -2673,10 +2732,22 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 CONTAINS period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r15"></div><div class="r24"></div></div>
- <div class="gray"><div class="r15"></div><div class="r13"></div></div>
- <div class="gray"><div class="r15"></div><div class="r35"></div></div>
- <div class="gray"><div class="r15"></div><div class="r15"></div></div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r24"></div>
+</div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r13"></div>
+</div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r35"></div>
+</div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r15"></div>
+</div>
</div>
</td>
</tr>
@@ -2684,15 +2755,42 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 OVERLAPS period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r15"></div><div class="r24"></div></div>
- <div class="gray"><div class="r15"></div><div class="r13"></div></div>
- <div class="gray"><div class="r15"></div><div class="r35"></div></div>
- <div class="gray"><div class="r15"></div><div class="r15"></div></div>
- <div class="gray"><div class="r24"></div><div class="r15"></div></div>
- <div class="gray"><div class="r13"></div><div class="r15"></div></div>
- <div class="gray"><div class="r35"></div><div class="r15"></div></div>
- <div class="gray"><div class="r24"></div><div class="r13"></div></div>
- <div class="gray"><div class="r13"></div><div class="r24"></div></div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r24"></div>
+</div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r13"></div>
+</div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r35"></div>
+</div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r15"></div>
+</div>
+ <div class="gray">
+<div class="r24"></div>
+<div class="r15"></div>
+</div>
+ <div class="gray">
+<div class="r13"></div>
+<div class="r15"></div>
+</div>
+ <div class="gray">
+<div class="r35"></div>
+<div class="r15"></div>
+</div>
+ <div class="gray">
+<div class="r24"></div>
+<div class="r13"></div>
+</div>
+ <div class="gray">
+<div class="r13"></div>
+<div class="r24"></div>
+</div>
</div>
</td>
</tr>
@@ -2700,7 +2798,10 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 EQUALS period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r15"></div><div class="r15"></div></div>
+ <div class="gray">
+<div class="r15"></div>
+<div class="r15"></div>
+</div>
</div>
</td>
</tr>
@@ -2708,8 +2809,14 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 PRECEDES period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r12"></div><div class="r35"></div></div>
- <div class="gray"><div class="r13"></div><div class="r35"></div></div>
+ <div class="gray">
+<div class="r12"></div>
+<div class="r35"></div>
+</div>
+ <div class="gray">
+<div class="r13"></div>
+<div class="r35"></div>
+</div>
</div>
</td>
</tr>
@@ -2717,7 +2824,10 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 IMMEDIATELY PRECEDES period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r13"></div><div class="r35"></div></div>
+ <div class="gray">
+<div class="r13"></div>
+<div class="r35"></div>
+</div>
</div>
</td>
</tr>
@@ -2725,8 +2835,14 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 SUCCEEDS period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r35"></div><div class="r12"></div></div>
- <div class="gray"><div class="r35"></div><div class="r13"></div></div>
+ <div class="gray">
+<div class="r35"></div>
+<div class="r12"></div>
+</div>
+ <div class="gray">
+<div class="r35"></div>
+<div class="r13"></div>
+</div>
</div>
</td>
</tr>
@@ -2734,11 +2850,14 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td>period1 IMMEDIATELY SUCCEEDS period2</td>
<td>
<div class="container">
- <div class="gray"><div class="r35"></div><div class="r13"></div></div>
+ <div class="gray">
+<div class="r35"></div>
+<div class="r13"></div>
+</div>
</div>
</td>
</tr>
-</table>
+</table></div>
<p>Where <em>period1</em> and <em>period2</em> are period expressions:</p>
@@ -2752,7 +2871,7 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<h4 id="numeric">Numeric</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2762,19 +2881,23 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<tbody>
<tr>
<td style="text-align: left">{fn ABS(numeric)}</td>
- <td style="text-align: left">Returns the absolute value of <em>numeric</em></td>
+ <td style="text-align: left">Returns the absolute value of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn ACOS(numeric)}</td>
- <td style="text-align: left">Returns the arc cosine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the arc cosine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn ASIN(numeric)}</td>
- <td style="text-align: left">Returns the arc sine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the arc sine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn ATAN(numeric)}</td>
- <td style="text-align: left">Returns the arc tangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the arc tangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn ATAN2(numeric, numeric)}</td>
@@ -2782,19 +2905,23 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn CBRT(numeric)}</td>
- <td style="text-align: left">Returns the cube root of <em>numeric</em></td>
+ <td style="text-align: left">Returns the cube root of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn CEILING(numeric)}</td>
- <td style="text-align: left">Rounds <em>numeric</em> up, and returns the smallest number that is greater than or equal to <em>numeric</em></td>
+ <td style="text-align: left">Rounds <em>numeric</em> up, and returns the smallest number that is greater than or equal to <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn COS(numeric)}</td>
- <td style="text-align: left">Returns the cosine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the cosine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn COT(numeric)}</td>
- <td style="text-align: left">Returns the cotangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the cotangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn DEGREES(numeric)}</td>
@@ -2802,19 +2929,23 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn EXP(numeric)}</td>
- <td style="text-align: left">Returns <em>e</em> raised to the power of <em>numeric</em></td>
+ <td style="text-align: left">Returns <em>e</em> raised to the power of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn FLOOR(numeric)}</td>
- <td style="text-align: left">Rounds <em>numeric</em> down, and returns the largest number that is less than or equal to <em>numeric</em></td>
+ <td style="text-align: left">Rounds <em>numeric</em> down, and returns the largest number that is less than or equal to <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn LOG(numeric)}</td>
- <td style="text-align: left">Returns the natural logarithm (base <em>e</em>) of <em>numeric</em></td>
+ <td style="text-align: left">Returns the natural logarithm (base <em>e</em>) of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn LOG10(numeric)}</td>
- <td style="text-align: left">Returns the base-10 logarithm of <em>numeric</em></td>
+ <td style="text-align: left">Returns the base-10 logarithm of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn MOD(numeric1, numeric2)}</td>
@@ -2822,11 +2953,13 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn PI()}</td>
- <td style="text-align: left">Returns a value that is closer than any other value to <em>pi</em></td>
+ <td style="text-align: left">Returns a value that is closer than any other value to <em>pi</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn POWER(numeric1, numeric2)}</td>
- <td style="text-align: left">Returns <em>numeric1</em> raised to the power of <em>numeric2</em></td>
+ <td style="text-align: left">Returns <em>numeric1</em> raised to the power of <em>numeric2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn RADIANS(numeric)}</td>
@@ -2842,30 +2975,34 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn SIGN(numeric)}</td>
- <td style="text-align: left">Returns the signum of <em>numeric</em></td>
+ <td style="text-align: left">Returns the signum of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn SIN(numeric)}</td>
- <td style="text-align: left">Returns the sine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the sine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn SQRT(numeric)}</td>
- <td style="text-align: left">Returns the square root of <em>numeric</em></td>
+ <td style="text-align: left">Returns the square root of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn TAN(numeric)}</td>
- <td style="text-align: left">Returns the tangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the tangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn TRUNCATE(numeric1, numeric2)}</td>
<td style="text-align: left">Truncates <em>numeric1</em> to <em>numeric2</em> places right to the decimal point</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="string">String</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2883,7 +3020,8 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn INSERT(string1, start, length, string2)}</td>
- <td style="text-align: left">Inserts <em>string2</em> into a slot in <em>string1</em></td>
+ <td style="text-align: left">Inserts <em>string2</em> into a slot in <em>string1</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn LCASE(string)}</td>
@@ -2899,7 +3037,8 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn LEFT(string, length)}</td>
- <td style="text-align: left">Returns the leftmost <em>length</em> characters from <em>string</em></td>
+ <td style="text-align: left">Returns the leftmost <em>length</em> characters from <em>string</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn LTRIM(string)}</td>
@@ -2915,7 +3054,8 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn RIGHT(string, integer)}</td>
- <td style="text-align: left">Returns the rightmost <em>length</em> characters from <em>string</em></td>
+ <td style="text-align: left">Returns the rightmost <em>length</em> characters from <em>string</em>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn RTRIM(string)}</td>
@@ -2930,7 +3070,7 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td style="text-align: left">Returns a string in which all alphabetic characters in <em>string</em> have been converted to upper case</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
@@ -2940,7 +3080,7 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<h4 id="datetime">Date/time</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -2950,15 +3090,18 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<tbody>
<tr>
<td style="text-align: left">{fn CURDATE()}</td>
- <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CURRENT_DATE</code></td>
+ <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CURRENT_DATE</code>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn CURTIME()}</td>
- <td style="text-align: left">Equivalent to <code class="highlighter-rouge">LOCALTIME</code></td>
+ <td style="text-align: left">Equivalent to <code class="highlighter-rouge">LOCALTIME</code>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn NOW()}</td>
- <td style="text-align: left">Equivalent to <code class="highlighter-rouge">LOCALTIMESTAMP</code></td>
+ <td style="text-align: left">Equivalent to <code class="highlighter-rouge">LOCALTIMESTAMP</code>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn YEAR(date)}</td>
@@ -3009,11 +3152,11 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<td style="text-align: left">Subtracts <em>timestamp1</em> from <em>timestamp2</em> and returns the result in <em>timeUnit</em>s</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="system">System</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3023,7 +3166,8 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<tbody>
<tr>
<td style="text-align: left">{fn DATABASE()}</td>
- <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CURRENT_CATALOG</code></td>
+ <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CURRENT_CATALOG</code>
+</td>
</tr>
<tr>
<td style="text-align: left">{fn IFNULL(value1, value2)}</td>
@@ -3031,14 +3175,15 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
</tr>
<tr>
<td style="text-align: left">{fn USER()}</td>
- <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CURRENT_USER</code></td>
+ <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CURRENT_USER</code>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="conversion">Conversion</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3048,10 +3193,11 @@ or promote to <code class="highlighter-rouge">VARCHAR</code> type.</li>
<tbody>
<tr>
<td style="text-align: left">{fn CONVERT(value, type)}</td>
- <td style="text-align: left">Cast <em>value</em> into <em>type</em></td>
+ <td style="text-align: left">Cast <em>value</em> into <em>type</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="aggregate-functions">Aggregate functions</h3>
@@ -3083,7 +3229,7 @@ values. <code class="highlighter-rouge">WITHIN GROUP</code> is only allowed for
(<code class="highlighter-rouge">PERCENTILE_CONT</code> and <code class="highlighter-rouge">PERCENTILE_DISC</code>) and collection functions (<code class="highlighter-rouge">COLLECT</code>
and <code class="highlighter-rouge">LISTAGG</code>).</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3181,7 +3327,8 @@ and <code class="highlighter-rouge">LISTAGG</code>).</p>
</tr>
<tr>
<td style="text-align: left">STDDEV( [ ALL | DISTINCT ] numeric)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">STDDEV_SAMP</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">STDDEV_SAMP</code>
+</td>
</tr>
<tr>
<td style="text-align: left">STDDEV_POP( [ ALL | DISTINCT ] numeric)</td>
@@ -3204,7 +3351,7 @@ and <code class="highlighter-rouge">LISTAGG</code>).</p>
<td style="text-align: left">Returns the sample variance (square of the sample standard deviation) of <em>numeric</em> across all input values</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
@@ -3225,11 +3372,12 @@ required.</p>
<p>In the following:</p>
<ul>
- <li><em>fraction</em> is a numeric literal between 0 and 1, inclusive, and
+ <li>
+<em>fraction</em> is a numeric literal between 0 and 1, inclusive, and
represents a percentage</li>
</ul>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3246,7 +3394,7 @@ represents a percentage</li>
<td style="text-align: left">Returns a percentile based on a discrete distribution of the column values returning the first input value whose position in the ordering equals or exceeds the specified fraction</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="window-functions">Window functions</h3>
@@ -3268,7 +3416,7 @@ aggregate function.</p>
<p><code class="highlighter-rouge">DISTINCT</code>, <code class="highlighter-rouge">FILTER</code> and <code class="highlighter-rouge">WITHIN GROUP</code> are as described for aggregate
functions.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3282,23 +3430,28 @@ functions.</p>
</tr>
<tr>
<td style="text-align: left">COUNT(*) OVER window</td>
- <td style="text-align: left">Returns the number of rows in <em>window</em></td>
+ <td style="text-align: left">Returns the number of rows in <em>window</em>
+</td>
</tr>
<tr>
<td style="text-align: left">AVG(numeric) OVER window</td>
- <td style="text-align: left">Returns the average (arithmetic mean) of <em>numeric</em> across all values in <em>window</em></td>
+ <td style="text-align: left">Returns the average (arithmetic mean) of <em>numeric</em> across all values in <em>window</em>
+</td>
</tr>
<tr>
<td style="text-align: left">SUM(numeric) OVER window</td>
- <td style="text-align: left">Returns the sum of <em>numeric</em> across all values in <em>window</em></td>
+ <td style="text-align: left">Returns the sum of <em>numeric</em> across all values in <em>window</em>
+</td>
</tr>
<tr>
<td style="text-align: left">MAX(value) OVER window</td>
- <td style="text-align: left">Returns the maximum value of <em>value</em> across all values in <em>window</em></td>
+ <td style="text-align: left">Returns the maximum value of <em>value</em> across all values in <em>window</em>
+</td>
</tr>
<tr>
<td style="text-align: left">MIN(value) OVER window</td>
- <td style="text-align: left">Returns the minimum value of <em>value</em> across all values in <em>window</em></td>
+ <td style="text-align: left">Returns the minimum value of <em>value</em> across all values in <em>window</em>
+</td>
</tr>
<tr>
<td style="text-align: left">RANK() OVER window</td>
@@ -3337,7 +3490,7 @@ functions.</p>
<td style="text-align: left">Returns an integer ranging from 1 to <em>value</em>, dividing the partition as equally as possible</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Note:</p>
@@ -3359,7 +3512,7 @@ runtime.</li>
<h3 id="grouping-functions">Grouping functions</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3377,14 +3530,15 @@ runtime.</li>
</tr>
<tr>
<td style="text-align: left">GROUPING_ID(expression [, expression ]*)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">GROUPING</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">GROUPING</code>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="descriptor">DESCRIPTOR</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3397,7 +3551,7 @@ runtime.</li>
<td style="text-align: left">DESCRIPTOR appears as an argument in a function to indicate a list of names. The interpretation of names is left to the function.</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="table-functions">Table functions</h3>
@@ -3410,7 +3564,7 @@ on a timestamp column. An assigned window is specified by its beginning and
ending. All assigned windows have the same length, and that’s why tumbling
sometimes is named as “fixed windowing”.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3423,7 +3577,7 @@ sometimes is named as “fixed windowing”.</p>
<td style="text-align: left">Indicates a tumbling window of <em>size</em> interval for <em>timecol</em>, optionally aligned at <em>offset</em>.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Here is an example:</p>
@@ -3450,7 +3604,7 @@ whether data is complete.</p>
<p>In streaming queries, HOP assigns windows that cover rows within the interval of <em>size</em> and shifting every <em>slide</em> based
on a timestamp column. Windows assigned could have overlapping so hopping sometime is named as “sliding windowing”.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3463,7 +3617,7 @@ on a timestamp column. Windows assigned could have overlapping so hopping someti
<td style="text-align: left">Indicates a hopping window for <em>timecol</em>, covering rows within the interval of <em>size</em>, shifting every <em>slide</em> and optionally aligned at <em>offset</em>.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Here is an example:</p>
@@ -3492,7 +3646,7 @@ orders that tells data completeness.</p>
<p>In streaming queries, SESSION assigns windows that cover rows based on <em>datetime</em>. Within a session window, distances
of rows are less than <em>interval</em>. Session window is applied per <em>key</em>.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3505,7 +3659,7 @@ of rows are less than <em>interval</em>. Session window is applied per <em>key</
<td style="text-align: left">Indicates a session window of <em>size</em> interval for <em>timecol</em>. Session window is applied per <em>key</em>.</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Here is an example:</p>
@@ -3545,7 +3699,7 @@ For example, if a query is grouped using
<code class="highlighter-rouge">HOP(t, INTERVAL '2' HOUR, INTERVAL '1' HOUR)</code>, a row with timestamp ‘10:15:00’
will occur in both the 10:00 - 11:00 and 11:00 - 12:00 totals.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3555,25 +3709,28 @@ For example, if a query is grouped using
<tbody>
<tr>
<td style="text-align: left">HOP(datetime, slide, size [, time ])</td>
- <td style="text-align: left">Indicates a hopping window for <em>datetime</em>, covering rows within the interval of <em>size</em>, shifting every <em>slide</em>, and optionally aligned at <em>time</em></td>
+ <td style="text-align: left">Indicates a hopping window for <em>datetime</em>, covering rows within the interval of <em>size</em>, shifting every <em>slide</em>, and optionally aligned at <em>time</em>
+</td>
</tr>
<tr>
<td style="text-align: left">SESSION(datetime, interval [, time ])</td>
- <td style="text-align: left">Indicates a session window of <em>interval</em> for <em>datetime</em>, optionally aligned at <em>time</em></td>
+ <td style="text-align: left">Indicates a session window of <em>interval</em> for <em>datetime</em>, optionally aligned at <em>time</em>
+</td>
</tr>
<tr>
<td style="text-align: left">TUMBLE(datetime, interval [, time ])</td>
- <td style="text-align: left">Indicates a tumbling window of <em>interval</em> for <em>datetime</em>, optionally aligned at <em>time</em></td>
+ <td style="text-align: left">Indicates a tumbling window of <em>interval</em> for <em>datetime</em>, optionally aligned at <em>time</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="grouped-auxiliary-functions">Grouped auxiliary functions</h3>
<p>Grouped auxiliary functions allow you to access properties of a window defined
by a grouped window function.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -3606,24 +3763,35 @@ by a grouped window function.</p>
<td style="text-align: left">Returns the value of <em>expression</em> at the beginning of the window defined by a <code class="highlighter-rouge">TUMBLE</code> function call</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="spatial-functions">Spatial functions</h3>
<p>In the following:</p>
<ul>
- <li><em>geom</em> is a GEOMETRY;</li>
- <li><em>geomCollection</em> is a GEOMETRYCOLLECTION;</li>
- <li><em>point</em> is a POINT;</li>
- <li><em>lineString</em> is a LINESTRING;</li>
- <li><em>iMatrix</em> is a <a href="https://en.wikipedia.org/wiki/DE-9IM">DE-9IM intersection matrix</a>;</li>
- <li><em>distance</em>, <em>tolerance</em>, <em>segmentLengthFraction</em>, <em>offsetDistance</em> are of type double;</li>
- <li><em>dimension</em>, <em>quadSegs</em>, <em>srid</em>, <em>zoom</em> are of type integer;</li>
- <li><em>layerType</em> is a character string;</li>
- <li><em>gml</em> is a character string containing <a href="https://en.wikipedia.org/wiki/Geography_Markup_Language">Geography Markup Language (GML)</a>;</li>
- <li><em>wkt</em> is a character string containing <a href="https://en.wikipedia.org/wiki/Well-known_text">well-known text (WKT)</a>;</li>
- <li><em>wkb</em> is a binary string containing <a href="https://en.wikipedia.org/wiki/Well-known_binary">well-known binary (WKB)</a>.</li>
+ <li>
+<em>geom</em> is a GEOMETRY;</li>
+ <li>
+<em>geomCollection</em> is a GEOMETRYCOLLECTION;</li>
+ <li>
+<em>point</em> is a POINT;</li>
+ <li>
+<em>lineString</em> is a LINESTRING;</li>
+ <li>
+<em>iMatrix</em> is a <a href="https://en.wikipedia.org/wiki/DE-9IM">DE-9IM intersection matrix</a>;</li>
+ <li>
+<em>distance</em>, <em>tolerance</em>, <em>segmentLengthFraction</em>, <em>offsetDistance</em> are of type double;</li>
+ <li>
+<em>dimension</em>, <em>quadSegs</em>, <em>srid</em>, <em>zoom</em> are of type integer;</li>
+ <li>
+<em>layerType</em> is a character string;</li>
+ <li>
+<em>gml</em> is a character string containing <a href="https://en.wikipedia.org/wiki/Geography_Markup_Language">Geography Markup Language (GML)</a>;</li>
+ <li>
+<em>wkt</em> is a character string containing <a href="https://en.wikipedia.org/wiki/Well-known_text">well-known text (WKT)</a>;</li>
+ <li>
+<em>wkb</em> is a binary string containing <a href="https://en.wikipedia.org/wiki/Well-known_binary">well-known binary (WKB)</a>.</li>
</ul>
<p>In the “C” (for “compatibility”) column, “o” indicates that the function
@@ -3636,7 +3804,7 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<h4 id="geometry-conversion-functions-2d">Geometry conversion functions (2D)</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -3648,7 +3816,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">p</td>
<td style="text-align: left">ST_AsText(geom)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">ST_AsWKT</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">ST_AsWKT</code>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -3691,7 +3860,7 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<td style="text-align: left">Converts WKT → POLYGON</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
@@ -3721,7 +3890,7 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<h4 id="geometry-creation-functions-2d">Geometry creation functions (2D)</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -3738,12 +3907,14 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">h</td>
<td style="text-align: left">ST_MakeGrid(geom, deltaX, deltaY)</td>
- <td style="text-align: left">Calculates a regular grid of POLYGONs based on <em>geom</em></td>
+ <td style="text-align: left">Calculates a regular grid of POLYGONs based on <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">h</td>
<td style="text-align: left">ST_MakeGridPoints(geom, deltaX, deltaY)</td>
- <td style="text-align: left">Calculates a regular grid of points based on <em>geom</em></td>
+ <td style="text-align: left">Calculates a regular grid of points based on <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -3753,7 +3924,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">p</td>
<td style="text-align: left">ST_MakePoint(x, y [, z ])</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">ST_Point</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">ST_Point</code>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -3761,19 +3933,23 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<td style="text-align: left">Constructs a point from two or three coordinates</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
<ul>
- <li>ST_BoundingCircle(geom) Returns the minimum bounding circle of <em>geom</em></li>
+ <li>ST_BoundingCircle(geom) Returns the minimum bounding circle of <em>geom</em>
+</li>
<li>ST_Expand(geom, distance) Expands <em>geom</em>’s envelope</li>
<li>ST_Expand(geom, deltaX, deltaY) Expands <em>geom</em>’s envelope</li>
<li>ST_MakeEllipse(point, width, height) Constructs an ellipse</li>
<li>ST_MakePolygon(lineString [, hole ]<em>) Creates a POLYGON from *lineString</em> with the given holes (which are required to be closed LINESTRINGs)</li>
- <li>ST_MinimumDiameter(geom) Returns the minimum diameter of <em>geom</em></li>
- <li>ST_MinimumRectangle(geom) Returns the minimum rectangle enclosing <em>geom</em></li>
- <li>ST_OctogonalEnvelope(geom) Returns the octogonal envelope of <em>geom</em></li>
+ <li>ST_MinimumDiameter(geom) Returns the minimum diameter of <em>geom</em>
+</li>
+ <li>ST_MinimumRectangle(geom) Returns the minimum rectangle enclosing <em>geom</em>
+</li>
+ <li>ST_OctogonalEnvelope(geom) Returns the octogonal envelope of <em>geom</em>
+</li>
<li>ST_RingBuffer(geom, distance, bufferCount [, endCapStyle [, doDifference]]) Returns a MULTIPOLYGON of buffers centered at <em>geom</em> and of increasing buffer size</li>
</ul>
@@ -3783,13 +3959,15 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<ul>
<li>ST_Extrude(geom, height [, flag]) Extrudes a GEOMETRY</li>
- <li>ST_GeometryShadow(geom, point, height) Computes the shadow footprint of <em>geom</em></li>
- <li>ST_GeometryShadow(geom, azimuth, altitude, height [, unify ]) Computes the shadow footprint of <em>geom</em></li>
+ <li>ST_GeometryShadow(geom, point, height) Computes the shadow footprint of <em>geom</em>
+</li>
+ <li>ST_GeometryShadow(geom, azimuth, altitude, height [, unify ]) Computes the shadow footprint of <em>geom</em>
+</li>
</ul>
<h4 id="geometry-properties-2d">Geometry properties (2D)</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -3801,22 +3979,26 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Boundary(geom [, srid ])</td>
- <td style="text-align: left">Returns the boundary of <em>geom</em></td>
+ <td style="text-align: left">Returns the boundary of <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Distance(geom1, geom2)</td>
- <td style="text-align: left">Returns the distance between <em>geom1</em> and <em>geom2</em></td>
+ <td style="text-align: left">Returns the distance between <em>geom1</em> and <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_GeometryType(geom)</td>
- <td style="text-align: left">Returns the type of <em>geom</em></td>
+ <td style="text-align: left">Returns the type of <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_GeometryTypeCode(geom)</td>
- <td style="text-align: left">Returns the OGC SFS type code of <em>geom</em></td>
+ <td style="text-align: left">Returns the OGC SFS type code of <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -3826,30 +4008,37 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_X(geom)</td>
- <td style="text-align: left">Returns the x-value of the first coordinate of <em>geom</em></td>
+ <td style="text-align: left">Returns the x-value of the first coordinate of <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Y(geom)</td>
- <td style="text-align: left">Returns the y-value of the first coordinate of <em>geom</em></td>
+ <td style="text-align: left">Returns the y-value of the first coordinate of <em>geom</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
<ul>
<li>ST_Centroid(geom) Returns the centroid of <em>geom</em> (which may be a GEOMETRYCOLLECTION)</li>
<li>ST_CompactnessRatio(polygon) Returns the square root of <em>polygon</em>’s area divided by the area of the circle with circumference equal to its perimeter</li>
- <li>ST_CoordDim(geom) Returns the dimension of the coordinates of <em>geom</em></li>
- <li>ST_Dimension(geom) Returns the dimension of <em>geom</em></li>
- <li>ST_EndPoint(lineString) Returns the last coordinate of <em>lineString</em></li>
+ <li>ST_CoordDim(geom) Returns the dimension of the coordinates of <em>geom</em>
+</li>
+ <li>ST_Dimension(geom) Returns the dimension of <em>geom</em>
+</li>
+ <li>ST_EndPoint(lineString) Returns the last coordinate of <em>lineString</em>
+</li>
<li>ST_Envelope(geom [, srid ]) Returns the envelope of <em>geom</em> (which may be a GEOMETRYCOLLECTION) as a GEOMETRY</li>
<li>ST_Explode(query [, fieldName]) Explodes the GEOMETRYCOLLECTIONs in the <em>fieldName</em> column of a query into multiple geometries</li>
<li>ST_Extent(geom) Returns the minimum bounding box of <em>geom</em> (which may be a GEOMETRYCOLLECTION)</li>
<li>ST_ExteriorRing(polygon) Returns the exterior ring of <em>polygon</em> as a linear-ring</li>
- <li>ST_GeometryN(geomCollection, n) Returns the <em>n</em>th GEOMETRY of <em>geomCollection</em></li>
- <li>ST_InteriorRingN(polygon, n) Returns the <em>n</em>th interior ring of <em>polygon</em></li>
+ <li>ST_GeometryN(geomCollection, n) Returns the <em>n</em>th GEOMETRY of <em>geomCollection</em>
+</li>
+ <li>ST_InteriorRingN(polygon, n) Returns the <em>n</em>th interior ring of <em>polygon</em>
+</li>
<li>ST_IsClosed(geom) Returns whether <em>geom</em> is a closed LINESTRING or MULTILINESTRING</li>
<li>ST_IsEmpty(geom) Returns whether <em>geom</em> is empty</li>
<li>ST_IsRectangle(geom) Returns whether <em>geom</em> is a rectangle</li>
@@ -3858,24 +4047,35 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<li>ST_IsValid(geom) Returns whether <em>geom</em> is valid</li>
<li>ST_IsValidDetail(geom [, selfTouchValid ]) Returns a valid detail as an array of objects</li>
<li>ST_IsValidReason(geom [, selfTouchValid ]) Returns text stating whether <em>geom</em> is valid, and if not valid, a reason why</li>
- <li>ST_NPoints(geom) Returns the number of points in <em>geom</em></li>
+ <li>ST_NPoints(geom) Returns the number of points in <em>geom</em>
+</li>
<li>ST_NumGeometries(geom) Returns the number of geometries in <em>geom</em> (1 if it is not a GEOMETRYCOLLECTION)</li>
- <li>ST_NumInteriorRing(geom) Synonym for <code class="highlighter-rouge">ST_NumInteriorRings</code></li>
- <li>ST_NumInteriorRings(geom) Returns the number of interior rings of <em>geom</em></li>
- <li>ST_NumPoints(lineString) Returns the number of points in <em>lineString</em></li>
- <li>ST_PointN(geom, n) Returns the <em>n</em>th point of a <em>lineString</em></li>
- <li>ST_PointOnSurface(geom) Returns an interior or boundary point of <em>geom</em></li>
+ <li>ST_NumInteriorRing(geom) Synonym for <code class="highlighter-rouge">ST_NumInteriorRings</code>
+</li>
+ <li>ST_NumInteriorRings(geom) Returns the number of interior rings of <em>geom</em>
+</li>
+ <li>ST_NumPoints(lineString) Returns the number of points in <em>lineString</em>
+</li>
+ <li>ST_PointN(geom, n) Returns the <em>n</em>th point of a <em>lineString</em>
+</li>
+ <li>ST_PointOnSurface(geom) Returns an interior or boundary point of <em>geom</em>
+</li>
<li>ST_SRID(geom) Returns SRID value of <em>geom</em> or 0 if it does not have one</li>
- <li>ST_StartPoint(lineString) Returns the first coordinate of <em>lineString</em></li>
- <li>ST_XMax(geom) Returns the maximum x-value of <em>geom</em></li>
- <li>ST_XMin(geom) Returns the minimum x-value of <em>geom</em></li>
- <li>ST_YMax(geom) Returns the maximum y-value of <em>geom</em></li>
- <li>ST_YMin(geom) Returns the minimum y-value of <em>geom</em></li>
+ <li>ST_StartPoint(lineString) Returns the first coordinate of <em>lineString</em>
+</li>
+ <li>ST_XMax(geom) Returns the maximum x-value of <em>geom</em>
+</li>
+ <li>ST_XMin(geom) Returns the minimum x-value of <em>geom</em>
+</li>
+ <li>ST_YMax(geom) Returns the maximum y-value of <em>geom</em>
+</li>
+ <li>ST_YMin(geom) Returns the minimum y-value of <em>geom</em>
+</li>
</ul>
<h4 id="geometry-properties-3d">Geometry properties (3D)</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -3892,21 +4092,24 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Z(geom)</td>
- <td style="text-align: left">Returns the z-value of the first coordinate of <em>geom</em></td>
+ <td style="text-align: left">Returns the z-value of the first coordinate of <em>geom</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
<ul>
- <li>ST_ZMax(geom) Returns the maximum z-value of <em>geom</em></li>
- <li>ST_ZMin(geom) Returns the minimum z-value of <em>geom</em></li>
+ <li>ST_ZMax(geom) Returns the maximum z-value of <em>geom</em>
+</li>
+ <li>ST_ZMin(geom) Returns the minimum z-value of <em>geom</em>
+</li>
</ul>
<h3 id="geometry-predicates">Geometry predicates</h3>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -3918,7 +4121,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Contains(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> contains <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> contains <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">p</td>
@@ -3928,7 +4132,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Crosses(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> crosses <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> crosses <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -3943,50 +4148,59 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_EnvelopesIntersect(geom1, geom2)</td>
- <td style="text-align: left">Returns whether the envelope of <em>geom1</em> intersects the envelope of <em>geom2</em></td>
+ <td style="text-align: left">Returns whether the envelope of <em>geom1</em> intersects the envelope of <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Equals(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> equals <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> equals <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Intersects(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> intersects <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> intersects <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Overlaps(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> overlaps <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> overlaps <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Touches(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> touches <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> touches <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Within(geom1, geom2)</td>
- <td style="text-align: left">Returns whether <em>geom1</em> is within <em>geom2</em></td>
+ <td style="text-align: left">Returns whether <em>geom1</em> is within <em>geom2</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
<ul>
- <li>ST_Covers(geom1, geom2) Returns whether no point in <em>geom2</em> is outside <em>geom1</em></li>
+ <li>ST_Covers(geom1, geom2) Returns whether no point in <em>geom2</em> is outside <em>geom1</em>
+</li>
<li>ST_OrderingEquals(geom1, geom2) Returns whether <em>geom1</em> equals <em>geom2</em> and their coordinates and component Geometries are listed in the same order</li>
- <li>ST_Relate(geom1, geom2) Returns the DE-9IM intersection matrix of <em>geom1</em> and <em>geom2</em></li>
- <li>ST_Relate(geom1, geom2, iMatrix) Returns whether <em>geom1</em> and <em>geom2</em> are related by the given intersection matrix <em>iMatrix</em></li>
+ <li>ST_Relate(geom1, geom2) Returns the DE-9IM intersection matrix of <em>geom1</em> and <em>geom2</em>
+</li>
+ <li>ST_Relate(geom1, geom2, iMatrix) Returns whether <em>geom1</em> and <em>geom2</em> are related by the given intersection matrix <em>iMatrix</em>
+</li>
</ul>
<h4 id="geometry-operators-2d">Geometry operators (2D)</h4>
<p>The following functions combine 2D geometries.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -3998,27 +4212,31 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Buffer(geom, distance [, quadSegs | style ])</td>
- <td style="text-align: left">Computes a buffer around <em>geom</em></td>
+ <td style="text-align: left">Computes a buffer around <em>geom</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Union(geom1, geom2)</td>
- <td style="text-align: left">Computes the union of <em>geom1</em> and <em>geom2</em></td>
+ <td style="text-align: left">Computes the union of <em>geom1</em> and <em>geom2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Union(geomCollection)</td>
- <td style="text-align: left">Computes the union of the geometries in <em>geomCollection</em></td>
+ <td style="text-align: left">Computes the union of the geometries in <em>geomCollection</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>See also: the <code class="highlighter-rouge">ST_Union</code> aggregate function.</p>
<p>Not implemented:</p>
<ul>
- <li>ST_ConvexHull(geom) Computes the smallest convex polygon that contains all the points in <em>geom</em></li>
+ <li>ST_ConvexHull(geom) Computes the smallest convex polygon that contains all the points in <em>geom</em>
+</li>
<li>ST_Difference(geom1, geom2) Computes the difference between two geometries</li>
<li>ST_Intersection(geom1, geom2) Computes the intersection of two geometries</li>
<li>ST_SymDifference(geom1, geom2) Computes the symmetric difference between two geometries</li>
@@ -4031,7 +4249,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<ul>
<li>ST_Rotate(geom, angle [, origin | x, y]) Rotates a <em>geom</em> counter-clockwise by <em>angle</em> (in radians) about <em>origin</em> (or the point (<em>x</em>, <em>y</em>))</li>
<li>ST_Scale(geom, xFactor, yFactor [, zFactor ]) Scales <em>geom</em> by multiplying the ordinates by the indicated scale factors</li>
- <li>ST_Translate(geom, x, y, [, z]) Translates <em>geom</em></li>
+ <li>ST_Translate(geom, x, y, [, z]) Translates <em>geom</em>
+</li>
</ul>
<h4 id="geometry-editing-functions-2d">Geometry editing functions (2D)</h4>
@@ -4043,15 +4262,19 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<ul>
<li>ST_AddPoint(geom, point [, tolerance ]) Adds <em>point</em> to <em>geom</em> with a given <em>tolerance</em> (default 0)</li>
<li>ST_CollectionExtract(geom, dimension) Filters <em>geom</em>, returning a multi-geometry of those members with a given <em>dimension</em> (1 = point, 2 = line-string, 3 = polygon)</li>
- <li>ST_Densify(geom, tolerance) Inserts extra vertices every <em>tolerance</em> along the line segments of <em>geom</em></li>
- <li>ST_FlipCoordinates(geom) Flips the X and Y coordinates of <em>geom</em></li>
+ <li>ST_Densify(geom, tolerance) Inserts extra vertices every <em>tolerance</em> along the line segments of <em>geom</em>
+</li>
+ <li>ST_FlipCoordinates(geom) Flips the X and Y coordinates of <em>geom</em>
+</li>
<li>ST_Holes(geom) Returns the holes in <em>geom</em> (which may be a GEOMETRYCOLLECTION)</li>
<li>ST_Normalize(geom) Converts <em>geom</em> to normal form</li>
- <li>ST_RemoveDuplicatedCoordinates(geom) Removes duplicated coordinates from <em>geom</em></li>
+ <li>ST_RemoveDuplicatedCoordinates(geom) Removes duplicated coordinates from <em>geom</em>
+</li>
<li>ST_RemoveHoles(geom) Removes a <em>geom</em>’s holes</li>
<li>ST_RemovePoints(geom, poly) Removes all coordinates of <em>geom</em> located within <em>poly</em>; null if all coordinates are removed</li>
<li>ST_RemoveRepeatedPoints(geom, tolerance) Removes from <em>geom</em> all repeated points (or points within <em>tolerance</em> of another point)</li>
- <li>ST_Reverse(geom) Reverses the vertex order of <em>geom</em></li>
+ <li>ST_Reverse(geom) Reverses the vertex order of <em>geom</em>
+</li>
</ul>
<h4 id="geometry-editing-functions-3d">Geometry editing functions (3D)</h4>
@@ -4061,12 +4284,16 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<p>Not implemented:</p>
<ul>
- <li>ST_AddZ(geom, zToAdd) Adds <em>zToAdd</em> to the z-coordinate of <em>geom</em></li>
+ <li>ST_AddZ(geom, zToAdd) Adds <em>zToAdd</em> to the z-coordinate of <em>geom</em>
+</li>
<li>ST_Interpolate3DLine(geom) Returns <em>geom</em> with an interpolation of z values, or null if it is not a line-string or MULTILINESTRING</li>
- <li>ST_MultiplyZ(geom, zFactor) Returns <em>geom</em> with its z-values multiplied by <em>zFactor</em></li>
+ <li>ST_MultiplyZ(geom, zFactor) Returns <em>geom</em> with its z-values multiplied by <em>zFactor</em>
+</li>
<li>ST_Reverse3DLine(geom [, sortOrder ]) Potentially reverses <em>geom</em> according to the z-values of its first and last coordinates</li>
- <li>ST_UpdateZ(geom, newZ [, updateCondition ]) Updates the z-values of <em>geom</em></li>
- <li>ST_ZUpdateLineExtremities(geom, startZ, endZ [, interpolate ]) Updates the start and end z-values of <em>geom</em></li>
+ <li>ST_UpdateZ(geom, newZ [, updateCondition ]) Updates the z-values of <em>geom</em>
+</li>
+ <li>ST_ZUpdateLineExtremities(geom, startZ, endZ [, interpolate ]) Updates the start and end z-values of <em>geom</em>
+</li>
</ul>
<h4 id="geometry-measurement-functions-2d">Geometry measurement functions (2D)</h4>
@@ -4075,13 +4302,20 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<ul>
<li>ST_Area(geom) Returns the area of <em>geom</em> (which may be a GEOMETRYCOLLECTION)</li>
- <li>ST_ClosestCoordinate(geom, point) Returns the coordinate(s) of <em>geom</em> closest to <em>point</em></li>
- <li>ST_ClosestPoint(geom1, geom2) Returns the point of <em>geom1</em> closest to <em>geom2</em></li>
- <li>ST_FurthestCoordinate(geom, point) Returns the coordinate(s) of <em>geom</em> that are furthest from <em>point</em></li>
- <li>ST_Length(lineString) Returns the length of <em>lineString</em></li>
- <li>ST_LocateAlong(geom, segmentLengthFraction, offsetDistance) Returns a MULTIPOINT containing points along the line segments of <em>geom</em> at <em>segmentLengthFraction</em> and <em>offsetDistance</em></li>
- <li>ST_LongestLine(geom1, geom2) Returns the 2-dimensional longest line-string between the points of <em>geom1</em> and <em>geom2</em></li>
- <li>ST_MaxDistance(geom1, geom2) Computes the maximum distance between <em>geom1</em> and <em>geom2</em></li>
+ <li>ST_ClosestCoordinate(geom, point) Returns the coordinate(s) of <em>geom</em> closest to <em>point</em>
+</li>
+ <li>ST_ClosestPoint(geom1, geom2) Returns the point of <em>geom1</em> closest to <em>geom2</em>
+</li>
+ <li>ST_FurthestCoordinate(geom, point) Returns the coordinate(s) of <em>geom</em> that are furthest from <em>point</em>
+</li>
+ <li>ST_Length(lineString) Returns the length of <em>lineString</em>
+</li>
+ <li>ST_LocateAlong(geom, segmentLengthFraction, offsetDistance) Returns a MULTIPOINT containing points along the line segments of <em>geom</em> at <em>segmentLengthFraction</em> and <em>offsetDistance</em>
+</li>
+ <li>ST_LongestLine(geom1, geom2) Returns the 2-dimensional longest line-string between the points of <em>geom1</em> and <em>geom2</em>
+</li>
+ <li>ST_MaxDistance(geom1, geom2) Computes the maximum distance between <em>geom1</em> and <em>geom2</em>
+</li>
<li>ST_Perimeter(polygon) Returns the length of the perimeter of <em>polygon</em> (which may be a MULTIPOLYGON)</li>
<li>ST_ProjectPoint(point, lineString) Projects <em>point</em> onto a <em>lineString</em> (which may be a MULTILINESTRING)</li>
</ul>
@@ -4104,10 +4338,12 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<p>Not implemented:</p>
<ul>
- <li>ST_LineIntersector(geom1, geom2) Splits <em>geom1</em> (a line-string) with <em>geom2</em></li>
+ <li>ST_LineIntersector(geom1, geom2) Splits <em>geom1</em> (a line-string) with <em>geom2</em>
+</li>
<li>ST_LineMerge(geom) Merges a collection of linear components to form a line-string of maximal length</li>
<li>ST_MakeValid(geom [, preserveGeomDim [, preserveDuplicateCoord [, preserveCoordDim]]]) Makes <em>geom</em> valid</li>
- <li>ST_Polygonize(geom) Creates a MULTIPOLYGON from edges of <em>geom</em></li>
+ <li>ST_Polygonize(geom) Creates a MULTIPOLYGON from edges of <em>geom</em>
+</li>
<li>ST_PrecisionReducer(geom, n) Reduces <em>geom</em>’s precision to <em>n</em> decimal places</li>
<li>ST_RingSideBuffer(geom, distance, bufferCount [, endCapStyle [, doDifference]]) Computes a ring buffer on one side</li>
<li>ST_SideBuffer(geom, distance [, bufferStyle ]) Compute a single buffer on one side</li>
@@ -4119,7 +4355,7 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<h4 id="geometry-projection-functions">Geometry projection functions</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -4136,17 +4372,19 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">ST_Transform(geom, srid)</td>
- <td style="text-align: left">Transforms <em>geom</em> from one coordinate reference system (CRS) to the CRS specified by <em>srid</em></td>
+ <td style="text-align: left">Transforms <em>geom</em> from one coordinate reference system (CRS) to the CRS specified by <em>srid</em>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="trigonometry-functions">Trigonometry functions</h4>
<p>Not implemented:</p>
<ul>
- <li>ST_Azimuth(point1, point2) Return the azimuth of the segment from <em>point1</em> to <em>point2</em></li>
+ <li>ST_Azimuth(point1, point2) Return the azimuth of the segment from <em>point1</em> to <em>point2</em>
+</li>
</ul>
<h4 id="topography-functions">Topography functions</h4>
@@ -4166,7 +4404,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<p>Not implemented:</p>
<ul>
- <li>ST_ConstrainedDelaunay(geom [, flag [, quality ]]) Computes a constrained Delaunay triangulation based on <em>geom</em></li>
+ <li>ST_ConstrainedDelaunay(geom [, flag [, quality ]]) Computes a constrained Delaunay triangulation based on <em>geom</em>
+</li>
<li>ST_Delaunay(geom [, flag [, quality ]]) Computes a Delaunay triangulation based on points</li>
<li>ST_Tessellate(polygon) Tessellates <em>polygon</em> (may be MULTIPOLYGON) with adaptive triangles</li>
</ul>
@@ -4177,7 +4416,8 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<ul>
<li>ST_Accum(geom) Accumulates <em>geom</em> into a GEOMETRYCOLLECTION (or MULTIPOINT, MULTILINESTRING or MULTIPOLYGON if possible)</li>
- <li>ST_Collect(geom) Synonym for <code class="highlighter-rouge">ST_Accum</code></li>
+ <li>ST_Collect(geom) Synonym for <code class="highlighter-rouge">ST_Accum</code>
+</li>
<li>ST_Union(geom) Computes the union of geometries</li>
</ul>
@@ -4186,13 +4426,15 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<p>In the following:</p>
<ul>
- <li><em>jsonValue</em> is a character string containing a JSON value;</li>
- <li><em>path</em> is a character string containing a JSON path expression; mode flag <code class="highlighter-rouge">strict</code> or <code class="highlighter-rouge">lax</code> should be specified in the beginning of <em>path</em>.</li>
+ <li>
+<em>jsonValue</em> is a character string containing a JSON value;</li>
+ <li>
+<em>path</em> is a character string containing a JSON path expression; mode flag <code class="highlighter-rouge">strict</code> or <code class="highlighter-rouge">lax</code> should be specified in the beginning of <em>path</em>.</li>
</ul>
<h4 id="query-functions">Query Functions</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -4202,18 +4444,20 @@ implements the OpenGIS Simple Features Implementation Specification for SQL,
<tbody>
<tr>
<td style="text-align: left">JSON_EXISTS(jsonValue, path [ { TRUE | FALSE | UNKNOWN | ERROR } ON ERROR ] )</td>
- <td style="text-align: left">Whether a <em>jsonValue</em> satisfies a search criterion described using JSON path expression <em>path</em></td>
+ <td style="text-align: left">Whether a <em>jsonValue</em> satisfies a search criterion described using JSON path expression <em>path</em>
+</td>
</tr>
<tr>
<td style="text-align: left">JSON_VALUE(jsonValue, path [ RETURNING type ] [ { ERROR | NULL | DEFAULT expr } ON EMPTY ] [ { ERROR | NULL | DEFAULT expr } ON ERROR ] )</td>
- <td style="text-align: left">Extract an SQL scalar from a <em>jsonValue</em> using JSON path expression <em>path</em></td>
+ <td style="text-align: left">Extract an SQL scalar from a <em>jsonValue</em> using JSON path expression <em>path</em>
+</td>
</tr>
<tr>
<td style="text-align: left">JSON_QUERY(jsonValue, path [ { WITHOUT [ ARRAY ] | WITH [ CONDITIONAL | UNCONDITIONAL ] [ ARRAY ] } WRAPPER ] [ { ERROR | NULL | EMPTY ARRAY | EMPTY OBJECT } ON EMPTY ] [ { ERROR | NULL | EMPTY ARRAY | EMPTY OBJECT } ON ERROR ] )</td>
<td style="text-align: left">Extract a JSON object or JSON array from <em>jsonValue</em> using the <em>path</em> JSON path expression</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Note:</p>
@@ -4232,7 +4476,7 @@ behaviors.</li>
<p>Comparison:</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator</th>
@@ -4267,7 +4511,7 @@ behaviors.</li>
<td style="text-align: left">[ “hi” ]</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
@@ -4277,7 +4521,7 @@ behaviors.</li>
<h4 id="constructor-functions">Constructor Functions</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -4302,7 +4546,7 @@ behaviors.</li>
<td style="text-align: left">Aggregate function to construct a JSON array using a value</td>
</tr>
</tbody>
-</table>
+</table></div>
<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">jsonKeyVal</span><span class="p">:</span>
<span class="p">[</span> <span class="k">KEY</span> <span class="p">]</span> <span class="n">name</span> <span class="n">VALUE</span> <span class="n">value</span> <span class="p">[</span> <span class="n">FORMAT</span> <span class="n">JSON</span> <span class="p">]</span>
@@ -4321,7 +4565,8 @@ behaviors.</li>
<li>The flag <code class="highlighter-rouge">FORMAT JSON</code> indicates the value is formatted as JSON
character string. When <code class="highlighter-rouge">FORMAT JSON</code> is used, the value should be
de-parse from JSON character string to a SQL structured value.</li>
- <li><code class="highlighter-rouge">ON NULL</code> clause defines how the JSON output represents null
+ <li>
+<code class="highlighter-rouge">ON NULL</code> clause defines how the JSON output represents null
values. The default null behavior of <code class="highlighter-rouge">JSON_OBJECT</code> and
<code class="highlighter-rouge">JSON_OBJECTAGG</code> is <code class="highlighter-rouge">NULL ON NULL</code>, and for <code class="highlighter-rouge">JSON_ARRAY</code> and
<code class="highlighter-rouge">JSON_ARRAYAGG</code> it is <code class="highlighter-rouge">ABSENT ON NULL</code>.</li>
@@ -4331,7 +4576,7 @@ input rows into the specified order before performing aggregation.</li>
<h4 id="comparison-operators-1">Comparison Operators</h4>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Operator syntax</th>
@@ -4372,7 +4617,7 @@ input rows into the specified order before performing aggregation.</li>
<td style="text-align: left">Whether <em>jsonValue</em> is not a JSON array</td>
</tr>
</tbody>
-</table>
+</table></div>
<h3 id="dialect-specific-operators">Dialect-specific Operators</h3>
@@ -4397,7 +4642,7 @@ connect string parameter.</p>
<p>One operator name may correspond to multiple SQL dialects, but with different
semantics.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -4409,22 +4654,26 @@ semantics.</p>
<tr>
<td style="text-align: left">p</td>
<td style="text-align: left">expr :: type</td>
- <td style="text-align: left">Casts <em>expr</em> to <em>type</em></td>
+ <td style="text-align: left">Casts <em>expr</em> to <em>type</em>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">ARRAY_CONCAT(array [, array ]*)</td>
- <td style="text-align: left">Concatenates one or more arrays. If any input argument is <code class="highlighter-rouge">NULL</code> the function returns <code class="highlighter-rouge">NULL</code></td>
+ <td style="text-align: left">Concatenates one or more arrays. If any input argument is <code class="highlighter-rouge">NULL</code> the function returns <code class="highlighter-rouge">NULL</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">ARRAY_LENGTH(array)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">CARDINALITY</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">CARDINALITY</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">ARRAY_REVERSE(array)</td>
- <td style="text-align: left">Reverses elements of <em>array</em></td>
+ <td style="text-align: left">Reverses elements of <em>array</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -4434,7 +4683,8 @@ semantics.</p>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">COSH(numeric)</td>
- <td style="text-align: left">Returns the hyperbolic cosine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the hyperbolic cosine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -4454,12 +4704,14 @@ semantics.</p>
<tr>
<td style="text-align: left">p</td>
<td style="text-align: left">CONVERT_TIMEZONE(tz1, tz2, datetime)</td>
- <td style="text-align: left">Converts the timezone of <em>datetime</em> from <em>tz1</em> to <em>tz2</em></td>
+ <td style="text-align: left">Converts the timezone of <em>datetime</em> from <em>tz1</em> to <em>tz2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">CURRENT_DATETIME([timezone])</td>
- <td style="text-align: left">Returns the current time as a TIMESTAMP from <em>timezone</em></td>
+ <td style="text-align: left">Returns the current time as a TIMESTAMP from <em>timezone</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
@@ -4469,7 +4721,8 @@ semantics.</p>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">DATE(string)</td>
- <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CAST(string AS DATE)</code></td>
+ <td style="text-align: left">Equivalent to <code class="highlighter-rouge">CAST(string AS DATE)</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
@@ -4524,27 +4777,32 @@ semantics.</p>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">JSON_TYPE(jsonValue)</td>
- <td style="text-align: left">Returns a string value indicating the type of <em>jsonValue</em></td>
+ <td style="text-align: left">Returns a string value indicating the type of <em>jsonValue</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">JSON_DEPTH(jsonValue)</td>
- <td style="text-align: left">Returns an integer value indicating the depth of <em>jsonValue</em></td>
+ <td style="text-align: left">Returns an integer value indicating the depth of <em>jsonValue</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">JSON_PRETTY(jsonValue)</td>
- <td style="text-align: left">Returns a pretty-printing of <em>jsonValue</em></td>
+ <td style="text-align: left">Returns a pretty-printing of <em>jsonValue</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">JSON_LENGTH(jsonValue [, path ])</td>
- <td style="text-align: left">Returns a integer indicating the length of <em>jsonValue</em></td>
+ <td style="text-align: left">Returns a integer indicating the length of <em>jsonValue</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">JSON_KEYS(jsonValue [, path ])</td>
- <td style="text-align: left">Returns a string indicating the keys of a JSON <em>jsonValue</em></td>
+ <td style="text-align: left">Returns a string indicating the keys of a JSON <em>jsonValue</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
@@ -4554,7 +4812,8 @@ semantics.</p>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">JSON_STORAGE_SIZE(jsonValue)</td>
- <td style="text-align: left">Returns the number of bytes used to store the binary representation of <em>jsonValue</em></td>
+ <td style="text-align: left">Returns the number of bytes used to store the binary representation of <em>jsonValue</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o</td>
@@ -4564,7 +4823,8 @@ semantics.</p>
<tr>
<td style="text-align: left">m p</td>
<td style="text-align: left">LEFT(string, length)</td>
- <td style="text-align: left">Returns the leftmost <em>length</em> characters from the <em>string</em></td>
+ <td style="text-align: left">Returns the leftmost <em>length</em> characters from the <em>string</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
@@ -4594,7 +4854,8 @@ semantics.</p>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">NVL(value1, value2)</td>
- <td style="text-align: left">Returns <em>value1</em> if <em>value1</em> is not null, otherwise <em>value2</em></td>
+ <td style="text-align: left">Returns <em>value1</em> if <em>value1</em> is not null, otherwise <em>value2</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m o</td>
@@ -4614,7 +4875,8 @@ semantics.</p>
<tr>
<td style="text-align: left">m p</td>
<td style="text-align: left">RIGHT(string, length)</td>
- <td style="text-align: left">Returns the rightmost <em>length</em> characters from the <em>string</em></td>
+ <td style="text-align: left">Returns the rightmost <em>length</em> characters from the <em>string</em>
+</td>
</tr>
<tr>
<td style="text-align: left">h s</td>
@@ -4639,7 +4901,8 @@ semantics.</p>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">SINH(numeric)</td>
- <td style="text-align: left">Returns the hyperbolic sine of <em>numeric</em></td>
+ <td style="text-align: left">Returns the hyperbolic sine of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">m o p</td>
@@ -4664,7 +4927,8 @@ semantics.</p>
<tr>
<td style="text-align: left">o</td>
<td style="text-align: left">TANH(numeric)</td>
- <td style="text-align: left">Returns the hyperbolic tangent of <em>numeric</em></td>
+ <td style="text-align: left">Returns the hyperbolic tangent of <em>numeric</em>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
@@ -4684,12 +4948,14 @@ semantics.</p>
<tr>
<td style="text-align: left">o p</td>
<td style="text-align: left">TO_DATE(string, format)</td>
- <td style="text-align: left">Converts <em>string</em> to a date using the format <em>format</em></td>
+ <td style="text-align: left">Converts <em>string</em> to a date using the format <em>format</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o p</td>
<td style="text-align: left">TO_TIMESTAMP(string, format)</td>
- <td style="text-align: left">Converts <em>string</em> to a timestamp using the format <em>format</em></td>
+ <td style="text-align: left">Converts <em>string</em> to a timestamp using the format <em>format</em>
+</td>
</tr>
<tr>
<td style="text-align: left">o p</td>
@@ -4722,14 +4988,17 @@ semantics.</p>
<td style="text-align: left">Applies XSLT transform <em>xslt</em> to XML string <em>xml</em> and returns the result</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Note:</p>
<ul>
- <li><code class="highlighter-rouge">JSON_TYPE</code> / <code class="highlighter-rouge">JSON_DEPTH</code> / <code class="highlighter-rouge">JSON_PRETTY</code> / <code class="highlighter-rouge">JSON_STORAGE_SIZE</code> return null if the argument is null</li>
- <li><code class="highlighter-rouge">JSON_LENGTH</code> / <code class="highlighter-rouge">JSON_KEYS</code> / <code class="highlighter-rouge">JSON_REMOVE</code> return null if the first argument is null</li>
- <li><code class="highlighter-rouge">JSON_TYPE</code> generally returns an upper-case string flag indicating the type of the JSON input. Currently supported supported type flags are:
+ <li>
+<code class="highlighter-rouge">JSON_TYPE</code> / <code class="highlighter-rouge">JSON_DEPTH</code> / <code class="highlighter-rouge">JSON_PRETTY</code> / <code class="highlighter-rouge">JSON_STORAGE_SIZE</code> return null if the argument is null</li>
+ <li>
+<code class="highlighter-rouge">JSON_LENGTH</code> / <code class="highlighter-rouge">JSON_KEYS</code> / <code class="highlighter-rouge">JSON_REMOVE</code> return null if the first argument is null</li>
+ <li>
+<code class="highlighter-rouge">JSON_TYPE</code> generally returns an upper-case string flag indicating the type of the JSON input. Currently supported supported type flags are:
<ul>
<li>INTEGER</li>
<li>STRING</li>
@@ -4743,14 +5012,16 @@ semantics.</p>
<li>NULL</li>
</ul>
</li>
- <li><code class="highlighter-rouge">JSON_DEPTH</code> defines a JSON value’s depth as follows:
+ <li>
+<code class="highlighter-rouge">JSON_DEPTH</code> defines a JSON value’s depth as follows:
<ul>
<li>An empty array, empty object, or scalar value has depth 1;</li>
<li>A non-empty array containing only elements of depth 1 or non-empty object containing only member values of depth 1 has depth 2;</li>
<li>Otherwise, a JSON document has depth greater than 2.</li>
</ul>
</li>
- <li><code class="highlighter-rouge">JSON_LENGTH</code> defines a JSON value’s length as follows:
+ <li>
+<code class="highlighter-rouge">JSON_LENGTH</code> defines a JSON value’s length as follows:
<ul>
<li>A scalar value has length 1;</li>
<li>The length of array or object is the number of elements is contains.</li>
@@ -4760,7 +5031,7 @@ semantics.</p>
<p>Dialect-specific aggregate functions.</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">C</th>
@@ -4782,40 +5053,47 @@ semantics.</p>
<tr>
<td style="text-align: left">p</td>
<td style="text-align: left">BOOL_AND(condition)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">EVERY</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">EVERY</code>
+</td>
</tr>
<tr>
<td style="text-align: left">p</td>
<td style="text-align: left">BOOL_OR(condition)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">SOME</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">SOME</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">COUNTIF(condition)</td>
- <td style="text-align: left">Returns the number of rows for which <em>condition</em> is TRUE; equivalent to <code class="highlighter-rouge">COUNT(*) FILTER (WHERE condition)</code></td>
+ <td style="text-align: left">Returns the number of rows for which <em>condition</em> is TRUE; equivalent to <code class="highlighter-rouge">COUNT(*) FILTER (WHERE condition)</code>
+</td>
</tr>
<tr>
<td style="text-align: left">m</td>
<td style="text-align: left">GROUP_CONCAT( [ ALL | DISTINCT ] value [, value ]* [ ORDER BY orderItem [, orderItem ]* ] [ SEPARATOR separator ] )</td>
- <td style="text-align: left">MySQL-specific variant of <code class="highlighter-rouge">LISTAGG</code></td>
+ <td style="text-align: left">MySQL-specific variant of <code class="highlighter-rouge">LISTAGG</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">LOGICAL_AND(condition)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">EVERY</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">EVERY</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b</td>
<td style="text-align: left">LOGICAL_OR(condition)</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">SOME</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">SOME</code>
+</td>
</tr>
<tr>
<td style="text-align: left">b p</td>
<td style="text-align: left">STRING_AGG( [ ALL | DISTINCT ] value [, separator] [ ORDER BY orderItem [, orderItem ]* ] )</td>
- <td style="text-align: left">Synonym for <code class="highlighter-rouge">LISTAGG</code></td>
+ <td style="text-align: left">Synonym for <code class="highlighter-rouge">LISTAGG</code>
+</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Usage Examples:</p>
@@ -4832,24 +5110,24 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
</tr>
</thead>
<tbody>
<tr>
- <td>OBJECT</td>
- <td>ARRAY</td>
- <td>INTEGER</td>
- <td>BOOLEAN</td>
+ <td style="text-align: center">OBJECT</td>
+ <td style="text-align: center">ARRAY</td>
+ <td style="text-align: center">INTEGER</td>
+ <td style="text-align: center">BOOLEAN</td>
</tr>
</tbody>
-</table>
+</table></div>
<h5 id="json_depth-example">JSON_DEPTH example</h5>
@@ -4864,24 +5142,24 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
</tr>
</thead>
<tbody>
<tr>
- <td>3</td>
- <td>2</td>
- <td>1</td>
- <td>1</td>
+ <td style="text-align: center">3</td>
+ <td style="text-align: center">2</td>
+ <td style="text-align: center">1</td>
+ <td style="text-align: center">1</td>
</tr>
</tbody>
-</table>
+</table></div>
<h5 id="json_length-example">JSON_LENGTH example</h5>
@@ -4896,24 +5174,24 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
</tr>
</thead>
<tbody>
<tr>
- <td>1</td>
- <td>2</td>
- <td>1</td>
- <td>1</td>
+ <td style="text-align: center">1</td>
+ <td style="text-align: center">2</td>
+ <td style="text-align: center">1</td>
+ <td style="text-align: center">1</td>
</tr>
</tbody>
-</table>
+</table></div>
<h5 id="json_keys-example">JSON_KEYS example</h5>
@@ -4929,26 +5207,26 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
- <th>c5</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
+ <th style="text-align: center">c5</th>
</tr>
</thead>
<tbody>
<tr>
- <td>[“a”, “b”]</td>
- <td>NULL</td>
- <td>[“c”]</td>
- <td>NULL</td>
- <td>NULL</td>
+ <td style="text-align: center">[“a”, “b”]</td>
+ <td style="text-align: center">NULL</td>
+ <td style="text-align: center">[“c”]</td>
+ <td style="text-align: center">NULL</td>
+ <td style="text-align: center">NULL</td>
</tr>
</tbody>
-</table>
+</table></div>
<h5 id="json_remove-example">JSON_REMOVE example</h5>
@@ -4960,18 +5238,18 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
+ <th style="text-align: center">c1</th>
</tr>
</thead>
<tbody>
<tr>
- <td>[“a”, “d”]</td>
+ <td style="text-align: center">[“a”, “d”]</td>
</tr>
</tbody>
-</table>
+</table></div>
<h5 id="json_storage_size-example">JSON_STORAGE_SIZE example</h5>
@@ -4986,24 +5264,24 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
</tr>
</thead>
<tbody>
<tr>
- <td>29</td>
- <td>35</td>
- <td>37</td>
- <td>36</td>
+ <td style="text-align: center">29</td>
+ <td style="text-align: center">35</td>
+ <td style="text-align: center">37</td>
+ <td style="text-align: center">36</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="decode-example">DECODE example</h4>
@@ -5018,26 +5296,26 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
- <th>c5</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
+ <th style="text-align: center">c5</th>
</tr>
</thead>
<tbody>
<tr>
- <td>aa</td>
- <td>bb</td>
- <td>cc</td>
- <td>dd</td>
- <td>ee</td>
+ <td style="text-align: center">aa</td>
+ <td style="text-align: center">bb</td>
+ <td style="text-align: center">cc</td>
+ <td style="text-align: center">dd</td>
+ <td style="text-align: center">ee</td>
</tr>
</tbody>
-</table>
+</table></div>
<h4 id="translate-example">TRANSLATE example</h4>
@@ -5051,24 +5329,24 @@ semantics.</p>
<p>Result</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
- <th>c1</th>
- <th>c2</th>
- <th>c3</th>
- <th>c4</th>
+ <th style="text-align: center">c1</th>
+ <th style="text-align: center">c2</th>
+ <th style="text-align: center">c3</th>
+ <th style="text-align: center">c4</th>
</tr>
</thead>
<tbody>
<tr>
- <td>Aa_Bb_CcD_d</td>
- <td>Aa_Bb_CcD_d</td>
- <td>Aa_Bb_CcD_d</td>
- <td>Aa_Bb_CcD_d</td>
+ <td style="text-align: center">Aa_Bb_CcD_d</td>
+ <td style="text-align: center">Aa_Bb_CcD_d</td>
+ <td style="text-align: center">Aa_Bb_CcD_d</td>
+ <td style="text-align: center">Aa_Bb_CcD_d</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>Not implemented:</p>
@@ -5185,14 +5463,20 @@ keyword for any optional arguments.
Here are some examples:</p>
<ul>
- <li><code class="highlighter-rouge">f(1, 2, 3, 4, 5)</code> provides a value to each parameter, in order;</li>
- <li><code class="highlighter-rouge">f(1, 2, 3, 4)</code> omits <code class="highlighter-rouge">e</code>, which gets its default value, <code class="highlighter-rouge">NULL</code>;</li>
- <li><code class="highlighter-rouge">f(1, DEFAULT, 3)</code> omits <code class="highlighter-rouge">d</code> and <code class="highlighter-rouge">e</code>,
+ <li>
+<code class="highlighter-rouge">f(1, 2, 3, 4, 5)</code> provides a value to each parameter, in order;</li>
+ <li>
+<code class="highlighter-rouge">f(1, 2, 3, 4)</code> omits <code class="highlighter-rouge">e</code>, which gets its default value, <code class="highlighter-rouge">NULL</code>;</li>
+ <li>
+<code class="highlighter-rouge">f(1, DEFAULT, 3)</code> omits <code class="highlighter-rouge">d</code> and <code class="highlighter-rouge">e</code>,
and specifies to use the default value of <code class="highlighter-rouge">b</code>;</li>
- <li><code class="highlighter-rouge">f(1, DEFAULT, 3, DEFAULT, DEFAULT)</code> has the same effect as the previous
+ <li>
+<code class="highlighter-rouge">f(1, DEFAULT, 3, DEFAULT, DEFAULT)</code> has the same effect as the previous
example;</li>
- <li><code class="highlighter-rouge">f(1, 2)</code> is not legal, because <code class="highlighter-rouge">c</code> is not optional;</li>
- <li><code class="highlighter-rouge">f(1, 2, DEFAULT, 4)</code> is not legal, because <code class="highlighter-rouge">c</code> is not optional.</li>
+ <li>
+<code class="highlighter-rouge">f(1, 2)</code> is not legal, because <code class="highlighter-rouge">c</code> is not optional;</li>
+ <li>
+<code class="highlighter-rouge">f(1, 2, DEFAULT, 4)</code> is not legal, because <code class="highlighter-rouge">c</code> is not optional.</li>
</ul>
<p>You can specify arguments by name using the <code class="highlighter-rouge">=></code> syntax.
@@ -5202,8 +5486,10 @@ and you need to provide a value for every parameter which is not optional.
Here are some examples:</p>
<ul>
- <li><code class="highlighter-rouge">f(c => 3, d => 1, a => 0)</code> is equivalent to <code class="highlighter-rouge">f(0, NULL, 3, 1, NULL)</code>;</li>
- <li><code class="highlighter-rouge">f(c => 3, d => 1)</code> is not legal, because you have not specified a value for
+ <li>
+<code class="highlighter-rouge">f(c => 3, d => 1, a => 0)</code> is equivalent to <code class="highlighter-rouge">f(0, NULL, 3, 1, NULL)</code>;</li>
+ <li>
+<code class="highlighter-rouge">f(c => 3, d => 1)</code> is not legal, because you have not specified a value for
<code class="highlighter-rouge">a</code> and <code class="highlighter-rouge">a</code> is not optional.</li>
</ul>
@@ -5270,7 +5556,8 @@ It would be very flexible to profile the resource with hints per query (not the
<ul>
<li>The parser support for the syntax above;</li>
- <li><code class="highlighter-rouge">RelHint</code> to represent a hint item;</li>
+ <li>
+<code class="highlighter-rouge">RelHint</code> to represent a hint item;</li>
<li>Mechanism to propagate the hints, during sql-to-rel conversion and planner planning.</li>
</ul>
@@ -5817,11 +6104,11 @@ instantiated. Each object can hold different values.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/spatial.html b/docs/spatial.html
index 0924370..65c69ca 100644
--- a/docs/spatial.html
+++ b/docs/spatial.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Spatial</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -105,8 +106,10 @@ that represents objects defined in a geometric space.</p>
<ul>
<li>A <a href="reference.html#data-types">GEOMETRY</a> data type and
<a href="reference.html#spatial-types">sub-types</a> including <code class="highlighter-rouge">POINT</code>, <code class="highlighter-rouge">LINESTRING</code>
-and <code class="highlighter-rouge">POLYGON</code></li>
- <li><a href="reference.html#spatial-functions">Spatial functions</a> (prefixed <code class="highlighter-rouge">ST_</code>;
+and <code class="highlighter-rouge">POLYGON</code>
+</li>
+ <li>
+<a href="reference.html#spatial-functions">Spatial functions</a> (prefixed <code class="highlighter-rouge">ST_</code>;
we have implemented about 35 of the 150 in the OpenGIS specification)</li>
</ul>
@@ -182,7 +185,7 @@ are very fast because the table is sorted on <code class="highlighter-rouge">h</
<p>Here is the full set of transformations:</p>
-<table>
+<div class="scroll-table-style"><table>
<thead>
<tr>
<th style="text-align: left">Description</th>
@@ -191,27 +194,28 @@ are very fast because the table is sorted on <code class="highlighter-rouge">h</
</thead>
<tbody>
<tr>
- <td style="text-align: left">Test whether a constant rectangle (X, X2, Y, Y2) contains a point (a, b)<br /><br />Rewrite to use Hilbert index</td>
- <td>ST_Contains(ST_Rectangle(X, X2, Y, Y2), ST_Point(a, b)))<br /><br />h BETWEEN C1 AND C2<br />OR …<br />OR h BETWEEN C<sub>2k</sub> AND C<sub>2k+1</sub></td>
+ <td style="text-align: left">Test whether a constant rectangle (X, X2, Y, Y2) contains a point (a, b)<br><br>Rewrite to use Hilbert index</td>
+ <td>ST_Contains(ST_Rectangle(X, X2, Y, Y2), ST_Point(a, b)))<br><br>h BETWEEN C1 AND C2<br>OR …<br>OR h BETWEEN C<sub>2k</sub> AND C<sub>2k+1</sub>
+</td>
</tr>
<tr>
- <td style="text-align: left">Test whether a constant geometry G contains a point (a, b)<br /><br />Rewrite to use bounding box of constant geometry, which is also constant, then rewrite to Hilbert range(s) as above</td>
- <td>ST_Contains(ST_Envelope(G), ST_Point(a, b))<br /><br />ST_Contains(ST_Rectangle(X, X2, Y, Y2), ST_Point(a, b)))</td>
+ <td style="text-align: left">Test whether a constant geometry G contains a point (a, b)<br><br>Rewrite to use bounding box of constant geometry, which is also constant, then rewrite to Hilbert range(s) as above</td>
+ <td>ST_Contains(ST_Envelope(G), ST_Point(a, b))<br><br>ST_Contains(ST_Rectangle(X, X2, Y, Y2), ST_Point(a, b)))</td>
</tr>
<tr>
- <td style="text-align: left">Test whether a point (a, b) is within a buffer around a constant point (X, Y)<br /><br />Special case of previous, because buffer is a constant geometry</td>
+ <td style="text-align: left">Test whether a point (a, b) is within a buffer around a constant point (X, Y)<br><br>Special case of previous, because buffer is a constant geometry</td>
<td>ST_Contains(ST_Buffer(ST_Point(a, b), D), ST_Point(X, Y))</td>
</tr>
<tr>
- <td style="text-align: left">Test whether a point (a, b) is within a constant distance D of a constant point (X, Y)<br /><br />First, convert to buffer, then use previous rewrite for constant geometry</td>
- <td>ST_DWithin(ST_Point(a, b), ST_Point(X, Y), D))<br /><br />ST_Contains(ST_Buffer(ST_Point(X, Y), D), ST_Point(a, b))</td>
+ <td style="text-align: left">Test whether a point (a, b) is within a constant distance D of a constant point (X, Y)<br><br>First, convert to buffer, then use previous rewrite for constant geometry</td>
+ <td>ST_DWithin(ST_Point(a, b), ST_Point(X, Y), D))<br><br>ST_Contains(ST_Buffer(ST_Point(X, Y), D), ST_Point(a, b))</td>
</tr>
<tr>
- <td style="text-align: left">Test whether a constant point (X, Y) is within a constant distance D of a point (a, b)<br /><br />Reverse arguments of call to <code>ST_DWithin</code>, then use previous rewrite</td>
- <td>ST_DWithin(ST_Point(X, Y), ST_Point(a, b), D))<br /><br />ST_Contains(ST_Buffer(ST_Point(X, Y), D), ST_Point(a, b))</td>
+ <td style="text-align: left">Test whether a constant point (X, Y) is within a constant distance D of a point (a, b)<br><br>Reverse arguments of call to <code>ST_DWithin</code>, then use previous rewrite</td>
+ <td>ST_DWithin(ST_Point(X, Y), ST_Point(a, b), D))<br><br>ST_Contains(ST_Buffer(ST_Point(X, Y), D), ST_Point(a, b))</td>
</tr>
</tbody>
-</table>
+</table></div>
<p>In the above, <code class="highlighter-rouge">a</code> and <code class="highlighter-rouge">b</code> are variables, <code class="highlighter-rouge">X</code>, <code class="highlighter-rouge">X2</code>, <code class="highlighter-rouge">Y</code>, <code class="highlighter-rouge">Y2</code>, <code class="highlighter-rouge">D</code> and <code class="highlighter-rouge">G</code> are
constants.</p>
@@ -519,11 +523,11 @@ when the specification wasn’t clear. Thank you to these awesome projects.</p>
<img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
</div>
<div id="copyright">
- <p>The contents of this website are Copyright © 2021
+ <p>The contents of this website are Copyright © 2022
<a href="https://www.apache.org/">Apache Software Foundation</a>
under the terms of
the <a href="https://www.apache.org/licenses/">
- Apache License v2</a>. Apache Calcite and its logo are
+ Apache License v2</a>. Apache Calcite and its logo are
trademarks of the Apache Software Foundation.</p>
</div>
</footer>
diff --git a/docs/stream.html b/docs/stream.html
index 58b1058..c18835f 100644
--- a/docs/stream.html
+++ b/docs/stream.html
@@ -1,6 +1,7 @@
<!DOCTYPE HTML>
<html lang="en-US">
<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta charset="UTF-8">
<title>Streaming</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
@@ -102,7 +103,8 @@ streaming queries.</p>
<li><a href="#joining-streams-to-streams" id="markdown-toc-joining-streams-to-streams">Joining streams to streams</a></li>
<li><a href="#dml" id="markdown-toc-dml">DML</a></li>
<li><a href="#punctuation" id="markdown-toc-punctuation">Punctuation</a></li>
- <li><a href="#state-of-the-stream" id="markdown-toc-state-of-the-stream">State of the stream</a> <ul>
+ <li>
+<a href="#state-of-the-stream" id="markdown-toc-state-of-the-stream">State of the stream</a> <ul>
<li><a href="#implemented" id="markdown-toc-implemented">Implemented</a></li>
<li><a href="#not-implemented" id="markdown-toc-not-implemented">Not implemented</a></li>
<li><a href="#to-do-in-this-document" id="markdown-toc-to-do-in-this-document">To do in this document</a></li>
@@ -146,9 +148,12 @@ standard SQL.</p>
<p>Our streaming SQL examples use the following schema:</p>
<ul>
- <li><code class="highlighter-rouge">Orders (rowtime, productId, orderId, units)</code> - a stream and a table</li>
- <li><code class="highlighter-rouge">Products (rowtime, productId, name)</code> - a table</li>
- <li><code class="highlighter-rouge">Shipments (rowtime, orderId)</code> - a stream</li>
+ <li>
+<code class="highlighter-rouge">Orders (rowtime, productId, orderId, units)</code> - a stream and a table</li>
+ <li>
+<code class="highlighter-rouge">Products (rowtime, productId, name)</code> - a table</li>
+ <li>
+<code class="highlighter-rouge">Shipments (rowtime, orderId)</code> - a stream</li>
</ul>
<h2 id="a-simple-query">A simple query</h2>
@@ -271,7 +276,7 @@ differences are:</p>
<p>and the following diagram shows the kinds of query in which to use them:</p>
-<p><img src="/img/window-types.png" alt="Window types" /></p>
+<p><img src="/img/window-types.png" alt="Window types"></p>
<p>First we’ll look a <em>tumbling window</em>, which is defined by a streaming
<code class="highlighter-rouge">GROUP BY</code>. Here is an example:</p>
@@ -608,7 +613,7 @@ occurs in what I call the “pie chart problem”. Imagine that you need to
write a web page with a chart, like the following, that summarizes the
number of orders for each product over the last hour.</p>
-<p><img src="/img/pie-chart.png" alt="Pie chart" /></p>
+<p><img src="/img/pie-chart.png" alt="Pie chart"></p>
<p>But the <code class="highlighter-rouge">Orders</code> stream only contains a few records, not an hour’s summary.
We need to run a relational query on the history of the stream:</p>
@@ -974,8 +979,10 @@ such as SamzaSQL [<a href="#ref3">3</a>] [<a href="#ref4">4</a>].</p>
<h2 id="implemented">Implemented</h2>
<ul>
- <li>Streaming <code class="highlighter-rouge">SELECT</code>, <code class="highlighter-rouge">WHERE</code>, <code class="highlighter-rouge">GROUP BY</code>, <code class="highlighter-rouge">HAVING</code>, <code class="highlighter-rouge">UNION ALL</code>, <code class="highlighter-rouge">ORDER BY</code></li>
- <li><code class="highlighter-rouge">FLOOR</code> and <code class="highlighter-rouge">CEIL</code> functions</li>
+ <li>Streaming <code class="highlighter-rouge">SELECT</code>, <code class="highlighter-rouge">WHERE</code>, <code class="highlighter-rouge">GROUP BY</code>, <code class="highlighter-rouge">HAVING</code>, <code class="highlighter-rouge">UNION ALL</code>, <code class="highlighter-rouge">ORDER BY</code>
+</li>
+ <li>
+<code class="highlighter-rouge">FLOOR</code> and <code class="highlighter-rouge">CEIL</code> functions</li>
<li>Monotonicity</li>
<li>Streaming <code class="highlighter-rouge">VALUES</code> is disallowed</li>
</ul>
@@ -988,26 +995,32 @@ that the reference implementation supports the feature (including
negative cases) and the TCK tests it.</p>
<ul>
- <li>Stream-to-stream <code class="highlighter-rouge">JOIN</code></li>
- <li>Stream-to-table <code class="highlighter-rouge">JOIN</code></li>
+ <li>Stream-to-stream <code class="highlighter-rouge">JOIN</code>
+</li>
+ <li>Stream-to-table <code class="highlighter-rouge">JOIN</code>
+</li>
<li>Stream on view</li>
<li>Streaming <code class="highlighter-rouge">UNION ALL</code> with <code class="highlighter-rouge">ORDER BY</code> (merge)</li>
<li>Relational query on stream</li>
<li>Streaming windowed aggregation (sliding and cascading windows)</li>
<li>Check that <code class="highlighter-rouge">STREAM</code> in sub-queries and views is ignored</li>
- <li>Check that streaming <code class="highlighter-rouge">ORDER BY</code> cannot have <code class="highlighter-rouge">OFFSET</code> or <code class="highlighter-rouge">LIMIT</code></li>
+ <li>Check that streaming <code class="highlighter-rouge">ORDER BY</code> cannot have <code class="highlighter-rouge">OFFSET</code> or <code class="highlighter-rouge">LIMIT</code>
+</li>
<li>Limited history; at run time, check that there is sufficient history
to run the query.</li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-1096">Quasi-monotonicity</a></li>
- <li><code class="highlighter-rouge">HOP</code> and <code class="highlighter-rouge">TUMBLE</code> (and auxiliary <code class="highlighter-rouge">HOP_START</code>, <code class="highlighter-rouge">HOP_END</code>,
... 2219 lines suppressed ...