blob: 81ebef659c5e728e00b1e29bb01e645f2b2d6807 [file] [log] [blame]
<!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">
<meta name="generator" content="Jekyll v4.2.2">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:300,300italic,400,400italic,700,700italic,900">
<link rel="stylesheet" href="/css/screen.css">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
</head>
<body class="wrap">
<header role="banner">
<div class="grid">
<div class="unit center-on-mobiles">
<h1>
<a href="/">
<span class="sr-only">Apache Calcite</span>
<img src="/img/logo.svg" alt="Calcite Logo">
</a>
</h1>
</div>
<nav class="main-nav">
<ul>
<li class="">
<a href="/">Home</a>
</li>
<li class="">
<a href="/downloads/">Download</a>
</li>
<li class="">
<a href="/community/">Community</a>
</li>
<li class="">
<a href="/develop/">Develop</a>
</li>
<li class="">
<a href="/news/">News</a>
</li>
<li class="current">
<a href="/docs/">Docs</a>
</li>
</ul>
</nav>
</div>
</header>
<section class="docs">
<div class="grid">
<div class="docs-nav-mobile unit whole show-on-mobiles">
<select onchange="if (this.value) window.location.href=this.value">
<option value="">Navigate the docs…</option>
<optgroup label="Overview">
</optgroup>
<optgroup label="Advanced">
</optgroup>
<optgroup label="Avatica">
</optgroup>
<optgroup label="Reference">
</optgroup>
<optgroup label="Meta">
</optgroup>
</select>
</div>
<div class="unit four-fifths">
<article>
<h1>History</h1>
<!--
-->
<p>For a full list of releases, see
<a href="https://github.com/apache/calcite/releases">github</a>.
Downloads are available on the
<a href="/downloads/">downloads page</a>.</p>
<!--
## <a href="https://github.com/apache/calcite/releases/tag/calcite-1.34.0">1.34.0</a> / XXXX-XX-XX
{: #v1-34-0}
This release comes x months after [1.33.0](#v1-33-0),
contains contributions from x contributors, and resolves x issues.
Contributors to this release:
x,
y (release manager),
z.
#### Breaking Changes
{: #breaking-1-34-0}
As of [CALCITE-3870](https://issues.apache.org/jira/browse/CALCITE-3870),
the default value of
[SqlToRelConverter.Config.expand](https://calcite.apache.org/javadocAggregate/org/apache/calcite/sql2rel/SqlToRelConverter.Config.html#isExpand())
is now false, which means that `SqlToRelConverter` handles sub-queries (such
as `IN`, `EXISTS`, and scalar sub-queries) by converting them to `RexSubQuery`
expressions, rather than expanding them. To expand these `RexSubQuery`
expressions, the `SubQueryRemoveRule` rule must be enabled in the planning
phase.
To keep the old behavior (which is discouraged but still supported),
initialize `SqlToRelConverter` using
`SqlToRelConverter.config().withExpandDeprecated(true)` as the value for the `config`
argument.
Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 18;
Guava versions 16.0.1 to 31.1-jre;
other software versions as specified in gradle.properties.
#### New features
{: #new-features-1-34-0}
#### Dependency version upgrade
{: #dependency-1-34-0}
#### Bug-fixes, API changes and minor enhancements
{: #fixes-1-34-0}
#### Build and test suite
{: #build-1-34-0}
#### Web site and documentation
{: #site-1-34-0}
-->
<h2 id="v1-33-0">
<a href="https://github.com/apache/calcite/releases/tag/calcite-1.33.0">1.33.0</a> / 2023-02-06</h2>
<p>This release comes five months after <a href="#v1-32-0">1.32.0</a>,
contains contributions from 33 contributors, and resolves 107 issues.</p>
<p>Among others, it is worth highlighting the following improvements:</p>
<ul>
<li>Many improvements to the BigQuery dialect as part of [<a href="https://issues.apache.org/jira/browse/CALCITE-5180">CALCITE-5180</a>]
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5269">CALCITE-5269</a>]
Implement BigQuery <code class="language-plaintext highlighter-rouge">TIME_TRUNC</code> and <code class="language-plaintext highlighter-rouge">TIMESTAMP_TRUNC</code> functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5360">CALCITE-5360</a>]
Implement <code class="language-plaintext highlighter-rouge">TIMESTAMP_ADD</code> function (compatible with BigQuery)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5389">CALCITE-5389</a>]
Add <code class="language-plaintext highlighter-rouge">STARTS_WITH</code> and <code class="language-plaintext highlighter-rouge">ENDS_WITH</code> functions (for <code class="language-plaintext highlighter-rouge">BIG_QUERY</code> compatibility)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5404">CALCITE-5404</a>]
Implement BigQuery’s <code class="language-plaintext highlighter-rouge">POW()</code> and <code class="language-plaintext highlighter-rouge">TRUNC()</code> math functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5423">CALCITE-5423</a>]
Implement <code class="language-plaintext highlighter-rouge">TIMESTAMP_DIFF</code> function (compatible with BigQuery)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5430">CALCITE-5430</a>]
Implement <code class="language-plaintext highlighter-rouge">IFNULL()</code> for BigQuery dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5432">CALCITE-5432</a>]
Implement BigQuery <code class="language-plaintext highlighter-rouge">TIME_ADD</code>/<code class="language-plaintext highlighter-rouge">TIME_DIFF</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5436">CALCITE-5436</a>]
Implement <code class="language-plaintext highlighter-rouge">DATE_SUB</code>, <code class="language-plaintext highlighter-rouge">TIME_SUB</code>, <code class="language-plaintext highlighter-rouge">TIMESTAMP_SUB</code> (compatible w/ BigQuery)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5447">CALCITE-5447</a>]
Add <code class="language-plaintext highlighter-rouge">DATE_TRUNC</code> for BigQuery</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5105">CALCITE-5105</a>]
Add <code class="language-plaintext highlighter-rouge">MEASURE</code> type and <code class="language-plaintext highlighter-rouge">AGGREGATE</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5155">CALCITE-5155</a>]
Custom time frames</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5280">CALCITE-5280</a>]
Implement geometry aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5314">CALCITE-5314</a>]
Prune empty parts of a query by exploiting stats/metadata</li>
</ul>
<p>Contributors to this release:
Aitozi,
Aleksey Plekhanov,
Alessandro Solimando,
Benchao Li,
Bertil Chapuis,
Christophe Le Saec,
Dmitry Sysolyatin,
Francis Chuang,
Gian Merlino,
Greg Hart,
Hanumath Maduri,
Istvan Toth,
Jake Xie,
James Turton,
Jasmin Trada,
Jess Balint (release manager),
Julian Hyde,
Kevin Risden,
Krisztian Kasa,
Liya Fan,
Mou Wu,
Oliver Lee,
Scott Reynolds,
Sergey Nuyanzin,
Stamatis Zampetakis,
TJ Banghart,
Tanner Clary,
Thomas Rebele,
Tim Nieradzik,
Volodymyr Vysotskyi,
Xurenhe,
Zhengqiang Duan,
Zou Dan.</p>
<h4 id="breaking-1-33-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5293">CALCITE-5293</a>]
Support general set operators in <code class="language-plaintext highlighter-rouge">PruneEmptyRules</code>. The default configuration of <code class="language-plaintext highlighter-rouge">PruneEmptyRules</code> for Set operators has changed: the rules matching scope has increased.</li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 18;
Guava versions 16.0.1 to 31.1-jre;
other software versions as specified in gradle.properties.</p>
<h4 id="new-features-1-33-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2884">CALCITE-2884</a>]
Implement <code class="language-plaintext highlighter-rouge">JSON_INSERT</code>, <code class="language-plaintext highlighter-rouge">JSON_REPLACE</code>, <code class="language-plaintext highlighter-rouge">JSON_SET</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4186">CALCITE-4186</a>]
Add <code class="language-plaintext highlighter-rouge">ST_CoveredBy</code> spatial function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5105">CALCITE-5105</a>]
Add <code class="language-plaintext highlighter-rouge">MEASURE</code> type and <code class="language-plaintext highlighter-rouge">AGGREGATE</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5127">CALCITE-5127</a>]
Support correlation variables in Project</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5155">CALCITE-5155</a>]
Custom time frames</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5159">CALCITE-5159</a>]
<code class="language-plaintext highlighter-rouge">ARRAY</code> string constructor, and implicit cast from string literal (enabled in PostgreSQL conformance)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5269">CALCITE-5269</a>]
Implement BigQuery <code class="language-plaintext highlighter-rouge">TIME_TRUNC</code> and <code class="language-plaintext highlighter-rouge">TIMESTAMP_TRUNC</code> functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5280">CALCITE-5280</a>]
Implement geometry aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5281">CALCITE-5281</a>]
Implement geometry set returning functions (SRF)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5283">CALCITE-5283</a>]
Add <code class="language-plaintext highlighter-rouge">ARG_MIN</code>, <code class="language-plaintext highlighter-rouge">ARG_MAX</code> (aka <code class="language-plaintext highlighter-rouge">MIN_BY</code>, <code class="language-plaintext highlighter-rouge">MAX_BY</code>) aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5360">CALCITE-5360</a>]
Implement <code class="language-plaintext highlighter-rouge">TIMESTAMP_ADD</code> function (compatible with BigQuery)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5362">CALCITE-5362</a>]
Implement geometry measurement functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5389">CALCITE-5389</a>]
Add <code class="language-plaintext highlighter-rouge">STARTS_WITH</code> and <code class="language-plaintext highlighter-rouge">ENDS_WITH</code> functions (for <code class="language-plaintext highlighter-rouge">BIG_QUERY</code> compatibility)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5393">CALCITE-5393</a>]
<code class="language-plaintext highlighter-rouge">VALUE</code> as an synonym for <code class="language-plaintext highlighter-rouge">VALUES</code> keyword (enabled in MySQL conformance)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5404">CALCITE-5404</a>]
Implement BigQuery’s <code class="language-plaintext highlighter-rouge">POW()</code> and <code class="language-plaintext highlighter-rouge">TRUNC()</code> math functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5423">CALCITE-5423</a>]
Implement <code class="language-plaintext highlighter-rouge">TIMESTAMP_DIFF</code> function (compatible with BigQuery)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5430">CALCITE-5430</a>]
Implement <code class="language-plaintext highlighter-rouge">IFNULL()</code> for BigQuery dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5432">CALCITE-5432</a>]
Implement BigQuery <code class="language-plaintext highlighter-rouge">TIME_ADD</code>/<code class="language-plaintext highlighter-rouge">TIME_DIFF</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5436">CALCITE-5436</a>]
Implement <code class="language-plaintext highlighter-rouge">DATE_SUB</code>, <code class="language-plaintext highlighter-rouge">TIME_SUB</code>, <code class="language-plaintext highlighter-rouge">TIMESTAMP_SUB</code> (compatible w/ BigQuery)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5447">CALCITE-5447</a>]
Add <code class="language-plaintext highlighter-rouge">DATE_TRUNC</code> for BigQuery</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5451">CALCITE-5451</a>]
Implement <code class="language-plaintext highlighter-rouge">LPAD()</code> and <code class="language-plaintext highlighter-rouge">RPAD()</code> functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5495">CALCITE-5495</a>]
Allow <code class="language-plaintext highlighter-rouge">WEEK</code> and <code class="language-plaintext highlighter-rouge">QUARTER</code> in <code class="language-plaintext highlighter-rouge">INTERVAL</code> literals</li>
</ul>
<h4 id="dependency-1-33-0">Dependency version upgrade</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5341">CALCITE-5341</a>]
Upgrade Calcite to Avatica 1.23.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5351">CALCITE-5351</a>]
Bump jackson to 2.13.4 and jackson databind to 2.13.4.2 to avoid CVEs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5356">CALCITE-5356</a>]
Update junit4 to 4.13.2 and junit5 to 5.9.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5374">CALCITE-5374</a>]
Upgrade jackson version to 2.14.0</li>
</ul>
<h4 id="fixes-1-33-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4351">CALCITE-4351</a>]
<code class="language-plaintext highlighter-rouge">RelMdUtil#numDistinctVals</code> always returns 0 for large inputs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4632">CALCITE-4632</a>]
Exception in <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code>: “Cannot convert x to DECIMAL(n, m) due to overflow”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4804">CALCITE-4804</a>]
Support <code class="language-plaintext highlighter-rouge">Snapshot</code> operator serialization and deserialization</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4972">CALCITE-4972</a>]
Subfields of array columns containing structs are not qualified in <code class="language-plaintext highlighter-rouge">getFieldOrigins</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4982">CALCITE-4982</a>]
Do not push ‘cast to not null’ through <code class="language-plaintext highlighter-rouge">Join</code> in <code class="language-plaintext highlighter-rouge">ProjectJoinTransposeRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5141">CALCITE-5141</a>]
Incomplete implicit type conversion for insert values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5209">CALCITE-5209</a>]
Proper sub-query handling if it is used inside select list and group by</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5217">CALCITE-5217</a>]
Implement <code class="language-plaintext highlighter-rouge">unparseSqlIntervalLiteral</code> in the Firebolt dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5230">CALCITE-5230</a>]
Return type of <code class="language-plaintext highlighter-rouge">PERCENTILE_DISC</code> should be the same as sort expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5252">CALCITE-5252</a>]
JDBC adapter sometimes miss parentheses around <code class="language-plaintext highlighter-rouge">SELECT</code> in <code class="language-plaintext highlighter-rouge">WITH_ITEM</code> body</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5253">CALCITE-5253</a>]
<code class="language-plaintext highlighter-rouge">NATURAL</code> join and <code class="language-plaintext highlighter-rouge">USING</code> should fail if join columns are not unique - expression validation partially broken</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5259">CALCITE-5259</a>]
Add <code class="language-plaintext highlighter-rouge">getParameterRowType</code> method to <code class="language-plaintext highlighter-rouge">Planner</code> interface</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5264">CALCITE-5264</a>]
<code class="language-plaintext highlighter-rouge">HintStrategy</code> rule exclusion does not match innermost rels</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5265">CALCITE-5265</a>]
JDBC adapter sometimes adds unnecessary parentheses around <code class="language-plaintext highlighter-rouge">SELECT</code> in <code class="language-plaintext highlighter-rouge">INSERT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5267">CALCITE-5267</a>]
Remove unused variable ‘newCasts’ in <code class="language-plaintext highlighter-rouge">AggregateCaseToFilterRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5276">CALCITE-5276</a>]
Implicitly convert strings to geometries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5286">CALCITE-5286</a>]
Join with parameterized <code class="language-plaintext highlighter-rouge">LIMIT</code> throws <code class="language-plaintext highlighter-rouge">AssertionError</code> “not a literal”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5288">CALCITE-5288</a>]
Expression <code class="language-plaintext highlighter-rouge">(a &gt; 5 and a &lt; 15) or (a &gt; 10 and a &lt; 20)</code> should be simplified to <code class="language-plaintext highlighter-rouge">SEARCH(a, Sarg[(5..20)])</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5291">CALCITE-5291</a>]
Make BigQuery lexical policy case insensitive</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5293">CALCITE-5293</a>]
Support general set operators in <code class="language-plaintext highlighter-rouge">PruneEmptyRules</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5294">CALCITE-5294</a>]
Prune the null-generating side of an outer join if it is empty</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5296">CALCITE-5296</a>]
In a query with <code class="language-plaintext highlighter-rouge">ROLLUP</code>, validator wrongly infers that a column is <code class="language-plaintext highlighter-rouge">NOT NULL</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5297">CALCITE-5297</a>]
Casting dynamic variable twice throws exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5298">CALCITE-5298</a>]
CalciteSystemProperty <code class="language-plaintext highlighter-rouge">calcite.test.dataset</code> path check fails under Java Security Manager</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5299">CALCITE-5299</a>]
JDBC adapter sometimes adds unnecessary parentheses around <code class="language-plaintext highlighter-rouge">SELECT</code> in <code class="language-plaintext highlighter-rouge">WITH</code> body</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5305">CALCITE-5305</a>]
Character literals with C-style escapes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5310">CALCITE-5310</a>]
<code class="language-plaintext highlighter-rouge">JSON_OBJECT</code> in scalar sub-query throws <code class="language-plaintext highlighter-rouge">AssertionError</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5314">CALCITE-5314</a>]
Prune empty parts of a query by exploiting stats/metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5326">CALCITE-5326</a>]
<code class="language-plaintext highlighter-rouge">SqlMerge</code> generate extra bracket on <code class="language-plaintext highlighter-rouge">toSqlString</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5332">CALCITE-5332</a>]
Configuring <code class="language-plaintext highlighter-rouge">PruneEmptyRules</code> is cumbersome</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5336">CALCITE-5336</a>]
Support inferring constants from predicates with <code class="language-plaintext highlighter-rouge">IS NOT DISTINCT FROM</code> operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5337">CALCITE-5337</a>]
<code class="language-plaintext highlighter-rouge">UnionPullUpConstantsRule</code> produces an invalid plan when pulling up constants for nullable fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5339">CALCITE-5339</a>]
Use <code class="language-plaintext highlighter-rouge">Method#getParameterCount</code> rather than <code class="language-plaintext highlighter-rouge">Method#getParameters</code> to get length</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5342">CALCITE-5342</a>]
Refactor SqlFunctions <code class="language-plaintext highlighter-rouge">lastDay</code>, <code class="language-plaintext highlighter-rouge">addMonths</code>, <code class="language-plaintext highlighter-rouge">subtractMonths</code> to use <code class="language-plaintext highlighter-rouge">DateTimeUtils</code> from Avatica</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5348">CALCITE-5348</a>]
When translating <code class="language-plaintext highlighter-rouge">ORDER BY</code> in <code class="language-plaintext highlighter-rouge">OVER</code>, use the session’s default null collation (e.g. <code class="language-plaintext highlighter-rouge">NULLS LAST</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5349">CALCITE-5349</a>]
<code class="language-plaintext highlighter-rouge">RelJson</code> deserialization should support <code class="language-plaintext highlighter-rouge">SqlLibraryOperators</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5355">CALCITE-5355</a>]
Use the Presto SQL dialect for AWS Athena</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5377">CALCITE-5377</a>]
<code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> support Sort with dynamic param</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5383">CALCITE-5383</a>]
Update <code class="language-plaintext highlighter-rouge">CONCAT</code> function to allow <code class="language-plaintext highlighter-rouge">BIG_QUERY</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5385">CALCITE-5385</a>]
Add BigQuery as supported library for implemented functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5388">CALCITE-5388</a>]
<code class="language-plaintext highlighter-rouge">tempList</code> expression inside <code class="language-plaintext highlighter-rouge">EnumerableWindow.getPartitionIterator</code> should be unoptimized</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5391">CALCITE-5391</a>]
<code class="language-plaintext highlighter-rouge">JoinOnUniqueToSemiJoinRule</code> should preserve field names, if possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5392">CALCITE-5392</a>]
Support <code class="language-plaintext highlighter-rouge">Snapshot</code> in <code class="language-plaintext highlighter-rouge">RelMdExpressionLineage</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5394">CALCITE-5394</a>]
<code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> fails when semi-join is under a join node</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5395">CALCITE-5395</a>]
<code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> fails when <code class="language-plaintext highlighter-rouge">SELECT *</code> is under a semi-join node</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5405">CALCITE-5405</a>]
MongoDB: Invalid <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5407">CALCITE-5407</a>]
MongoDB: Invalid <code class="language-plaintext highlighter-rouge">ARRAY</code> conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5408">CALCITE-5408</a>]
Return type of <code class="language-plaintext highlighter-rouge">PERCENTILE_CONT</code> should be the same as sort expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5410">CALCITE-5410</a>]
Assertion error on <code class="language-plaintext highlighter-rouge">PERCENT_REMAINDER</code> operator with <code class="language-plaintext highlighter-rouge">DECIMAL</code> type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5414">CALCITE-5414</a>]
Use <code class="language-plaintext highlighter-rouge">DateTimeUtils</code> to correctly convert between <code class="language-plaintext highlighter-rouge">java.sql</code> types and Unix timestamps</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5424">CALCITE-5424</a>]
Customize handling of literals based on type system</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5439">CALCITE-5439</a>]
Validation of Pivot fails after creating a deep copy of <code class="language-plaintext highlighter-rouge">SqlNode</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5450">CALCITE-5450</a>]
Add support for <code class="language-plaintext highlighter-rouge">WEEK(WEEKDAY)</code> for custom time frames to relevant functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5452">CALCITE-5452</a>]
Add BigQuery <code class="language-plaintext highlighter-rouge">LENGTH()</code> as synonym for <code class="language-plaintext highlighter-rouge">CHAR_LENGTH()</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5454">CALCITE-5454</a>]
Update BigQuery Conformance for <code class="language-plaintext highlighter-rouge">!=</code> and <code class="language-plaintext highlighter-rouge">%</code> operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5466">CALCITE-5466</a>]
Constant condition can’t be reduced after correlate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5471">CALCITE-5471</a>]
<code class="language-plaintext highlighter-rouge">RelSupplier.SqlRelSupplier#apply</code> should use <code class="language-plaintext highlighter-rouge">.project()</code>, not <code class="language-plaintext highlighter-rouge">.rel</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5489">CALCITE-5489</a>]
When creating a <code class="language-plaintext highlighter-rouge">RexCall</code> to <code class="language-plaintext highlighter-rouge">TIMESTAMP_DIFF</code> function, cannot convert a <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> literal to a <code class="language-plaintext highlighter-rouge">org.apache.calcite.avatica.util.TimeUnit</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5491">CALCITE-5491</a>]
Allow <code class="language-plaintext highlighter-rouge">TIME</code> and <code class="language-plaintext highlighter-rouge">DATE</code> to be args for <code class="language-plaintext highlighter-rouge">TIMESTAMPDIFF</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5493">CALCITE-5493</a>]
Time zone tests in <code class="language-plaintext highlighter-rouge">SqlFunctions</code> should pass in <code class="language-plaintext highlighter-rouge">Europe/London</code>
</li>
</ul>
<h4 id="build-1-33-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5197">CALCITE-5197</a>]
Bump gradle to 7.4.2 and add checksum autoupdate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5306">CALCITE-5306</a>]
Remove JDK15/16 EOL non-LTS JDKs in CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5340">CALCITE-5340</a>]
Tests should fail when actual and expected XML reference files are not identical</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5417">CALCITE-5417</a>]
Include Proj4J as an api dependency once the license allows it</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5427">CALCITE-5427</a>]
Provide code quality/coverage metrics with SonarCloud and JaCoCo</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5428">CALCITE-5428</a>]
Reduce minimum Guava version to 16.0.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5433">CALCITE-5433</a>]
Druid tests hang/fail intermittently in CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5474">CALCITE-5474</a>]
Disable Sonar quality gates to avoid checks appearing as failures</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5475">CALCITE-5475</a>]
Improve test coverage accuracy by aggregating modules</li>
</ul>
<h4 id="site-1-33-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5239">CALCITE-5239</a>]
Site: JDBC Adapter’s current limitations is incorrect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5287">CALCITE-5287</a>]
SQL reference page is missing from website</li>
</ul>
<h2 id="v1-32-0">
<a href="https://github.com/apache/calcite/releases/tag/calcite-1.32.0">1.32.0</a> / 2022-09-10</h2>
<p>This release
<a href="https://issues.apache.org/jira/browse/CALCITE-5263">fixes</a>
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2022-39135">CVE-2022-39135</a>,
an XML External Entity (XEE) vulnerability that allows a SQL query to
read the contents of files via the SQL functions <code class="language-plaintext highlighter-rouge">EXISTS_NODE</code>,
<code class="language-plaintext highlighter-rouge">EXTRACT_XML</code>, <code class="language-plaintext highlighter-rouge">XML_TRANSFORM</code> or <code class="language-plaintext highlighter-rouge">EXTRACT_VALUE</code>.</p>
<p>Coming 1 month after <a href="#v1-31-0">1.31.0</a> with 19 issues fixed by 17
contributors, this release also
<a href="https://issues.apache.org/jira/browse/CALCITE-4294">replaces
the ESRI spatial engine with JTS and proj4j</a>, adds
<a href="https://issues.apache.org/jira/browse/CALCITE-5262">65
spatial SQL functions</a> including <code class="language-plaintext highlighter-rouge">ST_Centroid</code>, <code class="language-plaintext highlighter-rouge">ST_Covers</code> and
<code class="language-plaintext highlighter-rouge">ST_GeomFromGeoJSON</code>, adds the
<a href="https://issues.apache.org/jira/browse/CALCITE-5241">CHAR</a>
SQL function, and improves the return type of the
<a href="https://issues.apache.org/jira/browse/CALCITE-4999">ARRAY and
MULTISET</a> functions.</p>
<p>Contributors to this release:
Alessandro Solimando,
Ali Mansour,
Andrei Sereda,
Benchao Li,
Bertil Chapuis,
Chunwei Lei,
David Handermann,
Dmitry Sysolyatin,
Jiajun Bernoulli,
Jing Zhang,
Julian Hyde (release manager),
Lincoln Lee,
Mou Wu,
Ruben Quesada Lopez,
Stamatis Zampetakis,
TJ Banghart,
Zhengqiang Duan.</p>
<p id="breaking-1-32-0">Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 18;
Guava versions 19.0 to 31.1-jre;
other software versions as specified in gradle.properties.</p>
<h4 id="new-features-1-32-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5262">CALCITE-5262</a>]
Add many spatial functions, including support for WKB (well-known binary) and
GeoJSON</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5241">CALCITE-5241</a>]
Implement <code class="language-plaintext highlighter-rouge">CHAR</code> function for MySQL and Spark, also JDBC <code class="language-plaintext highlighter-rouge">{fn CHAR(n)}</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5251">CALCITE-5251</a>]
Support SQL hint for <code class="language-plaintext highlighter-rouge">Snapshot</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4802">CALCITE-4802</a>]
Support <code class="language-plaintext highlighter-rouge">IF(condition, then, else)</code> statements in Babel parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4999">CALCITE-4999</a>]
<code class="language-plaintext highlighter-rouge">ARRAY</code>, <code class="language-plaintext highlighter-rouge">MULTISET</code> functions should return a collection of scalars if a
sub-query returns 1 column</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5126">CALCITE-5126</a>]
Implicit column alias for single-column <code class="language-plaintext highlighter-rouge">UNNEST</code> should work with any
single-column <code class="language-plaintext highlighter-rouge">UNNEST</code>’s input</li>
</ul>
<h4 id="dependency-1-32-0">Dependency version upgrade</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5278">CALCITE-5278</a>]
Upgrade Janino from 3.1.6 to 3.1.8</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5232">CALCITE-5232</a>]
Upgrade protobuf-java from 3.17.1 to 3.21.5</li>
</ul>
<h4 id="fixes-1-32-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5270">CALCITE-5270</a>]
JDBC adapter should not generate <code class="language-plaintext highlighter-rouge">FILTER (WHERE ...)</code> in Firebolt dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5277">CALCITE-5277</a>]
Increase <code class="language-plaintext highlighter-rouge">BINDABLE_CACHE</code> hit rate by making the order of
<code class="language-plaintext highlighter-rouge">EnumerableRelImplementor.stashedParameters</code> deterministic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5263">CALCITE-5263</a>]
SQL functions <code class="language-plaintext highlighter-rouge">EXISTS_NODE</code>, <code class="language-plaintext highlighter-rouge">EXTRACT_XML</code>, <code class="language-plaintext highlighter-rouge">XML_TRANSFORM</code> and <code class="language-plaintext highlighter-rouge">EXTRACT_VALUE</code>
allow user files to be read via XML External Entity (XEE) vulnerability
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2022-39135">CVE-2022-39135</a>
(fixed by using a secure implementation of XML <code class="language-plaintext highlighter-rouge">DocumentBuilder</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4294">CALCITE-4294</a>]
Use JTS and proj4j rather than ESRI as the underlying library for geospatial
(<code class="language-plaintext highlighter-rouge">ST_</code>) functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5247">CALCITE-5247</a>]
<code class="language-plaintext highlighter-rouge">FilterJoinRule</code> cannot simplify left join to inner join for
<code class="language-plaintext highlighter-rouge">WHERE RHS.C1 IS NOT NULL OR RHS.C2 IS NOT NULL</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5243">CALCITE-5243</a>]
<code class="language-plaintext highlighter-rouge">SELECT NULL AS C</code> causes
<code class="language-plaintext highlighter-rouge">NoSuchMethodException: java.sql.ResultSet.getVoid(int)</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5201">CALCITE-5201</a>]
Improve <code class="language-plaintext highlighter-rouge">SemiJoinRule</code> to match <code class="language-plaintext highlighter-rouge">Join</code>’s right input which is unique for join
keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4223">CALCITE-4223</a>]
Metadata handlers for <code class="language-plaintext highlighter-rouge">TableScan</code> should see whether the <code class="language-plaintext highlighter-rouge">RelOptTable</code>
implements the handler</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5178">CALCITE-5178</a>]
Single column with <code class="language-plaintext highlighter-rouge">ROW</code> type generates wrong plan</li>
</ul>
<h4 id="build-1-32-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5274">CALCITE-5274</a>]
In <code class="language-plaintext highlighter-rouge">DiffRepository</code>, use a more secure <code class="language-plaintext highlighter-rouge">DocumentBuilderFactory</code> instance</li>
<li>Add tests for correlated CTEs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5192">CALCITE-5192</a>]
<code class="language-plaintext highlighter-rouge">CodeGenerationBenchmark</code> throws <code class="language-plaintext highlighter-rouge">IllegalStateException</code>
</li>
</ul>
<h4 id="site-1-32-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5275">CALCITE-5275</a>]
Release notes for Calcite 1.32.0</li>
<li>Cosmetic changes to release notes</li>
<li>Remove redundant ‘the’ in javadoc</li>
<li>Change sereda’s role from Committer to PMC</li>
<li>Fix 1.31.0 release date to 2022-08-02 (was 2022-08-01)</li>
<li>Fix checkstyle violation for Calcite 1.31 release note</li>
</ul>
<h2 id="v1-31-0">
<a href="https://github.com/apache/calcite/releases/tag/calcite-1.31.0">1.31.0</a> / 2022-08-02</h2>
<p>This release comes four months after <a href="#v1-30-0">1.30.0</a>,
contains contributions from 28 contributors, and resolves 81 issues.</p>
<p>Among others, it is worth highlighting the following improvements:</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4865">CALCITE-4865</a>]
Allow table functions to be polymorphic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5107">CALCITE-5107</a>]
Support SQL hint for <code class="language-plaintext highlighter-rouge">Filter</code>, <code class="language-plaintext highlighter-rouge">SetOp</code>, <code class="language-plaintext highlighter-rouge">Sort</code>, <code class="language-plaintext highlighter-rouge">Window</code>, <code class="language-plaintext highlighter-rouge">Values</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-35">CALCITE-35</a>]
Support parsing parenthesized joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3890">CALCITE-3890</a>]
Derive <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> filter for the inputs of inner join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5085">CALCITE-5085</a>]
Firebolt dialect implementation</li>
</ul>
<p>Contributors to this release:
Ada Wang,
Andrei Sereda (release manager),
Benchao Li,
Chunwei Lei,
Daniel Henneberger,
Dmitry Sysolyatin,
Francis Chuang,
godfreyhe,
hannerwang,
henneberger,
Jing Zhang,
Julian Hyde,
Konstantin Orlov,
Liya Fan,
Michael Mior,
NobiGo,
onTheQT,
Roman Kondakov,
Ruben Quesada Lopez,
Sergey Nuyanzin,
Stamatis Zampetakis,
Viliam Durina,
Vladimir Ozerov,
Volodymyr Vysotskyi,
Wenrui Meng,
xiejiajun,
xurenhe,
zhangyue.</p>
<h4 id="breaking-1-31-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4936">CALCITE-4936</a>]
Generalize <code class="language-plaintext highlighter-rouge">FilterCalcMergeRule</code>/<code class="language-plaintext highlighter-rouge">ProjectCalcMergeRule</code> to accept any
<code class="language-plaintext highlighter-rouge">Filter</code>/<code class="language-plaintext highlighter-rouge">Project</code>/<code class="language-plaintext highlighter-rouge">Calc</code> operator.
<ul>
<li>Old behavior: The Project operator is transformed into Calc.</li>
<li>New behavior: The Project operator is not transformed and the rule becomes NOOP.</li>
</ul>
</li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 18;
Guava versions 19.0 to 31.1-jre;
other software versions as specified in gradle.properties.</p>
<h4 id="new-features-1-31-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4865">CALCITE-4865</a>]
Allow table functions to be polymorphic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5089">CALCITE-5089</a>]
Allow <code class="language-plaintext highlighter-rouge">GROUP BY ALL</code> or <code class="language-plaintext highlighter-rouge">DISTINCT</code> set quantifier on <code class="language-plaintext highlighter-rouge">GROUPING SETS</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5085">CALCITE-5085</a>]
Firebolt dialect implementation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5086">CALCITE-5086</a>]
SQL parser should allow <code class="language-plaintext highlighter-rouge">OFFSET</code> to occur before <code class="language-plaintext highlighter-rouge">LIMIT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5125">CALCITE-5125</a>]
Extend <code class="language-plaintext highlighter-rouge">||</code> operator to work with arrays</li>
</ul>
<h4 id="dependency-1-31-0">Dependency version upgrade</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5196">CALCITE-5196</a>]
Bump apiguardian to 1.1.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5221">CALCITE-5221</a>]
Upgrade Avatica version to 1.22.0. Vulnerability fix
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2022-36364">CVE-2022-36364</a>
(see <a href="https://issues.apache.org/jira/browse/CALCITE-5218">CALCITE-5218</a>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5115">CALCITE-5115</a>]
Upgrade jackson-databind from 2.9.10.1 to 2.13.2.1, and jackson from 2.10.0 to 2.13.2.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5112">CALCITE-5112</a>]
Upgrade Jetty from 9.4.15.v20190215 to 9.4.46.v20220331</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5070">CALCITE-5070</a>]
Upgrade Jekyll and ruby gems for site generation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5037">CALCITE-5037</a>]
Upgrade HSQLDB to 2.5.2</li>
</ul>
<h4 id="fixes-1-31-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-35">CALCITE-35</a>]
Support parsing parenthesized joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5169">CALCITE-5169</a>]
<code class="language-plaintext highlighter-rouge">xx &lt; 1 OR xx &gt; 1</code> cannot be simplified to <code class="language-plaintext highlighter-rouge">xx &lt;&gt; 1</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4448">CALCITE-4448</a>]
Use <code class="language-plaintext highlighter-rouge">TableMacro</code> user-defined table functions with <code class="language-plaintext highlighter-rouge">QueryableTable</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5000">CALCITE-5000</a>]
Expand <code class="language-plaintext highlighter-rouge">AGGREGATE_REDUCE_FUNCTIONS</code>, when arg of agg-call exists in the
aggregate’s group</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5091">CALCITE-5091</a>]
<code class="language-plaintext highlighter-rouge">RelMdRowCount</code> can return more accurate rowCount when fetch is deterministic
and offset is dynamic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5149">CALCITE-5149</a>]
Refine <code class="language-plaintext highlighter-rouge">RelMdColumnUniqueness</code> for Aggregate by considering intersect keys
between target keys and group keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5036">CALCITE-5036</a>]
<code class="language-plaintext highlighter-rouge">RelMdPredicates</code> support to analyze constant key for the operator of
<code class="language-plaintext highlighter-rouge">IS_NOT_DISTINCT_FROM</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5044">CALCITE-5044</a>]
JDBC adapter generates integer literal in <code class="language-plaintext highlighter-rouge">ORDER BY</code>, which some dialects
wrongly interpret as a reference to a field</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4936">CALCITE-4936</a>]
Generalize <code class="language-plaintext highlighter-rouge">FilterCalcMergeRule</code>/<code class="language-plaintext highlighter-rouge">ProjectCalcMergeRule</code> to accept any
<code class="language-plaintext highlighter-rouge">Filter</code>/<code class="language-plaintext highlighter-rouge">Project</code>/<code class="language-plaintext highlighter-rouge">Calc</code> operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5083">CALCITE-5083</a>]
In <code class="language-plaintext highlighter-rouge">RelBuilder.project_</code>, do not unwrap SARGs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5061">CALCITE-5061</a>]
Improve recursive application of the field trimming</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3890">CALCITE-3890</a>]
Derive <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> filter for the inputs of inner join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5118">CALCITE-5118</a>]
<code class="language-plaintext highlighter-rouge">SqlDatePartFunction#rewriteCall</code> should check operands length</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5162">CALCITE-5162</a>]
<code class="language-plaintext highlighter-rouge">RelMdUniqueKeys</code> can return more precise unique keys for Aggregate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5073">CALCITE-5073</a>]
<code class="language-plaintext highlighter-rouge">JoinConditionPushRule</code> cannot infer <code class="language-plaintext highlighter-rouge">LHS.C1 = LHS.C2</code> from
<code class="language-plaintext highlighter-rouge">LHS.C1 = RHS.C1 AND LHS.C2 = RHS.C1</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5107">CALCITE-5107</a>]
Support SQL hint for <code class="language-plaintext highlighter-rouge">Filter</code>, <code class="language-plaintext highlighter-rouge">SetOp</code>, <code class="language-plaintext highlighter-rouge">Sort</code>, <code class="language-plaintext highlighter-rouge">Window</code>, <code class="language-plaintext highlighter-rouge">Values</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5194">CALCITE-5194</a>]
Cannot parse parenthesized <code class="language-plaintext highlighter-rouge">UNION</code> in <code class="language-plaintext highlighter-rouge">FROM</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5206">CALCITE-5206</a>]
Parser allows <code class="language-plaintext highlighter-rouge">MERGE</code> with mismatched parentheses</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4746">CALCITE-4746</a>]
<code class="language-plaintext highlighter-rouge">PIVOT</code> with aggregate and no without alias fails in Babel parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5045">CALCITE-5045</a>]
Alias within GroupingSets throws type mis-match exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5145">CALCITE-5145</a>]
<code class="language-plaintext highlighter-rouge">CASE</code> statement within <code class="language-plaintext highlighter-rouge">GROUPING SETS</code> throws type mis-match exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5195">CALCITE-5195</a>]
<code class="language-plaintext highlighter-rouge">ArrayIndexOutOfBoundsException</code> when inferring more equal conditions from join
condition for semi join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5157">CALCITE-5157</a>]
Query that applies dot operator (field access) to parenthesized expression
throws <code class="language-plaintext highlighter-rouge">ClassCastException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5191">CALCITE-5191</a>]
Allow <code class="language-plaintext highlighter-rouge">ORDER BY</code> alias in BigQuery</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5134">CALCITE-5134</a>]
Queries with subquery inside select list does not work if subquery uses table
from left join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5177">CALCITE-5177</a>]
Query loses hint after decorrelation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5143">CALCITE-5143</a>]
Allow custom time unit abbreviations in <code class="language-plaintext highlighter-rouge">FLOOR</code>, <code class="language-plaintext highlighter-rouge">CEIL</code>, <code class="language-plaintext highlighter-rouge">EXTRACT</code>,
<code class="language-plaintext highlighter-rouge">DATE_PART</code>, <code class="language-plaintext highlighter-rouge">DATEADD</code>, <code class="language-plaintext highlighter-rouge">DATEDIFF</code> and similar functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5179">CALCITE-5179</a>]
In <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code>, <code class="language-plaintext highlighter-rouge">AssertionError</code> for values with more than two items
when <code class="language-plaintext highlighter-rouge">SqlDialect#supportsAliasedValues</code> is false</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4907">CALCITE-4907</a>]
JDBC adapter cannot push down join ON <code class="language-plaintext highlighter-rouge">TRUE</code> (cartesian product)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5147">CALCITE-5147</a>]
Allow <code class="language-plaintext highlighter-rouge">DATE</code>, <code class="language-plaintext highlighter-rouge">TIME</code>, <code class="language-plaintext highlighter-rouge">TIMESTAMP</code>, <code class="language-plaintext highlighter-rouge">INTERVAL</code> literals in BigQuery dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5013">CALCITE-5013</a>]
Unparse <code class="language-plaintext highlighter-rouge">SqlSetOperator</code> should be retained parentheses when generating SQL for
<code class="language-plaintext highlighter-rouge">UNION ... LIMIT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4897">CALCITE-4897</a>]
Implicit type conversion is not complete for set operation in DML</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5027">CALCITE-5027</a>]
Incorrect format for timestamp literals in <code class="language-plaintext highlighter-rouge">SqlDialect.quoteTimestampLiteral</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5153">CALCITE-5153</a>]
Create an immutable version of <code class="language-plaintext highlighter-rouge">ListSqlOperatorTable</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5139">CALCITE-5139</a>]
Improve Join print plan to add the <code class="language-plaintext highlighter-rouge">CorrelationId</code> info</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5003">CALCITE-5003</a>]
<code class="language-plaintext highlighter-rouge">MergeUnion</code> on types with different collators produces wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5117">CALCITE-5117</a>]
Optimize the <code class="language-plaintext highlighter-rouge">EXISTS</code> sub-query using <code class="language-plaintext highlighter-rouge">RelMdRowCount</code> metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4861">CALCITE-4861</a>]
Optimization of chained <code class="language-plaintext highlighter-rouge">CAST</code> calls can lead to unexpected behavior</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5048">CALCITE-5048</a>]
Query with parameterized <code class="language-plaintext highlighter-rouge">LIMIT</code> and correlated sub-query throws
<code class="language-plaintext highlighter-rouge">AssertionError</code>, “not a literal”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5032">CALCITE-5032</a>]
<code class="language-plaintext highlighter-rouge">RelOptUtil#splitJoinCondition</code> returns wrong when there is no equal condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4992">CALCITE-4992</a>]
Resource leak in Elasticsearch adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4401">CALCITE-4401</a>]
<code class="language-plaintext highlighter-rouge">SqlJoin.toString</code> throws <code class="language-plaintext highlighter-rouge">RuntimeException</code>, “No list started”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5088">CALCITE-5088</a>]
<code class="language-plaintext highlighter-rouge">JsonBuilder</code> should escape backslashes in JSON strings</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5021">CALCITE-5021</a>]
Double <code class="language-plaintext highlighter-rouge">JOIN</code> is created for <code class="language-plaintext highlighter-rouge">NOT IN</code> when <code class="language-plaintext highlighter-rouge">IN</code>-list that the values all
non-nullable is converted to <code class="language-plaintext highlighter-rouge">Values</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5064">CALCITE-5064</a>]
Dialect factory returns ANSI SQL dialect for BigQuery</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4989">CALCITE-4989</a>]
Nested JSON_OBJECT creation does not produce proper JSON</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5050">CALCITE-5050</a>]
Metadata (<code class="language-plaintext highlighter-rouge">RelMdRowCount</code>) should reflect the fact that an <code class="language-plaintext highlighter-rouge">Aggregate</code> with no
<code class="language-plaintext highlighter-rouge">GROUP BY</code> always returns 1 row</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4913">CALCITE-4913</a>]
Deduplicate correlated variables in <code class="language-plaintext highlighter-rouge">SELECT</code> clause</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5150">CALCITE-5150</a>]
Parser should parse subquery with order by inside array constructor</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5171">CALCITE-5171</a>]
<code class="language-plaintext highlighter-rouge">NATURAL</code> join and <code class="language-plaintext highlighter-rouge">USING</code> should fail if join columns are not unique</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5170">CALCITE-5170</a>]
Assertion error on range distribution creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5163">CALCITE-5163</a>]
<code class="language-plaintext highlighter-rouge">MysqlSqlDialect</code> support to unparse <code class="language-plaintext highlighter-rouge">LISTAGG</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5166">CALCITE-5166</a>]
Method <code class="language-plaintext highlighter-rouge">accept(RelShuttle)</code> is not overridden in <code class="language-plaintext highlighter-rouge">LogicalCalc</code> and
<code class="language-plaintext highlighter-rouge">LogicalTableModify</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5137">CALCITE-5137</a>]
<code class="language-plaintext highlighter-rouge">EnumerableUncollect</code> throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> if input has ((List) null)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5081">CALCITE-5081</a>]
Group keys of Aggregate are wrongly changed during decorrelation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5138">CALCITE-5138</a>]
Join on condition generates wrong plan when the condition is sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5131">CALCITE-5131</a>]
Remove redundant type cast</li>
</ul>
<h4 id="build-1-31-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5095">CALCITE-5095</a>]
Support Java 18 and Guava 31.1-jre</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5140">CALCITE-5140</a>]
Spark, Piglet tests fail in GitHub CI with OpenJ9</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4147">CALCITE-4147</a>]
Rename master branch to main</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5038">CALCITE-5038</a>]
Making <code class="language-plaintext highlighter-rouge">AGGREGATE_ANY_PULL_UP_CONSTANTS</code>’s test case more rigorous</li>
</ul>
<h4 id="site-1-31-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5092">CALCITE-5092</a>]
Update <a href="https://github.com/apache/calcite/blob/main/site/README.md">site/README.md</a>
about how to release the site</li>
<li>Site: Add Jing Zhang as committer</li>
<li>Site: Add Benchao Li as committer</li>
<li>Site: Add Chunwei Lei and Vladimir Ozerov as PMC members</li>
<li>Site: Outline process for becoming Calcite committer by request</li>
<li>Site: Remove missing avatar for Ted Dunning</li>
<li>Site: Fix release announcement for 1.30.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5075">CALCITE-5075</a>]
Build fails due to rat check on Gemfile.lock</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5079">CALCITE-5079</a>]
Update code demo of tutorial</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5102">CALCITE-5102</a>]
Update github-pages gem for site build</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5106">CALCITE-5106</a>]
Upgrade to Jekyll 4 and remove unnecessary dependencies from gemfile for site</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5108">CALCITE-5108</a>]
Make website GDPR-compliant</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5110">CALCITE-5110</a>]
Geode adapter’s java doc url is invalid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5165">CALCITE-5165</a>]
Improve javadoc</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3129">CALCITE-3129</a>]
Automate website builds</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5111">CALCITE-5111</a>]
jekyll-cache directory should be ignored by git</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5015">CALCITE-5015</a>]
Fix typo in <code class="language-plaintext highlighter-rouge">PartiallyOrderedSet</code>
</li>
</ul>
<h2 id="v1-30-0">
<a href="https://github.com/apache/calcite/releases/tag/calcite-1.30.0">1.30.0</a> / 2022-03-20</h2>
<p>This release comes over two months after <a href="#v1-29-0">1.29.0</a>,
contains contributions from 29 authors,
and resolves 36 issues.</p>
<p>Among others, it is worth highlighting the following.</p>
<ul>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4980">Babel parser support MySQL NULL-safe equal operator ‘&lt;=&gt;’</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4967">Support SQL hints for temporal table join</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4885">Fluent test fixtures so that dependent projects can write parser, validator and rules tests</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-5030">Vulnerability issue CVE-2021-27568 fixed</a></li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 17;
Guava versions 19.0 to 31.0.1-jre;
other software versions as specified in gradle.properties.</p>
<p>Contributors to this release:
Alessandro Solimando,
Bill Neil,
Chen Kai,
Eugen Stan,
Feng Zhu,
Jacques Nadeau,
Jake Xie,
Jay Narale,
Jiatao Tao,
Jing Zhang,
Julian Hyde,
Liya Fan (release manager),
LM Kang,
mans2singh,
Marco Jorge,
Marieke Gueye,
NobiGo,
Roman Puchkovskiy,
Ruben Quesada Lopez,
Scott Reynolds,
Soumyakanti Das,
Stamatis Zampetakis,
Vova Vysotskyi,
Will Noble,
Xiong Duan,
Xurenhe,
Yanjing Wang,
Yiqun Zhang,
Zhe Hu.</p>
<h4 id="new-features-1-30-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4980">CALCITE-4980</a>]
Babel parser support MySQL NULL-safe equal operator ‘&lt;=&gt;’</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4967">CALCITE-4967</a>]
Support SQL hints for temporal table join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4885">CALCITE-4885</a>]
Fluent test fixtures so that dependent projects can write parser, validator and rules tests</li>
</ul>
<h4 id="fixes-1-30-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5040">CALCITE-5040</a>]
<code class="language-plaintext highlighter-rouge">SqlTypeFactoryTest.testUnknownCreateWithNullabilityTypeConsistency</code> fails</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5019">CALCITE-5019</a>]
Avoid multiple scans when table is <code class="language-plaintext highlighter-rouge">ProjectableFilterableTable</code> and projections and filters act on different columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5011">CALCITE-5011</a>]
<code class="language-plaintext highlighter-rouge">CassandraAdapterDataTypesTest</code> fails with initialization error</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5008">CALCITE-5008</a>]
Ignore synthetic and static methods in <code class="language-plaintext highlighter-rouge">MetadataDef</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4997">CALCITE-4997</a>]
Keep <code class="language-plaintext highlighter-rouge">APPROX_COUNT_DISTINCT</code> in some <code class="language-plaintext highlighter-rouge">SqlDialect</code>s</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4996">CALCITE-4996</a>]
In <code class="language-plaintext highlighter-rouge">RelJson</code>, add a <code class="language-plaintext highlighter-rouge">readExpression</code> method that converts JSON to a <code class="language-plaintext highlighter-rouge">RexNode</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4995">CALCITE-4995</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> caused by <code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> on <code class="language-plaintext highlighter-rouge">SEMI/ANTI</code> join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4994">CALCITE-4994</a>]
SQL-to-RelNode conversion is slow if table contains hundreds of fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4991">CALCITE-4991</a>]
Improve <code class="language-plaintext highlighter-rouge">RuleEventLogger</code> to also print input rels in <code class="language-plaintext highlighter-rouge">FULL_PLAN</code> mode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4988">CALCITE-4988</a>]
<code class="language-plaintext highlighter-rouge">((A IS NOT NULL OR B) AND A IS NOT NULL)</code> can’t be simplify to <code class="language-plaintext highlighter-rouge">(A IS NOT NULL)</code> When <code class="language-plaintext highlighter-rouge">A</code> is deterministic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4986">CALCITE-4986</a>]
Make <code class="language-plaintext highlighter-rouge">HepProgram</code> thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4968">CALCITE-4968</a>]
Use <code class="language-plaintext highlighter-rouge">TOP N</code> for MsSQL instead of <code class="language-plaintext highlighter-rouge">FETCH</code> without <code class="language-plaintext highlighter-rouge">OFFSET</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4965">CALCITE-4965</a>]
<code class="language-plaintext highlighter-rouge">IS NOT NULL</code> failed in Elasticsearch Adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4963">CALCITE-4963</a>]
Make it easier to implement interface <code class="language-plaintext highlighter-rouge">SqlDialectFactory</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4953">CALCITE-4953</a>]
Deprecate <code class="language-plaintext highlighter-rouge">TableAccessMap</code> class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4952">CALCITE-4952</a>]
Introduce a simplistic <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> option</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4912">CALCITE-4912</a>]
Confusing javadoc of <code class="language-plaintext highlighter-rouge">RexSimplify.simplify</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4901">CALCITE-4901</a>]
JDBC adapter incorrectly adds <code class="language-plaintext highlighter-rouge">ORDER BY</code> columns to the <code class="language-plaintext highlighter-rouge">SELECT</code> list of generated SQL query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4877">CALCITE-4877</a>]
Support Snapshot in <code class="language-plaintext highlighter-rouge">RelMdColumnOrigins</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4872">CALCITE-4872</a>]
Add <code class="language-plaintext highlighter-rouge">UNKNOWN</code> value to enum <code class="language-plaintext highlighter-rouge">SqlTypeName</code>, distinct from the <code class="language-plaintext highlighter-rouge">NULL</code> type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4702">CALCITE-4702</a>]
Error when executing query with <code class="language-plaintext highlighter-rouge">GROUP BY</code> constant via JDBC adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4683">CALCITE-4683</a>]
IN-list converted to JOIN throws type mismatch exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4323">CALCITE-4323</a>]
If a view definition has an <code class="language-plaintext highlighter-rouge">ORDER BY</code> clause, retain the sort if the view is used in a query at top level</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4054">CALCITE-4054</a>]
<code class="language-plaintext highlighter-rouge">RepeatUnion</code> containing a <code class="language-plaintext highlighter-rouge">Correlate</code> with a <code class="language-plaintext highlighter-rouge">transientScan</code> on its RHS
causes <code class="language-plaintext highlighter-rouge">NullPointerException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3673">CALCITE-3673</a>]
<code class="language-plaintext highlighter-rouge">ListTransientTable</code> should not leave tables in the schema</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3627">CALCITE-3627</a>]
Incorrect null semantic for <code class="language-plaintext highlighter-rouge">ROW</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1794">CALCITE-1794</a>]
Expressions with numeric comparisons are not simplified when <code class="language-plaintext highlighter-rouge">CAST</code> is present</li>
</ul>
<h4 id="build-1-30-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5006">CALCITE-5006</a>]
Gradle tasks for launching JDBC integration tests are not working</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4960">CALCITE-4960</a>]
Enable unit tests in Elasticsearch Adapter</li>
</ul>
<h4 id="dependency-1-30-0">Dependency version upgrade</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5030">CALCITE-5030</a>]
Upgrade jsonpath version from 2.4.0 to 2.7.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5025">CALCITE-5025</a>]
Upgrade commons-io version from 2.4 to 2.11.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-5007">CALCITE-5007</a>]
Upgrade H2 database version to 2.1.210</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4973">CALCITE-4973</a>]
Upgrade log4j2 version to 2.17.1</li>
</ul>
<h4 id="site-1-30-0">Web site and documentation</h4>
<ul>
<li>Site: Update PMC Chair</li>
<li>Site: Add external resources section in the community page</li>
<li>Site: Add “calcite-clj - Use Calcite with Clojure” in talks section</li>
<li>Site: Add Alessandro Solimando as committer</li>
<li>Site: Change the javadoc title to Apache Calcite API</li>
<li>Site: For tables that display results, center the content horizontally</li>
<li>Site: Add syntax highlighting to SQL statements</li>
<li>Site: Improve HTML tables display &amp; update CSV tutorial</li>
</ul>
<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,
and resolves 47 issues.</p>
<p>This release upgrades
<a href="https://issues.apache.org/jira/browse/CALCITE-4950">log4j2 to 2.17.0</a>
to fix security vulnerabiities such as
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2021-44228">CVE-2021-44228</a>
and
<a href="http://cve.mitre.org/cgi-bin/cvename.cgi?name=2021-45105">CVE-2021-45105</a>.</p>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 17;
Guava versions 19.0 to 31.0.1-jre;
other software versions as specified in gradle.properties.</p>
<p>Contributors to this release:
Ada Wong,
Aleksey Plekhanov,
Alessandro Solimando,
Chunwei Lei,
Francesco Gini,
Jacques Nadeau,
Jay Narale,
Julian Hyde,
liuyanze,
Louis Kuang,
NobiGo,
Ruben Quesada Lopez,
Rui Wang (release manager),
Sergey Nuyanzin,
Stamatis Zampetakis,
Thomas Rebele,
Vladimir Sitnikov,
Will Noble,
Zhe Hu.</p>
<h4 id="new-features-1-29-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4822">CALCITE-4822</a>]
Add <code class="language-plaintext highlighter-rouge">ARRAY_CONCAT</code>, <code class="language-plaintext highlighter-rouge">ARRAY_REVERSE</code>, <code class="language-plaintext highlighter-rouge">ARRAY_LENGTH</code> functions for BigQuery dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4877">CALCITE-4877</a>]
When a plugin class is not found, make the exception more explicit</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4841">CALCITE-4841</a>]
Support <code class="language-plaintext highlighter-rouge">decimal</code> column type in CSV and File adapters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4925">CALCITE-4925</a>]
<code class="language-plaintext highlighter-rouge">AggregateReduceFunctionsRule</code> should accept arbitrary predicates</li>
</ul>
<h4 id="fixes-1-29-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4839">CALCITE-4839</a>]
Remove remnants of <code class="language-plaintext highlighter-rouge">ImmutableBeans</code> post 1.28 release</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4795">CALCITE-4795</a>]
In class <code class="language-plaintext highlighter-rouge">SqlBasicCall</code>, make the <code class="language-plaintext highlighter-rouge">operands</code> field private</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4818">CALCITE-4818</a>]
<code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> must infer correct data type for top
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="language-plaintext highlighter-rouge">XmlFunctions</code> exception handled by <code class="language-plaintext highlighter-rouge">System.out</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4875">CALCITE-4875</a>]
<code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">IN</code>-list that references columns is wrongly converted to <code class="language-plaintext highlighter-rouge">Values</code>, and gives
incorrect results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4846">CALCITE-4846</a>]
<code class="language-plaintext highlighter-rouge">IN</code>-list that includes <code class="language-plaintext highlighter-rouge">NULL</code> converted to <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelJsonWriter</code> to allow customized <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableIntersect</code>
is followed by <code class="language-plaintext highlighter-rouge">EnumerableLimit</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4883">CALCITE-4883</a>]
When <code class="language-plaintext highlighter-rouge">Exchange</code> is created from externalized JSON, <code class="language-plaintext highlighter-rouge">RelDistribution</code> is not
correctly set in its <code class="language-plaintext highlighter-rouge">traitSet</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4783">CALCITE-4783</a>]
<code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> incorrectly drops filter condition</li>
<li>Log plan after physical tweaks in new line</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4927">CALCITE-4927</a>]
Remove deprecated method <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelMetadataQuery</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4932">CALCITE-4932</a>]
Deprecate <code class="language-plaintext highlighter-rouge">JdbcCalc</code> and remove <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">getDef</code> on metadata handlers</li>
<li>Improve debug message in <code class="language-plaintext highlighter-rouge">IterativeRuleDriver</code>
</li>
<li>Remove duplicate entries from <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">SemiJoinRule</code> loses hints</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4895">CALCITE-4895</a>]
<code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">AggregateUnionTransposeRule</code> produces wrong <code class="language-plaintext highlighter-rouge">groupingSets</code> for the top
<code class="language-plaintext highlighter-rouge">Aggregate</code>
</li>
</ul>
<h4 id="build-1-29-0">Build and test suite</h4>
<ul>
<li>Exclude kotlin-stdlib from <code class="language-plaintext 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="language-plaintext 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>]
Add test for <code class="language-plaintext highlighter-rouge">a IS NOT NULL AND a = b</code> simplification</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4851">CALCITE-4851</a>]
Build gives lots of ‘<code class="language-plaintext highlighter-rouge">Execution optimizations have been disabled</code>’ warnings</li>
</ul>
<h4 id="dependency-1-29-0">Dependency version upgrade</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4847">CALCITE-4847</a>]
Support Java 16 and 17</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4858">CALCITE-4858</a>]
Use Log4j2 instead of unsupported Log4j (1.x) in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4768">CALCITE-4768</a>]
Upgrade DataStax Driver for Apache Cassandra® version to latest 4.x</li>
<li>Bump <code class="language-plaintext highlighter-rouge">com.github.vlsi.vlsi-release-plugins</code> to 1.76</li>
<li>Update Gradle to 7.3</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4937">CALCITE-4937</a>]
Upgrade Calcite to Avatica 1.20</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4938">CALCITE-4938</a>]
Upgrade SQLLine to 1.12.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4948">CALCITE-4948</a>]
Upgrade Elasticsearch to 7.10.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4950">CALCITE-4950</a>]
Upgrade log4j2 version 2.17.0</li>
</ul>
<h4 id="site-1-29-0">Web site and documentation</h4>
<ul>
<li>Site: Add Xiong Duan as committer</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>
<p>This release comes four months after <a href="#v1-27-0">1.27.0</a>,
contains contributions from 38 authors,
and resolves 76 issues.
New features include the
<a href="https://issues.apache.org/jira/browse/CALCITE-4486">UNIQUE</a>
sub-query predicate, the
<a href="https://issues.apache.org/jira/browse/CALCITE-4661">MODE</a> aggregate function,
<a href="https://issues.apache.org/jira/browse/CALCITE-4644">PERCENTILE_CONT and PERCENTILE_DISC</a>
inverse distribution functions, an
<a href="https://issues.apache.org/jira/browse/CALCITE-4614">Exasol dialect</a>
for the JDBC adapter, and improvements to
<a href="https://issues.apache.org/jira/browse/CALCITE-4779">materialized</a>
<a href="https://issues.apache.org/jira/browse/CALCITE-3935">view</a>
<a href="https://issues.apache.org/jira/browse/CALCITE-4774">recognition</a>.</p>
<p>This release contains some breaking changes due to the
<a href="https://issues.apache.org/jira/browse/CALCITE-4787">replacement of ImmutableBeans with Immutables</a>;
the changes concern custom planner rule configurations, in particular
<code class="language-plaintext highlighter-rouge">interface RelRule.Config</code>, and are fully described in the
<a href="/news/2021/10/19/release-1.28.0">news item</a>.
Two APIs are deprecated and will be <a href="#to-be-removed-in-1-29-0">removed in release 1.29</a>.</p>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 15;
Guava versions 19.0 to 31.0.1-jre;
other software versions as specified in gradle.properties.</p>
<p>Contributors to this release:
Alessandro Solimando,
Alon Eldar,
Amir Gajst,
Bruce Irschick,
dz,
Evgeniy Stanilovskiy,
Feng Zhu,
Grzegorz Gierlach,
Haisheng Yuan,
Jack Scott,
Jacky Yin,
Jacques Nadeau,
James Starr,
Jesus Camacho Rodriguez,
Jianhui Dong,
Jiasen Sheng,
Julian Hyde (release manager),
Liu Enze,
Michael Mior,
Narayanan Venkateswaran,
Nick Riasanovsky,
NobiGo,
Rafay Qureshi,
Ruben Quesada Lopez,
Sergey Nuyanzin,
Stamatis Zampetakis,
Taras Ledkov,
Thomas Rebele,
TJ Banghart,
Ulrich Kramer,
Vladimir Ozerov,
Vladimir Sitnikov,
Will Noble,
Xurenhe,
Yanjing Wang,
Yingyu Wang,
YuKong.</p>
<h4 id="to-be-removed-in-1-29-0">Deprecated for removal next release</h4>
<ul>
<li>In 1.28,
[<a href="https://issues.apache.org/jira/browse/CALCITE-4787">CALCITE-4787</a>]
added <code class="language-plaintext highlighter-rouge">class Immutables</code> and deprecated <code class="language-plaintext highlighter-rouge">ImmutableBeans</code>; in 1.29,
[<a href="https://issues.apache.org/jira/browse/CALCITE-4839">CALCITE-4839</a>]
will remove <code class="language-plaintext 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="language-plaintext highlighter-rouge">operands</code> field of <code class="language-plaintext highlighter-rouge">SqlBasicCall</code>. Before 1.29, we will make
that field private.</li>
</ul>
<h4 id="new-features-1-28-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4719">CALCITE-4719</a>]
Add variants of <code class="language-plaintext highlighter-rouge">RexSubQuery</code> that collect sub-queries into <code class="language-plaintext highlighter-rouge">MULTISET</code>, <code class="language-plaintext highlighter-rouge">ARRAY</code>
and <code class="language-plaintext highlighter-rouge">MAP</code> collections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3524">CALCITE-3524</a>]
In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, add methods for creating various kinds of sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2736">CALCITE-2736</a>]
<code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> never reduces dynamic expressions but this should be
configurable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4847">CALCITE-4847</a>]
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="language-plaintext highlighter-rouge">IN</code>-list as if the user had written <code class="language-plaintext highlighter-rouge">OR</code>, even
if the <code class="language-plaintext highlighter-rouge">IN</code>-list contains <code class="language-plaintext highlighter-rouge">NULL</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4779">CALCITE-4779</a>]
If <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">UNIQUE</code> sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3935">CALCITE-3935</a>]
Enhance join materialization, support to pull-up filters under join of left or
right</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4767">CALCITE-4767</a>]
JDBC adapter wrongly quotes backticks inside BigQuery identifiers</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4774">CALCITE-4774</a>]
Materialized view recognition fails for equivalent predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4742">CALCITE-4742</a>]
Implement <code class="language-plaintext highlighter-rouge">SOME &lt;&gt;</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="language-plaintext highlighter-rouge">FILTER</code> clause in
<code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">Aggregate.groupKey</code> to be a strict superset of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Values</code> by generating <code class="language-plaintext highlighter-rouge">SELECT</code>
without <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelDataTypeSystem</code> from <code class="language-plaintext highlighter-rouge">Config</code> in <code class="language-plaintext highlighter-rouge">Planner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4661">CALCITE-4661</a>]
Add <code class="language-plaintext highlighter-rouge">MODE</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4420">CALCITE-4420</a>]
Some simple arithmetic operations can be simplified</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4640">CALCITE-4640</a>]
Propagate table scan hints to JDBC</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4668">CALCITE-4668</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.join</code> should convert <code class="language-plaintext highlighter-rouge">Correlate</code> to <code class="language-plaintext highlighter-rouge">Join</code> if correlation variable
is unused</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4644">CALCITE-4644</a>]
Add <code class="language-plaintext highlighter-rouge">PERCENTILE_CONT</code> and <code class="language-plaintext highlighter-rouge">PERCENTILE_DISC</code> functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4614">CALCITE-4614</a>]
Exasol dialect implementation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4158">CALCITE-4158</a>]
In generated SQL, “<code class="language-plaintext 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="language-plaintext highlighter-rouge">SEARCH</code> call to <code class="language-plaintext highlighter-rouge">termsQuery</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4499">CALCITE-4499</a>]
<code class="language-plaintext highlighter-rouge">FilterJoinRule</code> misses opportunity to push <code class="language-plaintext highlighter-rouge">Filter</code> to <code class="language-plaintext highlighter-rouge">SemiJoin</code> input</li>
</ul>
<h4 id="fixes-1-28-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4848">CALCITE-4848</a>]
Adding a <code class="language-plaintext highlighter-rouge">HAVING</code> condition to a query with a dynamic parameter makes the result
always empty</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4550">CALCITE-4550</a>]
Simplify <code class="language-plaintext 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="language-plaintext highlighter-rouge">HAVING</code> clause in BigQuery dialect</li>
<li>Refactor: Introduce field <code class="language-plaintext 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="language-plaintext highlighter-rouge">AggregateUnionTransposeRule</code> causes row type mismatch when some inputs have
unique grouping key</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4795">CALCITE-4795</a>]
In class <code class="language-plaintext highlighter-rouge">SqlBasicCall</code>, deprecated the <code class="language-plaintext highlighter-rouge">operands</code> field</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4628">CALCITE-4628</a>]
If <code class="language-plaintext highlighter-rouge">SqlImplementor</code> fails, include the <code class="language-plaintext highlighter-rouge">RelNode</code> in the exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4757">CALCITE-4757</a>]
In Avatica, support columns of type <code class="language-plaintext highlighter-rouge">NULL</code> in query results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4602">CALCITE-4602</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> retrieving from <code class="language-plaintext highlighter-rouge">ARRAY</code> that has mixed <code class="language-plaintext highlighter-rouge">INTEGER</code> and
<code class="language-plaintext highlighter-rouge">DECIMAL</code> elements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4600">CALCITE-4600</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> retrieving from an <code class="language-plaintext highlighter-rouge">ARRAY</code> that has <code class="language-plaintext highlighter-rouge">DATE</code>, <code class="language-plaintext highlighter-rouge">TIME</code> or
<code class="language-plaintext highlighter-rouge">TIMESTAMP</code> elements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3338">CALCITE-3338</a>]
Error with <code class="language-plaintext highlighter-rouge">executeBatch</code> and <code class="language-plaintext highlighter-rouge">preparedStatement</code> when using <code class="language-plaintext highlighter-rouge">RemoteMeta</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4811">CALCITE-4811</a>]
<code class="language-plaintext highlighter-rouge">Coalesce(null, row)</code> fails with <code class="language-plaintext highlighter-rouge">NullPointerException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3583">CALCITE-3583</a>]
<code class="language-plaintext highlighter-rouge">Exchange</code> operator deserialize fails when the <code class="language-plaintext highlighter-rouge">RexInput</code> has no <code class="language-plaintext highlighter-rouge">RelCollation</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3745">CALCITE-3745</a>]
<code class="language-plaintext highlighter-rouge">CompileException</code> in <code class="language-plaintext highlighter-rouge">UnitCompiler</code> when using multiple class loaders</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4834">CALCITE-4834</a>]
<code class="language-plaintext highlighter-rouge">JaninoRelMetadataProvider</code> uses hardcoded class name</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4819">CALCITE-4819</a>]
<code class="language-plaintext highlighter-rouge">SemiJoin</code> operator is not skipped in materialized view-based rewriting
algorithm</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4546">CALCITE-4546</a>]
Change metadata dispatch to avoid registration of all <code class="language-plaintext highlighter-rouge">RelNode</code> subtypes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4787">CALCITE-4787</a>]
Replace <code class="language-plaintext highlighter-rouge">ImmutableBeans</code> with <code class="language-plaintext highlighter-rouge">Immutables</code> in <code class="language-plaintext highlighter-rouge">core</code> module
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4830">CALCITE-4830</a>]
Remove remaining uses of <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelOptMaterializations</code> to allow registering <code class="language-plaintext highlighter-rouge">UnifyRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4773">CALCITE-4773</a>]
<code class="language-plaintext highlighter-rouge">RelDecorrelator</code>’s <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">PushProjector</code> should retain alias when handling <code class="language-plaintext highlighter-rouge">RexCall</code>
</li>
<li>Remove obsolete/misleading comments in <code class="language-plaintext highlighter-rouge">RelOptUtil#classifyFilters</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4784">CALCITE-4784</a>]
Ensure <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">RelJson</code> should throw if asked to deserialize a call to an unknown operator</li>
<li>Add <code class="language-plaintext highlighter-rouge">RelBuilder.lessThan</code>, and use <code class="language-plaintext highlighter-rouge">RelBuilder</code> shorthands</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4766">CALCITE-4766</a>]
Remove unreachable code from <code class="language-plaintext highlighter-rouge">SqlValidatorImpl#performUnconditionalRewrites</code>
for <code class="language-plaintext highlighter-rouge">Values</code> node</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4747">CALCITE-4747</a>]
In <code class="language-plaintext highlighter-rouge">HepPlanner</code>, remove outdated graph edges</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4760">CALCITE-4760</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder</code> creation fails with error ‘<code class="language-plaintext highlighter-rouge">No suitable driver found for
jdbc:calcite:</code>’ in shaded Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4584">CALCITE-4584</a>]
Using function in <code class="language-plaintext highlighter-rouge">PARTITION BY</code> list of <code class="language-plaintext highlighter-rouge">OVER</code> window causes conversion
exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4734">CALCITE-4734</a>]
If there are duplicate <code class="language-plaintext highlighter-rouge">RexNode</code> in <code class="language-plaintext highlighter-rouge">MutableCalc</code>, <code class="language-plaintext highlighter-rouge">SubstitutionVisitor</code> should
return right rebuild <code class="language-plaintext highlighter-rouge">RexNode</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4741">CALCITE-4741</a>]
<code class="language-plaintext highlighter-rouge">AbstractRelNode#getId</code> can overflow into a negative value, causing
<code class="language-plaintext highlighter-rouge">CompileException</code> in the <code class="language-plaintext highlighter-rouge">implement</code> methods of certain <code class="language-plaintext highlighter-rouge">Enumerable</code>
sub-classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4652">CALCITE-4652</a>]
<code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> must cast top aggregates to original
type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4716">CALCITE-4716</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> converting Sarg in <code class="language-plaintext highlighter-rouge">RelNode</code> to SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4706">CALCITE-4706</a>]
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="language-plaintext highlighter-rouge">INNER JOIN ... ON
TRUE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4623">CALCITE-4623</a>]
<code class="language-plaintext highlighter-rouge">SemiJoinRule</code> should not match semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4692">CALCITE-4692</a>]
Redshift does not support <code class="language-plaintext highlighter-rouge">DOUBLE</code> or <code class="language-plaintext highlighter-rouge">TINYINT</code> datatypes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4690">CALCITE-4690</a>]
Error when executing query with <code class="language-plaintext highlighter-rouge">CHARACTER SET</code> in Redshift</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4675">CALCITE-4675</a>]
Error executing query with SUM and multiplication via JDBC adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4674">CALCITE-4674</a>]
Excess quotes in generated SQL when “<code class="language-plaintext highlighter-rouge">*</code>” is a column alias</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3775">CALCITE-3775</a>]
Implicit lookup methods in <code class="language-plaintext highlighter-rouge">SimpleCalciteSchema</code> ignore case sensitivity
parameter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4638">CALCITE-4638</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">JdbcTable.scan</code> throws <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelCollation</code> for aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4619">CALCITE-4619</a>]
<code class="language-plaintext highlighter-rouge">FULL JOIN</code> plan cannot be executed in MySQL</li>
</ul>
<h4 id="build-1-28-0">Build and test suite</h4>
<ul>
<li>Bump JDK from 15 to 17 in seed build cache CI jobs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4798">CALCITE-4798</a>]
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="language-plaintext highlighter-rouge">HrSchema</code> in <code class="language-plaintext highlighter-rouge">MaterializationTest</code> with
<code class="language-plaintext 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="language-plaintext highlighter-rouge">ErrorProne</code> violations in <code class="language-plaintext highlighter-rouge">testkit</code>
</li>
<li>Add missing <code class="language-plaintext 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="language-plaintext highlighter-rouge">calcite-testkit</code> and unpublish <code class="language-plaintext 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="language-plaintext highlighter-rouge">java.security.AccessController</code> deprecation</li>
<li>Skip <code class="language-plaintext highlighter-rouge">EqualsHashCode</code> verification in <code class="language-plaintext highlighter-rouge">ErrorProne</code>: it is already verified with
<code class="language-plaintext 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="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">CassandraAdapterDataTypesTest.testCollectionsInnerValues</code> fails depending on
the user timezone</li>
<li>Replace deprecated <code class="language-plaintext highlighter-rouge">com.google.common.io.Files.createTempDir()</code> with
<code class="language-plaintext highlighter-rouge">java.nio.file.Files.createTempDirectory()</code> in ElasticSearch tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4789">CALCITE-4789</a>]
Build is broken on Guava versions &lt; 21</li>
<li>Enable <code class="language-plaintext highlighter-rouge">JdbcTest#testBushy</code> and update expected plan</li>
<li>
<code class="language-plaintext 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="language-plaintext highlighter-rouge">prepareVote</code> draft email</li>
</ul>
<h4 id="dependency-1-28-0">Dependency version upgrade</h4>
<ul>
<li>Bump Guava maximum version up to 31.0.1-jre</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4762">CALCITE-4762</a>]
Upgrade Calcite to Avatica 1.19</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4836">CALCITE-4836</a>]
Upgrade protobuf-java 3.6.1 → 3.17.1</li>
<li>Bump JUnit5 to 5.8.1</li>
</ul>
<h4 id="site-1-28-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4835">CALCITE-4835</a>]
Release Calcite 1.28.0</li>
<li>Site: Pronouns, talks</li>
<li>Site: Add Zhaohui Xu as committer</li>
<li>Site: Update fengzhu’s organization and add pronouns</li>
<li>Site: Remove vote email from release instructions, and minor improvements</li>
<li>Site: Add upcoming talk about Morel and update past talks section</li>
<li>Site: Remove contributors name from commit summary</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4656">CALCITE-4656</a>]
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="language-plaintext highlighter-rouge">README.md</code> should point to <code class="language-plaintext highlighter-rouge">app.travis-ci.com</code> instead of
<code class="language-plaintext 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>
<li>Site: Update jhyde’s organization and add pronouns</li>
<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="language-plaintext 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>
<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
improvements, as well as code quality enhancements and better test coverage.</p>
<p>Among others, it is worth highlighting the following:</p>
<ul>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4034">InnoDB adapter</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4446">Three-valued logic for SEARCH operator</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-3221">MergeUnion operator in Enumerable convention</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4260">Explain plan with DOT format</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4314">ErrorProne code quality checks</a></li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 15;
Guava versions 19.0 to 29.0-jre;
other software versions as specified in gradle.properties.</p>
<h4 id="breaking-1-27-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4521">CALCITE-4251</a>]
Get the origin column, even if it is derived</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4570">CALCITE-4570</a>]
Always validate preconditions in Filter/Correlate/Snapshot expressions when
assertions are enabled</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4427">CALCITE-4427</a>]
Make <code class="language-plaintext highlighter-rouge">SUBSTRING</code> operator comply with ISO standard SQL</li>
</ul>
<h4 id="new-features-1-27-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4564">CALCITE-4564</a>]
Initialization context for non-static user-defined functions (UDFs)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4477">CALCITE-4477</a>]
In <code class="language-plaintext highlighter-rouge">Interpreter</code>, support table-valued functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4418">CALCITE-4418</a>]
Allow Interpreter to read from JDBC input</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3574">CALCITE-3574</a>]
Add <code class="language-plaintext highlighter-rouge">RLIKE</code> operator (similar to <code class="language-plaintext highlighter-rouge">LIKE</code>, but Hive- and Spark-specific)
(Shradha Ambekar)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4483">CALCITE-4483</a>]
<code class="language-plaintext highlighter-rouge">WITHIN DISTINCT</code> clause for aggregate functions (experimental)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3221">CALCITE-3221</a>]
Add <code class="language-plaintext highlighter-rouge">MergeUnion</code> operator in <code class="language-plaintext highlighter-rouge">Enumerable</code> convention</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4349">CALCITE-4349</a>]
<code class="language-plaintext highlighter-rouge">GROUP_CONCAT</code> aggregate function (MySQL’s equivalent of <code class="language-plaintext highlighter-rouge">LISTAGG</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4443">CALCITE-4443</a>]
Add <code class="language-plaintext highlighter-rouge">ILIKE</code> operator (as <code class="language-plaintext 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="language-plaintext highlighter-rouge">ROW</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4433">CALCITE-4433</a>]
Add <code class="language-plaintext highlighter-rouge">UNPIVOT</code> operator to SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4408">CALCITE-4408</a>]
Implement Oracle <code class="language-plaintext highlighter-rouge">SUBSTR</code> function (James Starr)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4374">CALCITE-4374</a>]
Support materialized view recognition when query distinct aggregate on target
<code class="language-plaintext highlighter-rouge">GROUP BY</code> columns (xzh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4369">CALCITE-4369</a>]
Support <code class="language-plaintext highlighter-rouge">COUNTIF</code> aggregate function for BigQuery (Aryeh Hillman)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4354">CALCITE-4354</a>]
Allow <code class="language-plaintext highlighter-rouge">ITEM</code> operator on <code class="language-plaintext highlighter-rouge">ROW/STRUCT</code> data types (Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4335">CALCITE-4335</a>]
<code class="language-plaintext highlighter-rouge">ARRAY_AGG</code>, <code class="language-plaintext highlighter-rouge">ARRAY_CONCAT_AGG</code>, <code class="language-plaintext highlighter-rouge">STRING_AGG</code> aggregate functions for BigQuery</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2935">CALCITE-2935</a>]
Support <code class="language-plaintext highlighter-rouge">BOOL_AND</code>, <code class="language-plaintext highlighter-rouge">BOOL_OR</code>, <code class="language-plaintext highlighter-rouge">LOGICAL_AND</code>, <code class="language-plaintext highlighter-rouge">LOGICAL_OR</code> aggregate functions
(ShuMingLi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3731">CALCITE-3731</a>]
Add <code class="language-plaintext highlighter-rouge">IF</code> function for BigQuery, Hive and Spark dialects (Vaibhav Jain)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4260">CALCITE-4260</a>]
Support plan explain with <code class="language-plaintext highlighter-rouge">DOT</code> format (Liya Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4297">CALCITE-4297</a>]
Allow BigQuery to parse and validate niladic functions (Mr. Swett)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4034">CALCITE-4034</a>]
<code class="language-plaintext highlighter-rouge">InnoDB</code> adapter (neoremind)</li>
</ul>
<h4 id="fixes-1-27-0">Bug fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4497">CALCITE-4497</a>]
In <code class="language-plaintext 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="language-plaintext highlighter-rouge">CASE</code> causes <code class="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext 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="language-plaintext highlighter-rouge">SemiJoinRule</code> throws <code class="language-plaintext highlighter-rouge">AssertionError</code> on <code class="language-plaintext 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="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4609">CALCITE-4609</a>]
<code class="language-plaintext highlighter-rouge">AggregateRemoveRule</code> throws while handling <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">SqlToRelConverter#convertExpression</code> cannot convert <code class="language-plaintext highlighter-rouge">SqlNode</code> with sub query (jibiyr)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2317">CALCITE-2317</a>]
Support JDBC <code class="language-plaintext highlighter-rouge">DatabaseMetaData#getFunctions</code> (Malte Bellmann)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4594">CALCITE-4594</a>]
Interpreter returns wrong result when <code class="language-plaintext highlighter-rouge">VALUES</code> has zero fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4510">CALCITE-4510</a>]
<code class="language-plaintext highlighter-rouge">RexLiteral</code> can produce wrong digest for some user defined types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4560">CALCITE-4560</a>]
Wrong plan when decorrelating <code class="language-plaintext highlighter-rouge">EXISTS</code> subquery with <code class="language-plaintext highlighter-rouge">COALESCE</code> in the predicate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4574">CALCITE-4574</a>]
Wrong/Invalid plans when using <code class="language-plaintext highlighter-rouge">RelBuilder#join</code> with correlations</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4591">CALCITE-4591</a>]
<code class="language-plaintext highlighter-rouge">RelRunner</code> should throw SQLException if prepare fails</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4585">CALCITE-4585</a>]
Improve error message from <code class="language-plaintext highlighter-rouge">RelRunner</code> (NobiGo)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4586">CALCITE-4586</a>]
In piglet, allow creating a <code class="language-plaintext highlighter-rouge">PigRelBuilder</code> with custom <code class="language-plaintext highlighter-rouge">config.simplify()</code>
(Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4583">CALCITE-4583</a>]
Control simplification in <code class="language-plaintext highlighter-rouge">RelBuilder#filter</code> with <code class="language-plaintext highlighter-rouge">config.simplify()</code> (Jiatao
Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4571">CALCITE-4571</a>]
In piglet, a Pig Latin script with multiple <code class="language-plaintext highlighter-rouge">STORE</code> commands causes the merging
of multiple SQL statements (Mahesh Kumar Behera)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4569">CALCITE-4569</a>]
In piglet, allow creating a <code class="language-plaintext highlighter-rouge">PigConverter</code> with custom properties (Mahesh Kumar
Behera)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4572">CALCITE-4572</a>]
Piglet fails if Pig Latin script contains <code class="language-plaintext highlighter-rouge">RANK</code> or <code class="language-plaintext highlighter-rouge">FILTER</code> operators (Mahesh
Kumar Behera)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4579">CALCITE-4579</a>]
Piglet throws <code class="language-plaintext highlighter-rouge">ClassCastException</code> if Pig Latin script contains <code class="language-plaintext highlighter-rouge">FLATTEN</code> or
<code class="language-plaintext highlighter-rouge">STRSPLIT</code> operators (Mahesh Kumar Behera)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4515">CALCITE-4515</a>]
Do not generate the new join tree from commute/associate rules if there are
“always TRUE” conditions (Vladimir Ozerov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4535">CALCITE-4535</a>]
<code class="language-plaintext highlighter-rouge">ServerDdlExecutor</code> cannot execute <code class="language-plaintext highlighter-rouge">DROP</code> commands with qualified object names
(Vladimir Ozerov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4511">CALCITE-4511</a>]
Distinct row count and population size for constant columns should be 1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4562">CALCITE-4562</a>]
Improve simplification of “x IS TRUE” and “x LIKE ‘%’”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4556">CALCITE-4556</a>]
<code class="language-plaintext highlighter-rouge">CalciteMetaImpl#createEmptyResultSet</code> should not pass class to
<code class="language-plaintext highlighter-rouge">CursorFactory#deduce</code> (Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4522">CALCITE-4522</a>]
CPU cost of <code class="language-plaintext highlighter-rouge">Sort</code> should be lower if sort keys are empty (huangqixiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4552">CALCITE-4552</a>]
<code class="language-plaintext highlighter-rouge">Interpreter</code> does not close resources held by its nodes on close</li>
<li>Add method RelJsonReader.readType</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4524">CALCITE-4524</a>]
Make some fields non-nullable (<code class="language-plaintext highlighter-rouge">SqlSelect.selectList</code>,
<code class="language-plaintext highlighter-rouge">DataContext.getTypeFactory</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4533">CALCITE-4533</a>]
Incorrect semantics of <code class="language-plaintext highlighter-rouge">REPLACE</code> and <code class="language-plaintext highlighter-rouge">IF NOT EXISTS</code> keywords in
<code class="language-plaintext highlighter-rouge">CREATE TABLE/SCHEMA</code> commands (Vladimir Ozerov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4342">CALCITE-4342</a>]
More aggregate functions should be marked as splittable and ignore distinct
optionality (Liya Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4526">CALCITE-4526</a>]
<code class="language-plaintext highlighter-rouge">SqlSnapshot#unparse</code> loses the <code class="language-plaintext highlighter-rouge">AS</code> keyword when the table has alias (jibiyr)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4276">CALCITE-4276</a>]
<code class="language-plaintext highlighter-rouge">MaterializedViewOnlyAggregateRule</code> performs invalid rewrite on query that
contains join and time-rollup function (<code class="language-plaintext highlighter-rouge">FLOOR</code>) (Justin Swett)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2000">CALCITE-2000</a>]
<code class="language-plaintext highlighter-rouge">UNNEST</code> a collection that has a field with nested data generates an <code class="language-plaintext highlighter-rouge">Exception</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4514">CALCITE-4514</a>]
When merging <code class="language-plaintext highlighter-rouge">RelSets</code>, fine-tune which set is merged into which, for efficiency
(Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4437">CALCITE-4437</a>]
<code class="language-plaintext highlighter-rouge">Sort</code> should be decorrelated even though it has fetch or limit when it
is not inside a <code class="language-plaintext highlighter-rouge">Correlate</code> (Thomas Rebele)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4265">CALCITE-4265</a>]
Improve error message when <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelNode</code> presence in <code class="language-plaintext highlighter-rouge">RelSubset</code> (Igor Lozynskyi)</li>
<li>In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, remove not-null arguments to <code class="language-plaintext highlighter-rouge">COUNT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4199">CALCITE-4199</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder</code> throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> while implementing <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4426">CALCITE-4426</a>]
Short-circuit evaluating when comparing two <code class="language-plaintext highlighter-rouge">RelTraitSets</code> (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4482">CALCITE-4482</a>]
Extract the default <code class="language-plaintext highlighter-rouge">SqlWriterConfig</code> in <code class="language-plaintext highlighter-rouge">SqlPrettyWriter</code>, reduce the overhead of
<code class="language-plaintext highlighter-rouge">ImmutableBeans#create</code> (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4461">CALCITE-4461</a>]
Do not use <code class="language-plaintext highlighter-rouge">Logical</code> nodes inside <code class="language-plaintext highlighter-rouge">Enumerable</code> rules (Vladimir Ozerov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4479">CALCITE-4479</a>]
<code class="language-plaintext highlighter-rouge">vFloat in (1.0, 2.0)</code> throws <code class="language-plaintext highlighter-rouge">UnsupportedOperationException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4474">CALCITE-4474</a>]
<code class="language-plaintext highlighter-rouge">SqlSimpleParser</code> inner Tokenizer should not recognize the sql of TokenType.ID
or some keywords in some case (wangjie)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4431">CALCITE-4431</a>]
Use <code class="language-plaintext highlighter-rouge">requireNonNull(var, "var")</code> instead of <code class="language-plaintext highlighter-rouge">requireNonNull(var)</code> for better error
messages</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4466">CALCITE-4466</a>]
Do not invoke <code class="language-plaintext highlighter-rouge">RelTraitDef#convert</code> when the source trait satisfies the target
trait (Vladimir Ozerov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4463">CALCITE-4463</a>]
JDBC adapter for Spark generates incorrect <code class="language-plaintext highlighter-rouge">ORDER BY</code> syntax (Yanjing Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4453">CALCITE-4453</a>]
<code class="language-plaintext highlighter-rouge">RexExecutorImpl#compile</code> should use <code class="language-plaintext 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="language-plaintext highlighter-rouge">VARCHAR</code> literal projection fails with
<code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">DefaultEdge</code> lacks a proper <code class="language-plaintext highlighter-rouge">toString</code> implementation (Liya Fan)</li>
<li>Change return type of <code class="language-plaintext highlighter-rouge">RelBuilder#literal</code> from <code class="language-plaintext highlighter-rouge">RexNode</code> to <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">ITEM(STRUCT, INDEX)</code> access
(Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4429">CALCITE-4429</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4411">CALCITE-4411</a>]
<code class="language-plaintext highlighter-rouge">RelNode</code> to SQL loses <code class="language-plaintext highlighter-rouge">DISTINCT</code> on window aggregation (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4284">CALCITE-4284</a>]
<code class="language-plaintext highlighter-rouge">ImmutableBeans</code>: make reference properties non-nullable by default</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4199">CALCITE-4199</a>]
Add nullability annotations</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4199">CALCITE-4199</a>]
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="language-plaintext highlighter-rouge">RelDataType#getSqlTypeName</code> non-nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4251">CALCITE-4251</a>]
<code class="language-plaintext highlighter-rouge">NullPointerException</code> in <code class="language-plaintext highlighter-rouge">LoptMultiJoin</code> when <code class="language-plaintext highlighter-rouge">mq#getColumnOrigin(left, i)</code>
returns <code class="language-plaintext highlighter-rouge">null</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4415">CALCITE-4415</a>]
<code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> after trimming all the fields in an aggregate should not
return a zero field Aggregate (Rafay)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4414">CALCITE-4414</a>]
<code class="language-plaintext highlighter-rouge">RelMdSelectivity#getSelectivity</code> for <code class="language-plaintext highlighter-rouge">Calc</code> propagates predicate with wrong
references</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4409">CALCITE-4409</a>]
Improve exception when <code class="language-plaintext highlighter-rouge">RelBuilder</code> tries to create a field on a non-struct
expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4393">CALCITE-4393</a>]
<code class="language-plaintext highlighter-rouge">ExceptionInInitializerError</code> due to <code class="language-plaintext highlighter-rouge">NullPointerException</code> in <code class="language-plaintext highlighter-rouge">SqlCallBinding</code>
caused by circular dependency</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4251">CALCITE-4251</a>]
Support <code class="language-plaintext highlighter-rouge">Calc</code> and <code class="language-plaintext highlighter-rouge">SetOp</code> operator in <code class="language-plaintext highlighter-rouge">RelMdAllPredicates</code> (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4402">CALCITE-4402</a>]
<code class="language-plaintext highlighter-rouge">SqlCall#equalsDeep</code> does not take into account the function quantifier (Huang
Qixiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4251">CALCITE-4251</a>]
Get the origin column, even if it is derived (xzh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4406">CALCITE-4406</a>]
<code class="language-plaintext highlighter-rouge">SqlTableRef</code> operator should create a <code class="language-plaintext highlighter-rouge">SqlTableRef</code> as the call</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4277">CALCITE-4277</a>]
When <code class="language-plaintext highlighter-rouge">RelNode</code> has been removed from its subset, skip the origin rule match (Jiatao
Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4392">CALCITE-4392</a>]
The operation of checking types equal ignoring null can be more efficient</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4383">CALCITE-4383</a>]
In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, optimize <code class="language-plaintext highlighter-rouge">VALUES ... UNION ALL ... VALUES</code> to a single <code class="language-plaintext highlighter-rouge">VALUES</code>
with multiple rows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4394">CALCITE-4394</a>]
When generating code for a function call, take the inferred types of the
operands into account</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4389">CALCITE-4389</a>]
Calls to <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlNodeList</code> implement <code class="language-plaintext highlighter-rouge">List&lt;SqlNode&gt;</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4390">CALCITE-4390</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">a IN (1, 2) AND a = 1</code> should be simplified to <code class="language-plaintext 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>]
The reverse operation of collation direction is overly relaxed (Liya Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4345">CALCITE-4345</a>]
<code class="language-plaintext highlighter-rouge">AggregateCaseToFilterRule</code> throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> when converting <code class="language-plaintext highlighter-rouge">CASE</code>
without <code class="language-plaintext highlighter-rouge">ELSE</code> (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4233">CALCITE-4233</a>]
In Elasticsearch adapter, support generating disjunction max (dis_max) queries
(shlok7296)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4106">CALCITE-4106</a>]
Consider <code class="language-plaintext highlighter-rouge">listCoerced</code> in <code class="language-plaintext highlighter-rouge">TypeCoercionImpl#inOperationCoercion</code> (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4352">CALCITE-4352</a>]
<code class="language-plaintext highlighter-rouge">RexSimplify</code> incorrectly drops <code class="language-plaintext highlighter-rouge">IS NULL</code> and <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> from <code class="language-plaintext highlighter-rouge">SEARCH</code>
expressions</li>
<li>BigQuery dialect should allow <code class="language-plaintext highlighter-rouge">GROUP BY</code> ordinal</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4332">CALCITE-4332</a>]
Improve error when planning rule produces a relational expression with wrong
row type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4225">CALCITE-4225</a>]
Make <code class="language-plaintext 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="language-plaintext highlighter-rouge">VALUES</code>, and <code class="language-plaintext highlighter-rouge">UNNEST</code> of <code class="language-plaintext highlighter-rouge">ARRAY</code> and
<code class="language-plaintext highlighter-rouge">MULTISET</code> constructors</li>
<li>Add an overloaded <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RexSimplify</code> incorrectly simplifies complex expressions that contain Sarg and
<code class="language-plaintext highlighter-rouge">IS NULL</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4240">CALCITE-4240</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">Sort</code> rel should be decorrelated even though it has fetch or limit when its
parent is not a <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">NPE</code> in <code class="language-plaintext highlighter-rouge">RelMdUtil#checkInputForCollationAndLimit</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4316">CALCITE-4316</a>]
<code class="language-plaintext highlighter-rouge">NPE</code> when division includes nulls</li>
<li>Add method RelBuilder.isDistinctFrom()</li>
<li>Add class SqlBasicAggFunction</li>
<li>Add generic info to <code class="language-plaintext highlighter-rouge">Map</code> &amp; <code class="language-plaintext highlighter-rouge">Array</code> annotation</li>
<li>Refactor: Add method SqlOperator.reverse()</li>
<li>Refactor: Make HintStrategyTable immutable</li>
<li>Refactor: move CassandraRules.reverseDirection into Direction</li>
<li>Remove the insecure, unused <code class="language-plaintext highlighter-rouge">TrustAllSslSocketFactory</code> class (intrigus-lgtm)</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="language-plaintext highlighter-rouge">IdentityHashMapUsage</code>, <code class="language-plaintext highlighter-rouge">JdkObsolete</code>
<code class="language-plaintext highlighter-rouge">JavaUtilDate</code>
</li>
</ul>
<h4 id="build-1-27-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4613">CALCITE-4613</a>]
OWASP dependency-check tasks fail due to missing resources</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4576">CALCITE-4576</a>]
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="language-plaintext highlighter-rouge">System.out.println</code> from <code class="language-plaintext highlighter-rouge">DiffRepository</code>
</li>
<li>
<code class="language-plaintext 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="language-plaintext highlighter-rouge">DiffRepository</code> tests should fail if new XML resources are not in alphabetical
order</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4587">CALCITE-4587</a>]
Set <code class="language-plaintext highlighter-rouge">spark.driver.bindAddress</code> explicitly to avoid <code class="language-plaintext highlighter-rouge">BindException</code> thrown by
Spark (Jiatao Tao)</li>
<li>Add Matcher#matches to ForbiddenApis to avoid its accidental use</li>
<li>Apply com.autonomousapps.dependency-analysis plugin only when
-PenableDependencyAnalysis is provided on a command line</li>
<li>Fuzz testing for SEARCH operator, and refactor RexSimplify</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4344">CALCITE-4344</a>]
Run <code class="language-plaintext highlighter-rouge">Redis</code> tests using Docker containers</li>
<li>Make sure FmppTask re-executes in case default_config.fmpp changes</li>
<li>Use max-parallel=3 to reduce the usage of the shared GitHub Actions executors</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4140">CALCITE-4140</a>]
Use Wasabi S3 for remote build cache</li>
<li>Use Sonatype OSSRH repository instead of JCenter in build plugins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4459">CALCITE-4459</a>]
Verify the bytecode with Jandex by default</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4470">CALCITE-4470</a>]
Add optional bytecode verification with Jandex</li>
<li>Cancel stale workflows in GitHub Actions CI</li>
<li>Add ErrorProne and the Checker Framework verifications to Travis CI</li>
<li>Test case for [<a href="https://issues.apache.org/jira/browse/CALCITE-1382">CALCITE-1382</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> in JDBC Adapter</li>
<li>Require Java 1.8.0u202 or later for the build</li>
<li>Make sure compileJava is re-executed in case of the minor javac version changes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4422">CALCITE-4422</a>]
Add <code class="language-plaintext highlighter-rouge">MethodCanBeStatic</code> check via ErrorProne</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4199">CALCITE-4199</a>]
Add CheckerFramework to GitHub Actions CI</li>
<li>Add OpenJ9 1.8 CI job at GitHub Actions</li>
<li>Add markdown to .gitattributes</li>
<li>Set diff pattern for CSS files in .gitattributes</li>
<li>Remove files that change often from Travis cache, remove broken files
automatically</li>
<li>Make buildSrc jars reproducible for better caching</li>
<li>Refactor <code class="language-plaintext highlighter-rouge">SqlToRelTestBase</code> to allow custom <code class="language-plaintext highlighter-rouge">Context</code> in tests</li>
<li>Exclude root project from javadoc aggregate tasks</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4301">CALCITE-4301</a>]
Unit test <code class="language-plaintext highlighter-rouge">testCollectionsInnerValues()</code> for Cassandra adapter is wrong
(Alessandro Solimando)</li>
<li>Refactor <code class="language-plaintext highlighter-rouge">ResultSetEnumerable</code> to avoid nested lambdas</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4314">CALCITE-4314</a>]
Enable ErrorProne checking and resolve identified problems</li>
</ul>
<h4 id="dependency-1-27-0">Dependency version upgrade</h4>
<ul>
<li>Bump commons-codec from 1.12 to 1.13 (Jaromir Hamala)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4528">CALCITE-4528</a>]
Upgrade Avatica version to 1.18.0</li>
<li>Bump Gradle 6.8.1 -&gt; 6.8.3</li>
<li>Update dependency declarations: adjust api vs implementation, remove unused
ones</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4506">CALCITE-4506</a>]
Upgrade SQLLine to 1.11.0</li>
<li>Bump checkerframework 3.9.1 -&gt; 3.10.0, errorprone 2.4.0 -&gt; 2.5.1</li>
<li>Bump checkerframework 3.7 -&gt; 3.9.1</li>
<li>Bump Gradle 6.7 -&gt; 6.8.1</li>
<li>Bump AppVeyor image from 2017 to 2019 to test with newer Java: 1.8u162 -&gt;
1.8u221, 13 -&gt; 15</li>
<li>Bump de.thetaphi.forbiddenapis from 2.7 to 3.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4343">CALCITE-4343</a>]
Bump Jedis from 2.9.0 to 3.3.0 (Tugdual Grall)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4339">CALCITE-4339</a>]
Update Gradle: 6.6 -&gt; 6.7</li>
<li>Use jackson-bom to specify Jackson versions</li>
</ul>
<h4 id="site-1-27-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4625">CALCITE-4625</a>]
Update version in NOTICE, README, and howto.md</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4601">CALCITE-4601</a>]
Invalid Javadoc URL in <code class="language-plaintext highlighter-rouge">SchemaFactory</code> of CSV adapter</li>
<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>
<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>
<ul>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4173">SEARCH operator and Sarg literal</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-3752">PIVOT operator in SQL</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-1861">Spatial index based on Hilbert space-filling curve</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4197">Provide utility to visualize RelNode</a></li>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-4259">Support JDK 15 and Guava version 29.0-jre</a></li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using JDK/OpenJDK versions 8 to 15;
Guava versions 19.0 to 29.0-jre;
other software versions as specified in gradle.properties.</p>
<h4 id="breaking-1-26-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2082">CALCITE-2082</a>]
Do not store types or type factories inside operators</li>
</ul>
<h4 id="new-features-1-26-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4173">CALCITE-4173</a>]
Add internal <code class="language-plaintext highlighter-rouge">SEARCH</code> operator and <code class="language-plaintext highlighter-rouge">Sarg</code> literal that represents a set of values or ranges</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3752">CALCITE-3752</a>]
Add <code class="language-plaintext highlighter-rouge">PIVOT</code> operator to SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1861">CALCITE-1861</a>]
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="language-plaintext highlighter-rouge">ORDER BY</code> computation in Enumerable convention by exploiting <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableMergeJoin</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3782">CALCITE-3782</a>]
Bitwise functions <code class="language-plaintext highlighter-rouge">BIT_AND</code>, <code class="language-plaintext highlighter-rouge">BIT_OR</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">LEFT JOIN</code> in <code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code>
</li>
</ul>
<h4 id="fixes-1-26-0">Bug fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2833">CALCITE-2833</a>]
In JDBC adapter for Hive and BigQuery, implement <code class="language-plaintext highlighter-rouge">Values</code> by generating <code class="language-plaintext highlighter-rouge">SELECT</code> without <code class="language-plaintext highlighter-rouge">FROM</code> (Stuti Gupta)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4160">CALCITE-4160</a>]
Add configuration (<code class="language-plaintext highlighter-rouge">SqlToRelConverter.Config</code>) to retain <code class="language-plaintext highlighter-rouge">ORDER BY</code> in sub-query (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3399">CALCITE-3399</a>]
Field-pruning for set operators (except <code class="language-plaintext highlighter-rouge">UNION ALL</code>) changes query semantics (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4182">CALCITE-4182</a>]
Support materialized view recognition when query has constant filter for missing columns in <code class="language-plaintext highlighter-rouge">GROUP BY</code> list of materialized view (Wang Yanlin)</li>
<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="language-plaintext highlighter-rouge">COALESCE IN</code> throws <code class="language-plaintext 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>]
Support for Elasticsearch basic authentication (fageiguanbing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4241">CALCITE-4241</a>]
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="language-plaintext highlighter-rouge">&lt;&gt;</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="language-plaintext highlighter-rouge">LIKE '%'</code>) to <code class="language-plaintext highlighter-rouge">TRUE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4192">CALCITE-4192</a>]
<code class="language-plaintext highlighter-rouge">RelMdColumnOrigins</code> gets the wrong index of group by columns after <code class="language-plaintext highlighter-rouge">RelNode</code> was optimized by <code class="language-plaintext highlighter-rouge">AggregateProjectMergeRule</code> rule (FangZheng Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4203">CALCITE-4203</a>]
<code class="language-plaintext highlighter-rouge">RelMdUniqueKeys</code> should not return empty when meeting <code class="language-plaintext highlighter-rouge">Intersect</code> and <code class="language-plaintext highlighter-rouge">Minus</code> if its input has unique keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4207">CALCITE-4207</a>]
Validation fails for positional aggregate with <code class="language-plaintext highlighter-rouge">CURRENT_DATE</code> in <code class="language-plaintext highlighter-rouge">CASE</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4206">CALCITE-4206</a>]
<code class="language-plaintext highlighter-rouge">RelDecorrelator</code> outputs wrong plan for correlate sort with fetch limit</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4209">CALCITE-4209</a>]
In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, add an option to not simplify <code class="language-plaintext 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="language-plaintext highlighter-rouge">Join</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4210">CALCITE-4210</a>]
Replaying subqueries in <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelCrossType#getFieldCount()</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4220">CALCITE-4220</a>]
In <code class="language-plaintext highlighter-rouge">SqlToRelConverter</code>, use <code class="language-plaintext highlighter-rouge">RelBuilder</code> for creating <code class="language-plaintext highlighter-rouge">Aggregate</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4226">CALCITE-4226</a>]
Add <code class="language-plaintext highlighter-rouge">Mappings#asListNonNull</code> as a null-safe alternative for <code class="language-plaintext highlighter-rouge">Mappings#asList</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4237">CALCITE-4237</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext 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="language-plaintext highlighter-rouge">ImmutableBeans</code> should make an immutable copy of property values of type <code class="language-plaintext highlighter-rouge">List</code>, <code class="language-plaintext highlighter-rouge">Set</code>, or <code class="language-plaintext 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="language-plaintext highlighter-rouge">NOT LIKE</code> in join condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4266">CALCITE-4266</a>]
JDBC adapter throws <code class="language-plaintext highlighter-rouge">UnsupportedOperationException</code> if query contains range predicate on columns from sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4176">CALCITE-4176</a>]
Key descriptor can be optional in <code class="language-plaintext highlighter-rouge">SESSION</code> table function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4279">CALCITE-4279</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">Lists.transform</code> and <code class="language-plaintext highlighter-rouge">Iterables.transform</code> with <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">AggregateJoinRemoveRule</code> and <code class="language-plaintext highlighter-rouge">ProjectJoinRemoveRule</code> are not fired if the last column of the join’s left input is referenced (Liya Fan)</li>
<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="language-plaintext 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="language-plaintext highlighter-rouge">SqlOperandCountRange</code> throws <code class="language-plaintext highlighter-rouge">IllegalArgumentException</code> (Zhenghua Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4190">CALCITE-4190</a>]
<code class="language-plaintext highlighter-rouge">OR</code> simplification incorrectly loses term</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4195">CALCITE-4195</a>]
Cast between types with different collators must be evaluated as not monotonic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4200">CALCITE-4200</a>]
<code class="language-plaintext highlighter-rouge">ExceptionInInitializerError</code> when initializing DruidRules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4201">CALCITE-4201</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> when registering Druid rules due to conflict in description</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4221">CALCITE-4221</a>]
Update stale integration tests in Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4239">CALCITE-4239</a>]
<code class="language-plaintext highlighter-rouge">RelMdUniqueKeys</code> returns wrong unique keys for <code class="language-plaintext highlighter-rouge">Aggregate</code> with grouping sets</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4271">CALCITE-4271</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlToRelConverter</code>: <code class="language-plaintext highlighter-rouge">SELECT 1 IS DISTINCT FROM NULL</code> fails with <code class="language-plaintext 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>]
When parsing SQL in BigQuery dialect, split quoted table names that contain dots</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4247">CALCITE-4247</a>]
When parsing SQL in BigQuery dialect, character literals may be enclosed in single- or double-quotes, and use backslashes as escapes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4215">CALCITE-4215</a>]
Ensure <code class="language-plaintext highlighter-rouge">org.apache.calcite.schema.Statistic</code> uses <code class="language-plaintext highlighter-rouge">null</code> vs <code class="language-plaintext highlighter-rouge">emptyList</code> appropriately</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4227">CALCITE-4227</a>]
<code class="language-plaintext highlighter-rouge">ImmutableIntList#toArray(Integer[])</code> should support arguments larger than the collection itself</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4228">CALCITE-4228</a>]
<code class="language-plaintext highlighter-rouge">FlatLists.Flat6List#append</code> should not throw NPE if there are null elements in the list</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4229">CALCITE-4229</a>]
<code class="language-plaintext highlighter-rouge">Add Util.throwAsRuntime</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">HOP</code> and <code class="language-plaintext highlighter-rouge">SESSION</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4275">CALCITE-4275</a>]
<code class="language-plaintext highlighter-rouge">EnumerableMergeJoin#create</code> does not set <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">IllegalArgumentException</code> in <code class="language-plaintext highlighter-rouge">EnumerableBatchNestedLoopJoinRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4288">CALCITE-4288</a>]
Create <code class="language-plaintext 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>]
Make <code class="language-plaintext highlighter-rouge">org.apache.calcite.rel.type.RelDataType#getFamily</code> non-nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4298">CALCITE-4298</a>]
Avoid disabling hostname verification on HTTPS connections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4300">CALCITE-4300</a>]
<code class="language-plaintext highlighter-rouge">EnumerableBatchNestedLoopJoin</code> dynamic code generation can lead to variable name issues if two EBNLJ are nested</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4224">CALCITE-4224</a>]
Add a method for <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlParser.ConfigBuilder</code>
</li>
<li>Remove <code class="language-plaintext highlighter-rouge">ArrayList</code> allocation from <code class="language-plaintext 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="language-plaintext highlighter-rouge">Pair.left(Iterable)</code> and <code class="language-plaintext highlighter-rouge">Pair.right(Iterable)</code> implementation</li>
<li>Refactor <code class="language-plaintext highlighter-rouge">Pair</code> comparison to use <code class="language-plaintext highlighter-rouge">Comparator.nullsFirst</code> and <code class="language-plaintext highlighter-rouge">.naturalOrder</code>
</li>
<li>Obsolete <code class="language-plaintext highlighter-rouge">SqlToRelConverter.ConfigBuilder</code>, and refactor <code class="language-plaintext highlighter-rouge">SqlToRelConverterTest</code>
</li>
<li>Refactor <code class="language-plaintext highlighter-rouge">SqlParserTest</code>
</li>
<li>Minor refactoring of <code class="language-plaintext highlighter-rouge">DruidAdapterIT</code> and <code class="language-plaintext highlighter-rouge">DruidAdapter2IT</code>
</li>
</ul>
<h4 id="build-1-26-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4278">CALCITE-4278</a>]
Add Druid adapter tests in GitHub CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4259">CALCITE-4259</a>]
Support JDK 15 and Guava version 29.0-jre</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4184">CALCITE-4184</a>]
Update Gradle: 6.3 -&gt; 6.6</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4168">CALCITE-4168</a>]
Configure Gradle Local Build Cache</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4185">CALCITE-4185</a>]
Remove dependency between checkstyle and compilation tasks</li>
<li>Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">merge=union</code> strategy to avoid false merge conflicts on <code class="language-plaintext 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="language-plaintext highlighter-rouge">package-info</code> files with imports</li>
<li>Update <code class="language-plaintext 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>
</ul>
<h4 id="site-1-26-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3841">CALCITE-3841</a>]
Change downloads page to use downloads.apache.org</li>
<li>Fix documentation errors</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>
<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>
(e.g. <code class="language-plaintext highlighter-rouge">INTERVAL '1' HOUR</code>, <code class="language-plaintext 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>
<li><a href="https://issues.apache.org/jira/browse/CALCITE-2160">Spacial Functions</a></li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13, 14 and OpenJDK 8, 9, 10, 11, 12, 13, 14;
Guava versions 19.0 to 28.2-jre; other software versions as specified in
gradle.properties.</p>
<h4 id="breaking-1-25-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2569">CALCITE-2569</a>]
UDFs that are table functions must implement <code class="language-plaintext highlighter-rouge">SqlTableFunction</code> and have <code class="language-plaintext highlighter-rouge">CURSOR</code> as their return type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3923">CALCITE-3923</a>]
Refactor how planner rules are parameterized</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4079">CALCITE-4079</a>]
Dialect constants in <code class="language-plaintext highlighter-rouge">SqlDialect</code> can cause class initialization deadlock</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4128">CALCITE-4128</a>]
Remove dependency of File adapter on Example CSV adapter</li>
</ul>
<h4 id="new-features-1-25-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2160">CALCITE-2160</a>]
Spatial: Add functions <code class="language-plaintext highlighter-rouge">ST_MakeGrid</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">ProjectAggregateMergeRule</code>, to merge a <code class="language-plaintext highlighter-rouge">Project</code> onto an <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">BigDecimal</code> (Qi Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3957">CALCITE-3957</a>]
<code class="language-plaintext highlighter-rouge">AggregateMergeRule</code> should merge <code class="language-plaintext highlighter-rouge">SUM0</code> into <code class="language-plaintext highlighter-rouge">COUNT</code> even if <code class="language-plaintext highlighter-rouge">GROUP BY</code> is empty</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4150">CALCITE-4150</a>]
JDBC adapter throws <code class="language-plaintext highlighter-rouge">UnsupportedOperationException</code> when generating SQL for untyped <code class="language-plaintext highlighter-rouge">NULL</code> literal (Anton Haidai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4118">CALCITE-4118</a>]
RexSimplify might remove <code class="language-plaintext highlighter-rouge">CAST</code> from RexNode incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4145">CALCITE-4145</a>]
Exception when query from UDF field with structured type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4081">CALCITE-4081</a>]
Round-tripping a DECIMAL literal throws validation error</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4132">CALCITE-4132</a>]
Estimate the number of distinct values more accurately (Liya Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4102">CALCITE-4102</a>]
Some improvements to aggregate related operations (Liya Fan)</li>
</ul>
<h4 id="build-1-25-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4141">CALCITE-4141</a>]
Make checkstyle tasks relocatable to support Gradle build cache</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4137">CALCITE-4137</a>]
Checkstyle should ensure that every class has a Javadoc comment</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4156">CALCITE-4156</a>]
<code class="language-plaintext highlighter-rouge">ReflectiveRelMetadataProvider</code> constructor should throw an exception (instead of assertion) when called with an empty map</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4022">CALCITE-4022</a>]
Support unparse special syntax for <code class="language-plaintext highlighter-rouge">INSERT</code> (Xu Zhaohui)</li>
<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="language-plaintext highlighter-rouge">RelNode</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4111">CALCITE-4111</a>]
Remove <code class="language-plaintext 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="language-plaintext 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>
<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-4000">OFFSET</a> parameter in <code class="language-plaintext 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
SQL string with placeholders</li>
</ul>
<p>In this release, quite a few instance variables are deprecated and will be
removed before 1.25, such as <code class="language-plaintext highlighter-rouge">EnumerableToBindableConverterRule.INSTANCE</code>,
<code class="language-plaintext highlighter-rouge">CassandraToEnumerableConverterRule.INSTANCE</code> and so on. Besides, some methods
in <code class="language-plaintext highlighter-rouge">RelNode</code> are changed from ‘to removed before 2.0’ to ‘to be removed before 1.25’,
including <code class="language-plaintext highlighter-rouge">isDistinct()</code>, <code class="language-plaintext highlighter-rouge">isKey(ImmutableBitSet)</code>, <code class="language-plaintext highlighter-rouge">getQuery()</code>, <code class="language-plaintext highlighter-rouge">getRows()</code>,
<code class="language-plaintext highlighter-rouge">getVariablesStopped()</code>, <code class="language-plaintext highlighter-rouge">computeSelfCost()</code>, <code class="language-plaintext highlighter-rouge">isValid(boolean)</code>, <code class="language-plaintext highlighter-rouge">getCollationList()</code>,
<code class="language-plaintext highlighter-rouge">getChildExps()</code>. All deprecated APIs are strongly recommended to be replaced by their
replacements as soon as possible(<a href="https://issues.apache.org/jira/browse/CALCITE-3896">CALCITE-3923</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3896">CALCITE-4079</a>).</p>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13, 14 and OpenJDK 8, 9, 10, 11, 12, 13, 14;
Guava versions 19.0 to 28.2-jre; other software versions as specified in
gradle.properties.</p>
<h4 id="breaking-1-24-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4032">CALCITE-4032</a>]
Mark <code class="language-plaintext highlighter-rouge">CalcMergeRule</code> as <code class="language-plaintext highlighter-rouge">TransformationRule</code>. With this change, the <code class="language-plaintext highlighter-rouge">CalcMergeRule</code>
won’t match <code class="language-plaintext highlighter-rouge">PhysicalNode</code>(including <code class="language-plaintext highlighter-rouge">EnumerableCalc</code>) in <code class="language-plaintext 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="language-plaintext highlighter-rouge">PhysicalNode</code> generation in <code class="language-plaintext highlighter-rouge">TransformationRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3786">CALCITE-3786</a>]
Change <code class="language-plaintext highlighter-rouge">RelNode#recomputeDigest()</code> return type from <code class="language-plaintext highlighter-rouge">String</code> to <code class="language-plaintext highlighter-rouge">void</code>
</li>
</ul>
<h4 id="new-features-1-24-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4000">CALCITE-4000</a>]
Support <code class="language-plaintext highlighter-rouge">OFFSET</code> parameter in <code class="language-plaintext highlighter-rouge">TUMBLE/HOP</code> table functions (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3916">CALCITE-3916</a>]
Support top-down rule applying and upper bound space pruning</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3941">CALCITE-3941</a>]
Add the default strict mode to the path in the Json functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3724">CALCITE-3724</a>]
Presto dialect implementation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3946">CALCITE-3946</a>]
Add parser support for <code class="language-plaintext highlighter-rouge">MULTISET/SET</code> and <code class="language-plaintext highlighter-rouge">VOLATILE</code> modifiers in <code class="language-plaintext highlighter-rouge">CREATE TABLE</code> statements (Drew Schmitt)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4089">CALCITE-4089</a>]
In Babel, allow <code class="language-plaintext highlighter-rouge">CAST(integer AS DATE)</code> even though it is illegal in Calcite SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4087">CALCITE-4087</a>]
<code class="language-plaintext highlighter-rouge">Hoist</code>, a utility to replace literals in a SQL string with placeholders</li>
</ul>
<h4 id="fixes-1-24-0">Bug fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4073">CALCITE-4073</a>]
Add a new component <code class="language-plaintext highlighter-rouge">RexNormalize</code> for more effect rex nodes normalization</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3224">CALCITE-3224</a>]
New implementation of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Digest</code> from <code class="language-plaintext highlighter-rouge">RelNode</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableSortedAggregate</code> (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3972">CALCITE-3972</a>]
Allow <code class="language-plaintext highlighter-rouge">RelBuilder</code> to create <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">VolcanoRuleCall</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4123">CALCITE-4123</a>]
Make <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlDotOperator</code> &amp; <code class="language-plaintext 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="language-plaintext highlighter-rouge">HAVING</code> clause with a <code class="language-plaintext highlighter-rouge">Project</code> on <code class="language-plaintext highlighter-rouge">Filter</code> on <code class="language-plaintext 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="language-plaintext highlighter-rouge">CalciteConnectionConfig</code> in <code class="language-plaintext highlighter-rouge">DecorrelateProgram</code> &amp; 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="language-plaintext 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="language-plaintext highlighter-rouge">Pair</code> with <code class="language-plaintext highlighter-rouge">Flat2List</code> in <code class="language-plaintext highlighter-rouge">RelDigestWriter</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4092">CALCITE-4092</a>]
<code class="language-plaintext highlighter-rouge">NPE</code> using <code class="language-plaintext highlighter-rouge">WITH</code> clause without a corresponding <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlOperator</code> of <code class="language-plaintext highlighter-rouge">SqlKind#OTHER_FUNCTION</code> to define a <code class="language-plaintext highlighter-rouge">Strong.Policy</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3834">CALCITE-3834</a>]
Support <code class="language-plaintext highlighter-rouge">AntiJoin</code> in <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelJson.toJson(RelDistribution)</code> (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4066">CALCITE-4066</a>]
<code class="language-plaintext highlighter-rouge">SqlTypeUtil#convertTypeToSpec</code> cover <code class="language-plaintext highlighter-rouge">Array/Multiset/Row</code> types (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4059">CALCITE-4059</a>]
<code class="language-plaintext highlighter-rouge">SqlTypeUtil#equalSansNullability</code> consider <code class="language-plaintext highlighter-rouge">Array/Map</code> type (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4026">CALCITE-4026</a>]
<code class="language-plaintext highlighter-rouge">CassandraFilter</code> has generated wrong condition expression for filter with non string literal (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4077">CALCITE-4077</a>]
Exception when joined with built-in table functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4097">CALCITE-4097</a>]
Avoid requesting unnecessary trait request when deriving traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4033">CALCITE-4033</a>]
Does not produce parenthesized table expressions for <code class="language-plaintext highlighter-rouge">UNNEST</code> (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4049">CALCITE-4049</a>]
Improve the implementation of the shortest-path algorithm</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3929">CALCITE-3929</a>]
When deserialize UDAF aggregate call from json string, throws <code class="language-plaintext highlighter-rouge">NPE</code> (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4062">CALCITE-4062</a>]
Support deserialize UDF array type from json string (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4090">CALCITE-4090</a>]
When generating SQL for DB2, a complex <code class="language-plaintext highlighter-rouge">SELECT</code> above a sub-query generates a bad table alias (Steven Talbot)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4083">CALCITE-4083</a>]
<code class="language-plaintext highlighter-rouge">RelTraitSet</code> failed to canonize traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4019">CALCITE-4019</a>]
Visit <code class="language-plaintext highlighter-rouge">SqlInsert</code> with <code class="language-plaintext highlighter-rouge">SqlShuttle</code> cause <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SqlCollation</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4020">CALCITE-4020</a>]
Support <code class="language-plaintext highlighter-rouge">Calc</code> operator in <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableCalc</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4055">CALCITE-4055</a>]
<code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RexVisitor</code>, <code class="language-plaintext highlighter-rouge">RexBiVisitor</code>, <code class="language-plaintext highlighter-rouge">RelOptUtil.InputFinder</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4053">CALCITE-4053</a>]
<code class="language-plaintext highlighter-rouge">RexSimplify</code> should not pass exprs containing non-const subExprs to <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableCorrelate</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4007">CALCITE-4007</a>]
<code class="language-plaintext 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>]
Support trait propagation for <code class="language-plaintext highlighter-rouge">EnumerableHashJoin</code> and <code class="language-plaintext highlighter-rouge">EnumerableNestedLoopJoin</code> (Rui Wang)</li>
<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="language-plaintext highlighter-rouge">OptimizeTask</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4042">CALCITE-4042</a>]
<code class="language-plaintext highlighter-rouge">JoinCommuteRule</code> must not match <code class="language-plaintext highlighter-rouge">SEMI</code> / <code class="language-plaintext highlighter-rouge">ANTI</code> join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4043">CALCITE-4043</a>]
Improve <code class="language-plaintext highlighter-rouge">IllegalArgumentException</code> message in <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelSet.getOrCreateSubset()</code> (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3981">CALCITE-3981</a>]
<code class="language-plaintext highlighter-rouge">Volcano.register</code> should not return stale subset (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2997">CALCITE-2997</a>]
In <code class="language-plaintext highlighter-rouge">SqlToRelConverter</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelTrait</code>, <code class="language-plaintext highlighter-rouge">RelTraitSet</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableProject</code> and <code class="language-plaintext highlighter-rouge">EnumerableFilter</code> (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4019">CALCITE-4019</a>]
Visit <code class="language-plaintext highlighter-rouge">SqlInsert</code> with <code class="language-plaintext highlighter-rouge">SqlShuttle</code> cause <code class="language-plaintext highlighter-rouge">NullPointerException</code> (Xu ZhaoHui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4004">CALCITE-4004</a>]
Show <code class="language-plaintext 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="language-plaintext highlighter-rouge">ProjectJoinTransposeRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3999">CALCITE-3999</a>]
Simplify <code class="language-plaintext highlighter-rouge">DialectPool</code> implementation using Guava cache</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3910">CALCITE-3910</a>]
Enhance <code class="language-plaintext highlighter-rouge">ProjectJoinTransposeRule</code> to support <code class="language-plaintext highlighter-rouge">SemiJoin</code> and <code class="language-plaintext highlighter-rouge">AntiJoin</code> (Liya Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3988">CALCITE-3988</a>]
Intersect in <code class="language-plaintext highlighter-rouge">RelMdRowCount</code> doesn’t take into account <code class="language-plaintext highlighter-rouge">intersect all</code> (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3985">CALCITE-3985</a>]
Simplify grouped window function in parser (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4086">CALCITE-4086</a>]
Upgrade Avatica version to 1.17.0</li>
</ul>
<h4 id="build-1-24-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4075">CALCITE-4075</a>]
Mock table ‘EMPNULLABLES’ should allow nulls in all non-pk columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4101">CALCITE-4101</a>]
Calcite PR CI often failed due to <code class="language-plaintext highlighter-rouge">elasticsearch:test</code>, disable the related tests first (Jiatao Tao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4061">CALCITE-4061</a>]
Build should fail if Calcite code uses deprecated APIs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-4104">CALCITE-4104</a>]
Add automatically link to GitHub PR and ‘pull-request-available’ label to issues</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3478">CALCITE-3478</a>]
Restructure tests for materialized views (Jin Xing)</li>
</ul>
<h4 id="site-1-24-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3950">CALCITE-3950</a>]
Doc of <code class="language-plaintext highlighter-rouge">SqlGroupingFunction</code> contradicts its behavior</li>
<li>Site: Remove ‘(for Calcite committers)’ suffix from headers in section dedicated to committers</li>
<li>Site: Add instructions for managing Calcite repos through GitHub</li>
<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>
<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
and bug-fixes. For some complex queries, the planning speed can be 50x or more
faster than previous versions with built-in default rule set. It is also worth
highlighting the following.</p>
<ul>
<li>
<code class="language-plaintext 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="language-plaintext highlighter-rouge">VolcanoPlanner</code> performance by removing rule match and subset importance
(<a href="https://issues.apache.org/jira/browse/CALCITE-3753">CALCITE-3753</a>)</li>
<li>Improve <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> performance when abstract converter is enabled
(<a href="https://issues.apache.org/jira/browse/CALCITE-2970">CALCITE-2970</a>)</li>
<li>Support ClickHouse dialect
(<a href="https://issues.apache.org/jira/browse/CALCITE-2157">CALCITE-2157</a>)</li>
<li>Support <code class="language-plaintext highlighter-rouge">SESSION</code> and <code class="language-plaintext highlighter-rouge">HOP</code> Table function
(<a href="https://issues.apache.org/jira/browse/CALCITE-3780">CALCITE-3780</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3737">CALCITE-3737</a>)</li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13, 14 and OpenJDK 8, 9, 10, 11, 12, 13, 14;
Guava versions 19.0 to 28.2-jre; other software versions as specified in
gradle.properties.</p>
<h4 id="breaking-1-23-0">Breaking Changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3877">CALCITE-3877</a>]
In <code class="language-plaintext highlighter-rouge">RexWindow</code>, make fields <code class="language-plaintext highlighter-rouge">upperBound</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">ruleSet</code>(protected)and <code class="language-plaintext highlighter-rouge">ruleNames</code>(private) in <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3753">CALCITE-3753</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> flags <code class="language-plaintext highlighter-rouge">impatient</code> and <code class="language-plaintext highlighter-rouge">ambitious</code> are removed, alternatively
use <code class="language-plaintext highlighter-rouge">checkCancel()</code> to achieve <code class="language-plaintext highlighter-rouge">impatient</code> mode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3997">CALCITE-3997</a>]
In <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code>, transformation rules won’t match with Enumerable physical
operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3825">CALCITE-3825</a>]
Split <code class="language-plaintext highlighter-rouge">AbstractMaterializedViewRule</code> into multiple classes (addendum)</li>
</ul>
<h4 id="new-features-1-23-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3896">CALCITE-3896</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> supports top down trait request and trait enforcement without
abstract converter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3780">CALCITE-3780</a>]
Support <code class="language-plaintext highlighter-rouge">SESSION</code> Table function (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3737">CALCITE-3737</a>]
Support <code class="language-plaintext highlighter-rouge">HOP</code> Table function (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3789">CALCITE-3789</a>]
Support Presto style <code class="language-plaintext highlighter-rouge">unnest</code> with items alias (Will Yu)</li>
<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="language-plaintext highlighter-rouge">SemiJoin</code> in <code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3684">CALCITE-3684</a>]
Support <code class="language-plaintext highlighter-rouge">CONCAT</code> for variable arguments (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3285">CALCITE-3285</a>]
<code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code> support non-equi join conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3694">CALCITE-3694</a>]
Implement <code class="language-plaintext highlighter-rouge">SINH</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3647">CALCITE-3647</a>]
Support MySQL <code class="language-plaintext highlighter-rouge">COMPRESS</code> function (ritesh-kapoor)</li>
<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="language-plaintext highlighter-rouge">EVERY</code>, <code class="language-plaintext highlighter-rouge">SOME</code>, <code class="language-plaintext highlighter-rouge">INTERSECTION</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3704">CALCITE-3704</a>]
Implement <code class="language-plaintext highlighter-rouge">STRCMP</code> function</li>
</ul>
<h4 id="fixes-1-23-0">Bug fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3984">CALCITE-3984</a>]
Support <code class="language-plaintext highlighter-rouge">Exchange</code> operator in <code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> (Xu Zhaohui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3971">CALCITE-3971</a>]
Support <code class="language-plaintext highlighter-rouge">Calc</code> in <code class="language-plaintext highlighter-rouge">RelMdColumnOrigins</code> (Xu ZhaoHui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3921">CALCITE-3921</a>]
Support <code class="language-plaintext highlighter-rouge">TableModify</code> json serialization and deserialization (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3938">CALCITE-3938</a>]
Support <code class="language-plaintext highlighter-rouge">LogicalCalc</code> in <code class="language-plaintext highlighter-rouge">RelShuttle</code> (dz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3880">CALCITE-3880</a>]
Add <code class="language-plaintext highlighter-rouge">SortExchange</code> support to <code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> (Krisztian Kasa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3867">CALCITE-3867</a>]
Support <code class="language-plaintext highlighter-rouge">RelDistribution</code> json serialization (Krisztian Kasa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3634">CALCITE-3634</a>]
Add <code class="language-plaintext highlighter-rouge">IntersectOnCalcsToIntersectUnifyRule</code> for materialized view recognition
(dz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3934">CALCITE-3934</a>]
Allow type-coercion in <code class="language-plaintext highlighter-rouge">CONCAT</code> operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3889">CALCITE-3889</a>]
Add <code class="language-plaintext highlighter-rouge">apply(Mappings.Mapping)</code> to <code class="language-plaintext highlighter-rouge">RelTrait</code> and <code class="language-plaintext highlighter-rouge">RelTraitSet</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3838">CALCITE-3838</a>]
Support <code class="language-plaintext highlighter-rouge">Calc</code> in <code class="language-plaintext highlighter-rouge">RelMdSize</code>, <code class="language-plaintext highlighter-rouge">RelMdSelectivity</code>, <code class="language-plaintext highlighter-rouge">RelMdMaxRowCount</code>,
<code class="language-plaintext highlighter-rouge">RelMdMinRowCount</code>, <code class="language-plaintext highlighter-rouge">RelMdTableReferences</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3718">CALCITE-3718</a>]
Support <code class="language-plaintext highlighter-rouge">Intersect</code> and <code class="language-plaintext highlighter-rouge">Minus</code> in <code class="language-plaintext highlighter-rouge">Bindables</code> (xzh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3997">CALCITE-3997</a>]
Logical rules matched with physical operators but failed to handle traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3979">CALCITE-3979</a>]
Simplification might have removed CAST expression(s) incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3968">CALCITE-3968</a>]
TPC-H queries take forever for planning</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3877">CALCITE-3877</a>]
In <code class="language-plaintext highlighter-rouge">RexWindow</code>, make fields <code class="language-plaintext highlighter-rouge">upperBound</code> and <code class="language-plaintext highlighter-rouge">lowerBound</code> not-nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3969">CALCITE-3969</a>]
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="language-plaintext highlighter-rouge">FilterMergeRule</code> to rely on <code class="language-plaintext highlighter-rouge">RelBuilder</code> instead of <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RedisTable</code> is created (Xu
Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3961">CALCITE-3961</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner.prunedNodes</code> info is lost when duplicate <code class="language-plaintext highlighter-rouge">RelNode</code> is discarded
(Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3866">CALCITE-3866</a>]
“numeric field overflow” when running the generated SQL in PostgreSQL (Wenhui
Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3926">CALCITE-3926</a>]
<code class="language-plaintext highlighter-rouge">CannotPlanException</code> when an empty LogicalValues requires a certain collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3973">CALCITE-3973</a>]
Hints should not unparse as enclosed in parentheses (Alex Baden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3887">CALCITE-3887</a>]
<code class="language-plaintext highlighter-rouge">Filter</code> and <code class="language-plaintext highlighter-rouge">Join</code> conditions may not need to retain nullability during
simplifications</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3966">CALCITE-3966</a>]
Trigger rules for existing <code class="language-plaintext highlighter-rouge">RelSubset</code> when it becomes delivered</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3928">CALCITE-3928</a>]
Trim unused fields before materialized view matching (dz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3962">CALCITE-3962</a>]
Make <code class="language-plaintext highlighter-rouge">JSON_VALUE</code> operands varadic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3827">CALCITE-3827</a>]
Reduce the time complexity of finding in-edges of a vertex in the graph (Liya
Fan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3878">CALCITE-3878</a>]
Create <code class="language-plaintext highlighter-rouge">ArrayList</code> with initial capacity when size is known (Xu Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3949">CALCITE-3949</a>]
<code class="language-plaintext highlighter-rouge">RelDistributions.of()</code> and <code class="language-plaintext highlighter-rouge">RelCollations.of()</code> should canonize trait instance</li>
<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="language-plaintext highlighter-rouge">RexCall</code> from <code class="language-plaintext 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="language-plaintext highlighter-rouge">DEBUG</code> log level
(Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3948">CALCITE-3948</a>]
<code class="language-plaintext highlighter-rouge">RelSubset</code> matching is not properly handled in <code class="language-plaintext highlighter-rouge">VolcanoRuleCall</code> (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3758">CALCITE-3758</a>]
<code class="language-plaintext highlighter-rouge">FilterTableScanRule</code> generate wrong mapping for filter condition when
underlying is <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlValidator.Config</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3939">CALCITE-3939</a>]
Change <code class="language-plaintext highlighter-rouge">UnionEliminatorRule</code> and <code class="language-plaintext highlighter-rouge">ProjectRemoveRule</code> to auto pruning
<code class="language-plaintext highlighter-rouge">SubstitutionRule</code> (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3944">CALCITE-3944</a>]
Move <code class="language-plaintext highlighter-rouge">dumpSets</code> and <code class="language-plaintext highlighter-rouge">dumpGraphviz</code> out of <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3927">CALCITE-3927</a>]
<code class="language-plaintext 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>]
Remove redundant <code class="language-plaintext highlighter-rouge">ruleSet</code>(protected)and <code class="language-plaintext highlighter-rouge">ruleNames</code>(private) in VolcanoPlanner</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3940">CALCITE-3940</a>]
<code class="language-plaintext highlighter-rouge">Hint</code> item can not parse correctly if the name is right after token /*+</li>
<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="language-plaintext 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>]
SET operation between <code class="language-plaintext highlighter-rouge">DATE</code> and <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> returns a wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3881">CALCITE-3881</a>]
<code class="language-plaintext highlighter-rouge">SqlFunctions#addMonths</code> yields incorrect results in some corner case
(Zhenghua Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3324">CALCITE-3324</a>]
Set <code class="language-plaintext highlighter-rouge">updateCount</code> when creating <code class="language-plaintext highlighter-rouge">MetaResultSet</code> (Robert Yokota)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3733">CALCITE-3733</a>]
In JDBC adapter, when generating SQL for MYSQL, generate <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> type as
<code class="language-plaintext highlighter-rouge">DATETIME</code> for <code class="language-plaintext highlighter-rouge">CAST</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3909">CALCITE-3909</a>]
<code class="language-plaintext highlighter-rouge">RelMdMinRowCount</code> doesn’t take into account <code class="language-plaintext highlighter-rouge">UNION</code> <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">UNION ALL</code> applied to <code class="language-plaintext highlighter-rouge">VALUES</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3865">CALCITE-3865</a>]
<code class="language-plaintext highlighter-rouge">RelCollationTraitDef.canConvert</code> should always return true</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2970">CALCITE-2970</a>]
Improve <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> performance when enabling abstract converter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3914">CALCITE-3914</a>]
Improve <code class="language-plaintext highlighter-rouge">SubstitutionVisitor</code> to consider <code class="language-plaintext highlighter-rouge">RexCall</code> of type <code class="language-plaintext highlighter-rouge">PLUS</code> and <code class="language-plaintext highlighter-rouge">TIMES</code>
for canonicalization (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3912">CALCITE-3912</a>]
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="language-plaintext highlighter-rouge">Config</code> for <code class="language-plaintext highlighter-rouge">SqlValidator</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3908">CALCITE-3908</a>]
<code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">RelOptPredicateList</code> may generate incorrect map of constant values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3835">CALCITE-3835</a>]
Overloaded table functions fail with an assertion error if param types differ</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3851">CALCITE-3851</a>]
Replace the node importance map with a set for pruned nodes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3872">CALCITE-3872</a>]
Simplify expressions with unary minus</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3814">CALCITE-3814</a>]
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="language-plaintext highlighter-rouge">RelToSqlConverter</code> should not merge a <code class="language-plaintext highlighter-rouge">Project</code> that contains a window function
that references a window function in input <code class="language-plaintext 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="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3886">CALCITE-3886</a>]
Execute substitution rule according to the order they get matched</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3882">CALCITE-3882</a>]
Remove duplicated code from <code class="language-plaintext highlighter-rouge">SqlTypeAssignmentRule</code> (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3846">CALCITE-3846</a>]
<code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code>: wrong comparison of composite key with null values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3829">CALCITE-3829</a>]
<code class="language-plaintext highlighter-rouge">MergeJoinEnumerator</code> should not use inputs enumerators until it is really
required</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3840">CALCITE-3840</a>]
Re-aliasing of <code class="language-plaintext highlighter-rouge">VALUES</code> that has column aliases produces wrong SQL in the JDBC
adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3810">CALCITE-3810</a>]
Render <code class="language-plaintext highlighter-rouge">ANTI</code> and <code class="language-plaintext highlighter-rouge">SEMI</code> join to <code class="language-plaintext highlighter-rouge">NOT EXISTS</code> and <code class="language-plaintext highlighter-rouge">EXISTS</code> in the JDBC adapter.
Also add forgotten <code class="language-plaintext highlighter-rouge">IS_DISTINCT_FROM</code> translation support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3852">CALCITE-3852</a>]
<code class="language-plaintext highlighter-rouge">RexSimplify</code> doesn’t simplify NOT EQUAL predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3862">CALCITE-3862</a>]
Materialized view rewriting algorithm throws <code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code>
(Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3856">CALCITE-3856</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">Mappings$NoElementException</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3845">CALCITE-3845</a>]
<code class="language-plaintext highlighter-rouge">CASE WHEN</code> expression with nullability <code class="language-plaintext highlighter-rouge">CAST</code> is considered as reduced wrongly in
<code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelNode</code> when merging child <code class="language-plaintext highlighter-rouge">RelSet</code> with parent <code class="language-plaintext highlighter-rouge">RelSet</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3809">CALCITE-3809</a>]
<code class="language-plaintext highlighter-rouge">RexSimplify</code> simplifies nondeterministic function incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3828">CALCITE-3828</a>]
MergeJoin throws NPE in case of null keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3820">CALCITE-3820</a>]
<code class="language-plaintext highlighter-rouge">EnumerableDefaults#orderBy</code> should be lazily computed + support enumerator
re-initialization</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3837">CALCITE-3837</a>]
AntiJoin with empty right input can always be transformed as its left input</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3821">CALCITE-3821</a>]
<code class="language-plaintext highlighter-rouge">RelOptUtil::containsMultisetOrWindowedAgg</code> doesn’t really check multiset
(Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3825">CALCITE-3825</a>]
Split <code class="language-plaintext highlighter-rouge">AbstractMaterializedViewRule</code> into multiple classes (addendum)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3824">CALCITE-3824</a>]
<code class="language-plaintext highlighter-rouge">JoinProjectTransposeRule</code> should skip Projects containing windowing expression
(Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3734">CALCITE-3734</a>]
MySQL JDBC rewrite is producing queries with CHAR with range beyond 255 (Vineet
Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3817">CALCITE-3817</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> does not remove the entry in ruleNames when removing a rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2592">CALCITE-2592</a>]
<code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code> is never taken</li>
</ul>
<h4 id="build-1-23-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3965">CALCITE-3965</a>]
Avoid <code class="language-plaintext highlighter-rouge">DiffRepository</code> lock contention</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3924">CALCITE-3924</a>]
Fix flakey test to handle <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> and <code class="language-plaintext highlighter-rouge">TIMESTAMP(0)</code> correctly (neoReMinD)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3888">CALCITE-3888</a>]
Switch avatica-server to be test dependency for core</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3660">CALCITE-3660</a>]
Disable flaky test <code class="language-plaintext highlighter-rouge">PigRelBuilderStyleTest</code> since it fails too often for no reason</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3892">CALCITE-3892</a>]
Make junit test classes and methods non-public where possible</li>
<li>Update release-plugins: 1.65 -&gt; 1.70</li>
<li>Avoid failures in SourceTest when filesystem does not support unicode paths</li>
<li>Add AvoidStarImport Checkstyle rule</li>
<li>The release tag should be ‘calcite-N.N’ not ‘vN.N’</li>
</ul>
<h4 id="site-1-23-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3958">CALCITE-3958</a>]
Revise documentation of gradle.properties in Cassandra/Piglet and
<code class="language-plaintext highlighter-rouge">SubstitutionVisitor</code> (xzh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3726">CALCITE-3726</a>]
Documentation for Declaring Objects For Types Defined In Schema (ritesh-kapoor)</li>
<li>Site: Add Ant Financial logo in powered-by image (Wang Yanlin)</li>
<li>Site: Change affiliation of Stamatis Zampetakis</li>
<li>Site: Add Forward Xu, Jin Xing, Wang Yanlin, as committers</li>
<li>Site: Add Vineet Garg as committer</li>
<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>
<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
general 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-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>
<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>
</ul>
<p>We have also fixed some important bugs:</p>
<ul>
<li>Merging <code class="language-plaintext highlighter-rouge">RelSet</code> sometimes gave
<a href="https://issues.apache.org/jira/browse/CALCITE-2018">inconsistent state</a>,</li>
<li>The <code class="language-plaintext highlighter-rouge">GROUP_ID</code> function gave
<a href="https://issues.apache.org/jira/browse/CALCITE-1824">incorrect results</a>,</li>
<li>Improve row count estimate for
<a href="https://issues.apache.org/jira/browse/CALCITE-3711">Correlate</a>
relational expression,</li>
<li>When applying the
<a href="https://issues.apache.org/jira/browse/CALCITE-3435">MOD operation to DECIMAL values</a>
the inferred type was incorrrect.</li>
</ul>
<p>Compatibility: This release is tested on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13 and OpenJDK 8, 9, 10, 11, 12, 13;
Guava versions 19.0 to 27.1-jre; Apache Flink 1.10.0;
other software versions as specified in gradle.properties.</p>
<h4 id="breaking-changes">Breaking Changes</h4>
<ul>
<li>Constructors for <code class="language-plaintext highlighter-rouge">Project</code>, <code class="language-plaintext highlighter-rouge">TableScan</code>, <code class="language-plaintext highlighter-rouge">Calc</code>, <code class="language-plaintext highlighter-rouge">Aggregate</code> and <code class="language-plaintext highlighter-rouge">Join</code> introduce new parameter named <code class="language-plaintext highlighter-rouge">hints</code> (<a href="https://issues.apache.org/jira/browse/CALCITE-482">CALCITE-482</a>)</li>
<li>Logical <code class="language-plaintext highlighter-rouge">RelNode</code>’s <code class="language-plaintext 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="language-plaintext highlighter-rouge">Project</code> names will not represent in <code class="language-plaintext highlighter-rouge">RelNode</code> digest anymore (<a href="https://issues.apache.org/jira/browse/CALCITE-3713">CALCITE-3713</a>)</li>
<li>
<code class="language-plaintext highlighter-rouge">RexCall</code>s are default to be normalized in the <code class="language-plaintext highlighter-rouge">RelNode</code> digest (<a href="https://issues.apache.org/jira/browse/CALCITE-2450">CALCITE-2450</a>)</li>
<li>
<code class="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder.scan</code> and sql-to-rel conversion always invoke <code class="language-plaintext highlighter-rouge">RelOptTable.toRel</code> now, so there may be some plan changes for the <code class="language-plaintext highlighter-rouge">TableScan</code> node if your <code class="language-plaintext highlighter-rouge">RelOptTable.toRel</code> returns a physical rel before</li>
</ul>
<h4 id="new-features-1-22-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3771">CALCITE-3771</a>] <code class="language-plaintext highlighter-rouge">TRIM</code> Support for HIVE/SPARK Dialect (Dhirenda Gautam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3707">CALCITE-3707</a>] Implement <code class="language-plaintext highlighter-rouge">COSH</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3695">CALCITE-3695</a>] Implement <code class="language-plaintext highlighter-rouge">TANH</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3640">CALCITE-3640</a>] Oracle <code class="language-plaintext highlighter-rouge">EXISTSNODE</code> Function Support (ritesh-kapoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3382">CALCITE-3382</a>] Support <code class="language-plaintext highlighter-rouge">TUMBLE</code> as Table Value Function (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3510">CALCITE-3510</a>] Implement Redis adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3684">CALCITE-3684</a>] Implement <code class="language-plaintext highlighter-rouge">CBRT</code> function (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3663">CALCITE-3663</a>] Support for <code class="language-plaintext highlighter-rouge">TRIM</code> function in BigQuery Dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3580">CALCITE-3580</a>] Oracle <code class="language-plaintext highlighter-rouge">EXTRACT(XML)</code> Function Support (ritesh-kapoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3579">CALCITE-3579</a>] Oracle <code class="language-plaintext highlighter-rouge">XMLTRANSFORM</code> Function Support (ritesh-kapoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3591">CALCITE-3591</a>] Add bit_xor aggregate operator (wangxlong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3552">CALCITE-3552</a>] Support MySQL <code class="language-plaintext highlighter-rouge">ExtractValue</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3542">CALCITE-3542</a>] Implement <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext 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-3496">CALCITE-3496</a>] Hive dialect and MS SQL dialect support with cube and with rollup (dz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3465">CALCITE-3465</a>] Add support for missing Cassandra 3.x data types (Alessandro Solimando)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3442">CALCITE-3442</a>] In ElasticSearch adapter, set <code class="language-plaintext highlighter-rouge">stored_fields = _none_</code> to prohibit FetchPhase get involved (Yunfeng,Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3437">CALCITE-3437</a>] Support <code class="language-plaintext highlighter-rouge">MatchQuery</code> in ElasticSearch adapter (Shlok Srivastava)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3434">CALCITE-3434</a>] ElasticSearch schema with pathPrefix (Jeffery Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3405">CALCITE-3405</a>] Prune columns for <code class="language-plaintext highlighter-rouge">ProjectableFilterableTable</code> when <code class="language-plaintext 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="language-plaintext highlighter-rouge">CREATE FUNCTION</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">CLASSIFIER</code> and <code class="language-plaintext highlighter-rouge">LAST</code> functions for <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3112">CALCITE-3112</a>] Support <code class="language-plaintext highlighter-rouge">Window</code> in <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> (Wenhui Tang)</li>
</ul>
<h4 id="fixes-1-22-0">Bug fixes, API changes and minor enhancements</h4>
<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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RexSimplify</code> to simplify ‘a&gt;1 or (a&lt;3 and b)’ to ‘a&gt;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="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3801">CALCITE-3801</a>] Deprecate <code class="language-plaintext highlighter-rouge">SqlToRelConverter.Config#isConvertTableAccess</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3791">CALCITE-3791</a>] <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">TableScanRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3774">CALCITE-3774</a>] In <code class="language-plaintext highlighter-rouge">RelBuilder</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder.aggregate</code> should prune unused fields from the input, if the input is a <code class="language-plaintext highlighter-rouge">Project</code>
</li>
<li>Add <code class="language-plaintext highlighter-rouge">RelBuilder.transform</code>, which allows you to clone a <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">PruneEmptyRules#JOIN_RIGHT_INSTANCE</code> wrong behavior for <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableMergeJoin::create</code> `method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3768">CALCITE-3768</a>] <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder.Config</code> to an interface, and deprecate <code class="language-plaintext highlighter-rouge">RelBuilder.ConfigBuilder</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3764">CALCITE-3764</a>] <code class="language-plaintext highlighter-rouge">AggregateCaseToFilterRule</code> handles <code class="language-plaintext highlighter-rouge">NULL</code> values incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1824">CALCITE-1824</a>] <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelSubset</code> should not match <code class="language-plaintext 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="language-plaintext highlighter-rouge">INSERT</code> statement</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3676">CALCITE-3676</a>] <code class="language-plaintext 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="language-plaintext highlighter-rouge">TableModify</code> in <code class="language-plaintext highlighter-rouge">ToLogicalConverter</code> (dz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3668">CALCITE-3668</a>] <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> does not match all the <code class="language-plaintext highlighter-rouge">RelSubSet</code> in matchRecursive</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3744">CALCITE-3744</a>] Duplicate rule matches when <code class="language-plaintext highlighter-rouge">RelSet</code> gets merged</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3747">CALCITE-3747</a>] Constructing <code class="language-plaintext highlighter-rouge">BETWEEN</code> with <code class="language-plaintext highlighter-rouge">RelBuilder</code> throws class cast exception</li>
<li>Add HSQLDB data sets (scott, foodmart and chinook) to SQLLine’s path</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3735">CALCITE-3735</a>] In <code class="language-plaintext highlighter-rouge">ImmutableBeans</code>, allow interfaces to have default methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3736">CALCITE-3736</a>] Add an interface in <code class="language-plaintext 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="language-plaintext highlighter-rouge">Filter</code> of distinct aggregate call is lost after applying <code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> (Shuo Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3644">CALCITE-3644</a>] Add <code class="language-plaintext highlighter-rouge">ProjectSetOpTransposeRule</code> to normalize materialized view (xy2953396112)</li>
<li>Add method <code class="language-plaintext highlighter-rouge">Pair.forEach(Iterable, Iterable, BiConsumer)</code>
</li>
<li>Really deprecate <code class="language-plaintext highlighter-rouge">RelBuilder.groupKey(ImmutableBitSet, ImmutableList&lt;ImmutableBitSet&gt;)</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="language-plaintext highlighter-rouge">RelMetadataTest</code> fails with NPE due to unsafe <code class="language-plaintext 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>
<li>Refine rules so they produce less no-op matches</li>
<li>Refine logging dependencies: keep slf4j bridges in runtime classpath only</li>
<li>Refine <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">Project#digest</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2450">CALCITE-2450</a>] Reorder <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelOptTable</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3714">CALCITE-3714</a>] <code class="language-plaintext 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="language-plaintext highlighter-rouge">RexSimplify</code>: CAST(CAST(intExpr as BIGINT) as INT) =&gt; intExpr</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3587">CALCITE-3587</a>] <code class="language-plaintext highlighter-rouge">RexBuilder</code> may lose decimal fraction for creating literal with <code class="language-plaintext highlighter-rouge">DECIMAL</code> type (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3658">CALCITE-3658</a>] <code class="language-plaintext highlighter-rouge">TableModify</code> of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Correlate</code> should override <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">TableFunctionScan</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3666">CALCITE-3666</a>] Refine <code class="language-plaintext highlighter-rouge">RelMdColumnUniqueness</code> and <code class="language-plaintext highlighter-rouge">RelMdUniqueKeys</code> for <code class="language-plaintext highlighter-rouge">Calc</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3655">CALCITE-3655</a>] <code class="language-plaintext highlighter-rouge">SortJoinTransposeRule</code> must not push sort into <code class="language-plaintext highlighter-rouge">Project</code> that contains <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3621">CALCITE-3621</a>] Push down sort to DB, SQL of <code class="language-plaintext highlighter-rouge">Sort</code> rel contains explicit field name instead of * (Lei Jiang)</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="language-plaintext 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="language-plaintext highlighter-rouge">ReduceExpressionsRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3607">CALCITE-3607</a>] Support <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3525">CALCITE-3525</a>] <code class="language-plaintext highlighter-rouge">RexSimplify</code>: eliminate redundant rex calls in OR</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3620">CALCITE-3620</a>] Remove implicit lateral operator for temporal table join</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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SqlLateralOperator</code>’s unparse add additional keyword <code class="language-plaintext highlighter-rouge">LATERAL</code> when the inner operator is <code class="language-plaintext highlighter-rouge">SqlSnapshot</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3599">CALCITE-3599</a>] Override toString() of <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableTableScan</code>: wrong <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3462">CALCITE-3462</a>] Add projectExcept method in <code class="language-plaintext highlighter-rouge">RelBuilder</code> for projecting out expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3535">CALCITE-3535</a>] <code class="language-plaintext highlighter-rouge">EnumerableJoinRule</code>: remove unnecessary <code class="language-plaintext highlighter-rouge">Filter</code> on top of <code class="language-plaintext highlighter-rouge">INNER</code> Join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3520">CALCITE-3520</a>] Type cast from primitive to box is not correct (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3481">CALCITE-3481</a>] Support convert <code class="language-plaintext highlighter-rouge">TableFunctionScan</code> to <code class="language-plaintext highlighter-rouge">SqlNode</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3565">CALCITE-3565</a>] Explicitly cast assignable operand types to decimal for udf (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3547">CALCITE-3547</a>] SqlValidatorException because Planner cannot find UDFs added to schema (Chenxiao Mao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3246">CALCITE-3246</a>] NullPointerException while deserializing udf operator (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3429">CALCITE-3429</a>] AssertionError for user-defined table function with map argument (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3560">CALCITE-3560</a>] Additional calcite.util.Source implementation for generic text source (eg. CharSource)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3550">CALCITE-3550</a>] Make <code class="language-plaintext highlighter-rouge">SqlTypeAssignmentRules</code> conversion mapping pluggable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3546">CALCITE-3546</a>] Improve <code class="language-plaintext highlighter-rouge">EnumerableDefaults</code> nested loop join
Provide a new implementation of nested loop join that, unlike the existing one, does not
require to build the complete result as a list before returning it. Instead, it iterates
through the outer and inner enumerables and returns the results step by step.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3281">CALCITE-3281</a>] Support mixed Primitive types for <code class="language-plaintext highlighter-rouge">BinaryExpression</code> evaluate method (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3561">CALCITE-3561</a>] Support using unnest in <code class="language-plaintext highlighter-rouge">Interpreter</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3566">CALCITE-3566</a>] <code class="language-plaintext highlighter-rouge">EnumerableIntersect</code> and <code class="language-plaintext highlighter-rouge">EnumerableMinus</code> convert to Logical (xzh_dz)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3567">CALCITE-3567</a>] Unnest support Map wrapped with <code class="language-plaintext highlighter-rouge">RecordType</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3569">CALCITE-3569</a>] IndexOutOfBoundsException when pushing simplified filter to view</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3536">CALCITE-3536</a>] NPE when executing plan with <code class="language-plaintext highlighter-rouge">Coalesce</code> due to wrong NullAs strategy (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3355">CALCITE-3355</a>] Deduce whether <code class="language-plaintext highlighter-rouge">CASE</code> and <code class="language-plaintext highlighter-rouge">COALESCE</code> may produce NULL values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3473">CALCITE-3473</a>] Getting unique result for table scan should contain key column(s) (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3544">CALCITE-3544</a>] <code class="language-plaintext highlighter-rouge">RexSimplify</code> does not exploit all known predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3353">CALCITE-3353</a>] <code class="language-plaintext highlighter-rouge">ProjectJoinTransposeRule</code> caused AssertionError when creating a new Join (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3539">CALCITE-3539</a>] <code class="language-plaintext highlighter-rouge">EnumerableDefaults#nestedLoopJoin</code> returns duplicates for JoinType.SEMI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3521">CALCITE-3521</a>] <code class="language-plaintext highlighter-rouge">CalciteSystemProperty</code> failed to load config file</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3512">CALCITE-3512</a>] Query fails when comparing Time/TimeStamp types (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3534">CALCITE-3534</a>] Support parse(unparse) alien system non-standard data type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3454">CALCITE-3454</a>] Support <code class="language-plaintext highlighter-rouge">Exchange</code>, <code class="language-plaintext highlighter-rouge">SetOp</code> and <code class="language-plaintext highlighter-rouge">TableModify</code> for builtin metadata query (xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3527">CALCITE-3527</a>] Enrich tests for SQL hints in <code class="language-plaintext highlighter-rouge">SqlHintsConverterTest</code> (Shuo Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3245">CALCITE-3245</a>] <code class="language-plaintext highlighter-rouge">CompileException</code> in Janino when a query contains a division between a <code class="language-plaintext highlighter-rouge">Double</code> and a <code class="language-plaintext highlighter-rouge">BigDecimal</code> (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3492">CALCITE-3492</a>] <code class="language-plaintext highlighter-rouge">RexUtil.simplifyOrs()</code> throws exception if terms has 1 RexNode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3519">CALCITE-3519</a>] Use List instead of <code class="language-plaintext highlighter-rouge">BitSet</code> to keep inheritPath in RelHint (Shuo Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3491">CALCITE-3491</a>] Remove unused method <code class="language-plaintext highlighter-rouge">VolcanoPlanner.completeConversion()</code> (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3498">CALCITE-3498</a>] Unnest operation’s ordinality should be deterministic (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3494">CALCITE-3494</a>] Support decimal type aggregate in Interpreter (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3503">CALCITE-3503</a>] NPE at <code class="language-plaintext highlighter-rouge">VolcanoPlanner#isValid</code> when DEBUG is enabled (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3448">CALCITE-3448</a>] <code class="language-plaintext highlighter-rouge">AggregateOnCalcToAggUnifyRule</code> may ignore Project incorrectly (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3476">CALCITE-3476</a>] <code class="language-plaintext highlighter-rouge">ParameterScope</code> should override resolveColumn interface (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3474">CALCITE-3474</a>] NullPointerException in <code class="language-plaintext highlighter-rouge">SqlSimpleParser</code> toke.s.equals() (Xiucheng Qu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3469">CALCITE-3469</a>] Wrong rel used in <code class="language-plaintext highlighter-rouge">SubstitutionVisitor#rowTypesAreEquivalent</code> (Min Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3487">CALCITE-3487</a>] Should not hard code <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> class in VolcanoPlanner.isValid() (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3482">CALCITE-3482</a>] Equality of nested <code class="language-plaintext highlighter-rouge">ROW</code>s returns false for identical literal value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3479">CALCITE-3479</a>] Stack overflow error thrown when running join query (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3435">CALCITE-3435</a>] Enable decimal modulus operation to allow numeric with non-zero scale (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3456">CALCITE-3456</a>] AssertionError throws for aggregation with same digest <code class="language-plaintext 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="language-plaintext highlighter-rouge">CAST</code> operation and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RexOver</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3457">CALCITE-3457</a>] <code class="language-plaintext highlighter-rouge">RexSimplify</code> incorrectly simplifies <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> operator with <code class="language-plaintext highlighter-rouge">ITEM</code> call</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3433">CALCITE-3433</a>] <code class="language-plaintext highlighter-rouge">EQUALS</code> operator between date/timestamp types returns false if the type is nullable (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3449">CALCITE-3449</a>] Sync the table name logic from <code class="language-plaintext highlighter-rouge">TableScan</code> into the <code class="language-plaintext highlighter-rouge">TableModify</code> (dy.Zhuang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3376">CALCITE-3376</a>] <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> CannotPlanException: best rel is null
even though there is an option with non-infinite cost Problem
solved via <a href="https://issues.apache.org/jira/browse/CALCITE-2018">CALCITE-2018</a>,
just add a unit test for this specific scenario</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3454">CALCITE-3454</a>] Support <code class="language-plaintext highlighter-rouge">Exchange</code> in <code class="language-plaintext highlighter-rouge">RelMdMaxRowCount</code>,<code class="language-plaintext highlighter-rouge">RelMdMinRowCount</code>,<code class="language-plaintext highlighter-rouge">RelMdRowCount</code> (xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2018">CALCITE-2018</a>] Queries failed with AssertionError: rel has lower cost than best cost of subset</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3446">CALCITE-3446</a>] Make <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> extensible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3390">CALCITE-3390</a>] Add <code class="language-plaintext highlighter-rouge">ITEM</code> expression to <code class="language-plaintext highlighter-rouge">SqlKind</code> and include it in the policy map for Strong (Aman Sinha)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3334">CALCITE-3334</a>] Refinement for Substitution-Based MV Matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3439">CALCITE-3439</a>] Support <code class="language-plaintext highlighter-rouge">Intersect</code> and <code class="language-plaintext highlighter-rouge">Minus</code> in <code class="language-plaintext highlighter-rouge">RelMdPredicates</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3451">CALCITE-3451</a>] Support <code class="language-plaintext highlighter-rouge">TableModify</code> in <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelToSqlConverter</code> does not properly alias ambiguous <code class="language-plaintext highlighter-rouge">ORDER BY</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3441">CALCITE-3441</a>] Remove <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelMdColumnUniqueness</code> for <code class="language-plaintext highlighter-rouge">Filter</code> by considering constant columns (Jin Xing)</li>
<li>Add <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3393">CALCITE-3393</a>] <code class="language-plaintext highlighter-rouge">RelStructuredTypeFlattener</code>: improve support for functions with struct input (Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3318">CALCITE-3318</a>] Preserving <code class="language-plaintext highlighter-rouge">CAST</code> of <code class="language-plaintext highlighter-rouge">STRING</code> operand in binary comparison for BigQuery (soma-mondal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2792">CALCITE-2792</a>] Stackoverflow while evaluating filter with large number of OR conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3407">CALCITE-3407</a>] Implement <code class="language-plaintext highlighter-rouge">MINUS</code> and <code class="language-plaintext highlighter-rouge">INTERSECT</code> in interpreter (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3420">CALCITE-3420</a>] <code class="language-plaintext highlighter-rouge">NullPointerException</code> throws for implicit type coercion of nested <code class="language-plaintext highlighter-rouge">SET</code> operations</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3403">CALCITE-3403</a>] <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> reuse (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3411">CALCITE-3411</a>] Incorrect code generated for BigDecimal ConstantExpression (DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3410">CALCITE-3410</a>] Simplify <code class="language-plaintext highlighter-rouge">RelOptRulesTest</code> and <code class="language-plaintext highlighter-rouge">HepPlannerTest</code> by making test methods fluent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3404">CALCITE-3404</a>] In <code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code>, treat all the agg expressions as distinct
if they have the same arguments
and the non-distinct expressions distinct constraints can be ignored</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3382">CALCITE-3382</a>] Hard-wire the <code class="language-plaintext highlighter-rouge">TUMBLE</code> grouping function into SQL parser (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3396">CALCITE-3396</a>] Materialized view matches unexpectedly for <code class="language-plaintext highlighter-rouge">UNION</code> with different ‘all’ property (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3379">CALCITE-3379</a>] Support expand <code class="language-plaintext highlighter-rouge">STRING</code> column expression of table during sql-to-rel conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3397">CALCITE-3397</a>] AssertionError for interpretering multiset value (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3383">CALCITE-3383</a>] Plural time units</li>
<li>Re-format and re-organize config.fmpp files that customize the SQL parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3392">CALCITE-3392</a>] Column expression in DDL should be validated before converting to RexNode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3330">CALCITE-3330</a>] Use breadth first approach for propagating cost improvements</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3386">CALCITE-3386</a>] CyclicMetadataException singleton instance causes confusion when debugging (Zuozhi Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3389">CALCITE-3389</a>] Test may fail if HashSet iterates in different order (contextshuffling)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3361">CALCITE-3361</a>] Add ‘lenientOperatorLookup’ connection property</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3347">CALCITE-3347</a>] IndexOutOfBoundsException in <code class="language-plaintext highlighter-rouge">FixNullabilityShuttle</code> when using <code class="language-plaintext highlighter-rouge">FilterIntoJoinRule</code> (Wang Yanlin, Shuming Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3374">CALCITE-3374</a>] Error format check result for explain plan as json (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3363">CALCITE-3363</a>] <code class="language-plaintext highlighter-rouge">JoinUnionTransposeRule.RIGHT_UNION</code> should not match <code class="language-plaintext highlighter-rouge">SEMI</code>/<code class="language-plaintext highlighter-rouge">ANTI</code> Join (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3369">CALCITE-3369</a>] In <code class="language-plaintext highlighter-rouge">LatticeSuggester</code>, recommend lattices based on <code class="language-plaintext highlighter-rouge">UNION</code> queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3365">CALCITE-3365</a>] Don’t require use of <code class="language-plaintext highlighter-rouge">JdbcSchema</code> in <code class="language-plaintext highlighter-rouge">QuerySqlStatisticProvider</code> (Lindsey Meyer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3239">CALCITE-3239</a>] <code class="language-plaintext 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="language-plaintext highlighter-rouge">ConstantExpression</code> support <code class="language-plaintext highlighter-rouge">SET</code> literals (xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1178">CALCITE-1178</a>] Allow <code class="language-plaintext highlighter-rouge">SqlBetweenOperator</code> to compare <code class="language-plaintext highlighter-rouge">DATE</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">Union</code> in <code class="language-plaintext 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="language-plaintext highlighter-rouge">Trivial</code> null checking in <code class="language-plaintext highlighter-rouge">RelSet#addAbstractConverters</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3286">CALCITE-3286</a>] In <code class="language-plaintext highlighter-rouge">LatticeSuggester</code>, allow join conditions that use expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3360">CALCITE-3360</a>] <code class="language-plaintext highlighter-rouge">SqlValidator</code> throws NPE for unregistered function without implicit type coercion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3316">CALCITE-3316</a>] Exception while deserializing <code class="language-plaintext highlighter-rouge">LogicalCorrelate</code> from json string (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3317">CALCITE-3317</a>] Add a public constructor for <code class="language-plaintext highlighter-rouge">LogicalCalc</code> with RelInput type parameter (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3319">CALCITE-3319</a>] AssertionError when reducing decimals (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3331">CALCITE-3331</a>] Support implicit type cast for operators that use single operand family checker</li>
</ul>
<h5 id="adapters-1-22-0">Adapters</h5>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3751">CALCITE-3751</a>] JDBC adapter generates SQL with wrong aliases in <code class="language-plaintext highlighter-rouge">GROUP BY</code><code class="language-plaintext highlighter-rouge">ORDER BY</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3593">CALCITE-3593</a>] JDBC adapter generates incorrect <code class="language-plaintext highlighter-rouge">HAVING</code> clause for BigQuery (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3466">CALCITE-3466</a>] JDBC adapter incorrectly drops <code class="language-plaintext highlighter-rouge">GROUP BY</code> clause of sub-query (Wang Weidong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3154">CALCITE-3154</a>] <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> generates <code class="language-plaintext highlighter-rouge">NULLS LAST</code> and <code class="language-plaintext highlighter-rouge">NULLS FIRST</code> wrongly
when using <code class="language-plaintext highlighter-rouge">MysqlSqlDialect</code> to convert <code class="language-plaintext highlighter-rouge">RexOver</code> to sql (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2672">CALCITE-2672</a>] Qualifying the common column should not be allowed in Oracle dialect and SQL standard</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3568">CALCITE-3568</a>] BigQuery, Hive, Spark SQL dialects do not support nested aggregates (Divyanshu Srivastava)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3381">CALCITE-3381</a>] In JDBC adapter, when using BigQuery dialect, converts SQL types to BigQuery types correctly(Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3381">CALCITE-3381</a>] Unparse to correct BigQuery integral syntax: <code class="language-plaintext highlighter-rouge">INTERVAL</code> int64 time_unit.
Range time unit is not supported yet by BigQuery (amaliujia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3486">CALCITE-3486</a>] In JDBC adapter, when generating <code class="language-plaintext highlighter-rouge">ROW </code>value expression,
generates the <code class="language-plaintext highlighter-rouge">ROW</code> keyword only if the dialect allows it (quxiucheng)</li>
<li>Use proper ClassLoader in SparkHandlerImpl</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3381">CALCITE-3381</a>] When using BigQuery dialect, Rel2SQL converter converts SQL types to BigQuery types (part2) (Rui Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3475">CALCITE-3475</a>] JDBC adapter generates invalid SQL for <code class="language-plaintext highlighter-rouge">UNION ALL</code> on BigQuery (Steven Talbot)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3370">CALCITE-3370</a>] In JDBC adapter for Microsoft SQL Server, emulate <code class="language-plaintext highlighter-rouge">NULLS FIRST</code> using <code class="language-plaintext highlighter-rouge">CASE</code> expression (Justin Swett)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3344">CALCITE-3344</a>] In JDBC adapter, generate <code class="language-plaintext highlighter-rouge">SELECT TOP(n)</code> for MSSQL 2008 and earlier, and for <code class="language-plaintext highlighter-rouge">Sybase</code> ASE</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3300">CALCITE-3300</a>] In JDBC adapter, when generating SQL for count star, generates the star argument of the call (Wang Weidong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3247">CALCITE-3247</a>] In JDBC adapter, when generating SQL for Hive, transform <code class="language-plaintext highlighter-rouge">SUBSTRING</code> function to correct format (Jacky Woo)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3282">CALCITE-3282</a>] In JDBC adapter, when generating SQL for Hive, generate <code class="language-plaintext highlighter-rouge">INTEGER</code> type as <code class="language-plaintext highlighter-rouge">INT</code> (huangfeng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3335">CALCITE-3335</a>] In ElasticSearch adapter, introduce configuration parameter “hosts” which deprecates previous “coordinates” (Shikha Somani)</li>
</ul>
<h4 id="build-1-22-0">Build and test suite</h4>
<ul>
<li>Stop building zip archives when building using gradle</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2442">CALCITE-2442</a>] Remove .toDelete cassandra temp folder on Windows after tests</li>
<li>Update Gradle test output formatting</li>
<li>Color test results in Gradle output</li>
<li>In JDBC adapter tests that check generated SQL, extract SQL from string literals in generated Java</li>
<li>Refactor MaterializationTest to use a fluent API</li>
<li>Allow <code class="language-plaintext highlighter-rouge">CREATE TABLE ... AS SELECT ...</code> in Quidem tests</li>
<li>Increase test coverage for regular CI jobs: move @Tag(slow) annotations to test methods</li>
<li>Use concurrent test execution by default</li>
<li>Add gradle task ‘aggregateJavadocIncludingTests’ that builds javadoc for both main and test</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3654">CALCITE-3654</a>] Use single Elasticsearch instance for all elasticsearch tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3637">CALCITE-3637</a>] Update linq4j tests upgrade from junit4 to junit5 (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3623">CALCITE-3623</a>] Replace Spotless with Autostyle</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3622">CALCITE-3622</a>] Update geode tests upgrade from junit4 to junit5 (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3601">CALCITE-3601</a>] Update elasticsearch tests upgrade from junit4 to junit5 (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3625">CALCITE-3625</a>] Update mongo tests upgrade from junit4 to junit5 (Qianjin Xu)</li>
<li>Move PGP signing to com.github.vlsi.stage-vote-release Gradle plugin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3595">CALCITE-3595</a>] Test infrastructure overwrites reference log with wrong results (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3559">CALCITE-3559</a>] Drop <code class="language-plaintext highlighter-rouge">HydromaticFileSetCheck</code>, upgrade Checkstyle 7.8.2 → 8.27</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3540">CALCITE-3540</a>] FoodmartTest produces many warnings due to incorrect use of CalciteAssert.pooled()</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3548">CALCITE-3548</a>] unlock ./gradlew :ubenchmark:jmh to run benchmarks</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3327">CALCITE-3327</a>] Simplify <code class="language-plaintext highlighter-rouge">SqlValidatorTest</code> and <code class="language-plaintext highlighter-rouge">SqlParserTest</code> by making test methods fluent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2905">CALCITE-2905</a>] Migrate build scripts to Gradle</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2457">CALCITE-2457</a>] JUnit 4 → 5: trivial renames</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2457">CALCITE-2457</a>] Configure build to automatically replace common JUnit4 classes with JUnit5</li>
<li>Build script: instantiate sqllineClasspath only when buildSqllineClasspath is used</li>
<li>GitHub Actions: actions/checkout@master → v1.1.0 to avoid unexpected failures</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3141">CALCITE-3141</a>] Slow tests are not run in continuous integration</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3140">CALCITE-3140</a>] Multiple failures when executing slow tests</li>
<li>Reduce FoodmartQuery heap consumption by ignoring rows/columns as they are never used in tests</li>
<li>Add ‘./gradlew style’ task to apply code format and report violations</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2905">CALCITE-2905</a>] Migrate build scripts to Gradle</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2905">CALCITE-2905</a>] Add hydromatic-resource as plain source file</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3457">CALCITE-3457</a>] Ignore fuzzer tests due to known unsolved issue</li>
<li>Improve folder detection logic in DocumentationTest</li>
<li>Ignore <code class="language-plaintext highlighter-rouge">TpcdsLatticeSuggesterTest</code> because it does not work</li>
<li>Use <code class="language-plaintext highlighter-rouge">Class#getResource</code> in FileReaderTest instead of hard-coding file name</li>
<li>Simplify <code class="language-plaintext highlighter-rouge">RexProgramTest#reproducerFor3457</code> test</li>
<li>Add shrinker for <code class="language-plaintext highlighter-rouge">RexProgramFuzzy</code> so the results are simpler to reason about</li>
<li>Refactor <code class="language-plaintext highlighter-rouge">SqlPrettyWriterTest</code>, using a fluent API for invoking tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3362">CALCITE-3362</a>] Add some tests for empty Lattice (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3421">CALCITE-3421</a>] Reuse <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> in test suites</li>
</ul>
<h4 id="dependency-1-22-0">Dependency version upgrade</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3818">CALCITE-3818</a>] Upgrade Avatica version to 1.16.0</li>
<li>Update Gradle: 6.1 → 6.1.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3742">CALCITE-3742</a>] Update Gradle: 6.0.1 → 6.1</li>
<li>Bump spark-core_2.10 from 2.2.0 to 2.2.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3516">CALCITE-3516</a>] Bump net.java.dev.jna:jna to 5.5.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2457">CALCITE-2457</a>] Druid: JUnit4 → JUnit5</li>
<li>Bump geode-core from 1.9.2 to 1.10.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3502">CALCITE-3502</a>] Upgrade Geode dependency 1.6.0 → 1.9.2</li>
<li>Bump jackson-databind from 2.9.9.3 to 2.9.10.1</li>
</ul>
<h4 id="site-1-22-0">Web site and documentation</h4>
<ul>
<li>Site: Update IntelliJ instructions with suggested and problematic versions</li>
<li>Site: Switch PMC Chair to Stamatis Zampetakis</li>
<li>Site: Add two links with useful information about Gradle (Rui Wang)</li>
<li>Site: Update homepage of Stamatis Zampetakis</li>
<li>Site: Move “Fast federated SQL with Apache Calcite” in talks section and add video link</li>
<li>Site: Add Haisheng Yuan as PMC</li>
<li>Site: Append ‘(FirstName LastName)’ to commit message example in contributing section</li>
<li>Site: Add Danny Chan as PMC</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3445">CALCITE-3445</a>] In web site, automatically redirect http to https</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3391">CALCITE-3391</a>] Insecure pages warning on Chrome</li>
<li>Site: Update upcoming talks section for ApacheCon Europe 2019</li>
<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>
<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
and bug-fixes.</p>
<p>It is worth highlighting that Calcite now:</p>
<ul>
<li>supports implicit type coercion in various contexts
(<a href="https://issues.apache.org/jira/browse/CALCITE-2302">CALCITE-2302</a>);</li>
<li>allows transformations of Pig Latin scripts into algebraic plans
(<a href="https://issues.apache.org/jira/browse/CALCITE-3122">CALCITE-3122</a>);</li>
<li>provides an implementation for the main features of <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> in the
<code class="language-plaintext highlighter-rouge">Enumerable</code> convention
(<a href="https://issues.apache.org/jira/browse/CALCITE-1935">CALCITE-1935</a>);</li>
<li>supports correlated <code class="language-plaintext highlighter-rouge">ANY</code>/<code class="language-plaintext highlighter-rouge">SOME</code>/<code class="language-plaintext highlighter-rouge">ALL</code> sub-queries
(<a href="https://issues.apache.org/jira/browse/CALCITE-3031">CALCITE-3031</a>);</li>
<li>introduces anonymous types based on <code class="language-plaintext highlighter-rouge">ROW</code>, <code class="language-plaintext highlighter-rouge">ARRAY</code>, and nested collection
(<a href="https://issues.apache.org/jira/browse/CALCITE-3233">CALCITE-3233</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3231">CALCITE-3231</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3250">CALCITE-3250</a>);</li>
<li>brings new join algorithms for the <code class="language-plaintext highlighter-rouge">Enumerable</code> convention
(<a href="https://issues.apache.org/jira/browse/CALCITE-2979">CALCITE-2979</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-2973">CALCITE-2973</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-3284">CALCITE-3284</a>).</li>
</ul>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13 and OpenJDK 8, 9, 10, 11, 12, 13;
Guava versions 19.0 to 27.1-jre;
Apache Druid version 0.14.0-incubating;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="breaking-1-21-0">Breaking Changes</h4>
<ul>
<li>Core parser config.fmpp#dataTypeParserMethods should return <code class="language-plaintext highlighter-rouge">SqlTypeNameSpec</code>
instead of <code class="language-plaintext highlighter-rouge">SqlIdentifier</code>.</li>
<li>The description of converter rules has slightly changed
(<a href="https://issues.apache.org/jira/browse/CALCITE-3115">CALCITE-3115</a>).
In some rare cases this may lead to a <code class="language-plaintext highlighter-rouge">Rule description ... is not valid</code>
exception. The exception can easily disappear by changing the name of the
<code class="language-plaintext highlighter-rouge">Convention</code> which causes the problem.</li>
</ul>
<h4 id="new-features-1-21-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2973">CALCITE-2973</a>]
[<a href="https://issues.apache.org/jira/browse/CALCITE-3284">CALCITE-3284</a>]
Allow joins (hash, semi, anti) that have equi conditions to be executed using a
hash join algorithm (Lai Zhou)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2302">CALCITE-2302</a>]
Implicit type cast support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3122">CALCITE-3122</a>]
Convert Pig Latin scripts into Calcite relational algebra and Calcite SQL
(Khai Tran)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2979">CALCITE-2979</a>]
Add a block-based nested loop join algorithm (Khawla Mouhoubi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3263">CALCITE-3263</a>]
Add <code class="language-plaintext highlighter-rouge">MD5</code>, <code class="language-plaintext highlighter-rouge">SHA1</code> SQL functions (Shuming Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3204">CALCITE-3204</a>]
Implement <code class="language-plaintext highlighter-rouge">jps</code> command for OS adapter (Qianjin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3260">CALCITE-3260</a>]
Add Expressions.evaluate(Node), a public API for evaluating linq4j expressions
(Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3280">CALCITE-3280</a>]
Add <code class="language-plaintext highlighter-rouge">REGEXP_REPLACE</code> function in Oracle, MySQL libraries (Shuming Li)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3111">CALCITE-3111</a>]
Add <code class="language-plaintext highlighter-rouge">RelBuilder.correlate</code> method, and allow custom implementations of
<code class="language-plaintext highlighter-rouge">Correlate</code> in <code class="language-plaintext highlighter-rouge">RelDecorrelator</code> (Juhwan Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3252">CALCITE-3252</a>]
Add <code class="language-plaintext highlighter-rouge">CONVERT_TIMEZONE</code>, <code class="language-plaintext highlighter-rouge">TO_DATE</code> and <code class="language-plaintext highlighter-rouge">TO_TIMESTAMP</code> non-standard SQL functions
(Lindsey Meyer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3235">CALCITE-3235</a>]
Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlDataTypeSpec</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1935">CALCITE-1935</a>]
Implement <code class="language-plaintext 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="language-plaintext highlighter-rouge">::</code>) (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3233">CALCITE-3233</a>]
Support <code class="language-plaintext highlighter-rouge">ROW</code> type for <code class="language-plaintext highlighter-rouge">SqlDataTypeSpec</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3231">CALCITE-3231</a>]
Support <code class="language-plaintext highlighter-rouge">ARRAY</code> type for <code class="language-plaintext 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>]
Support for correlated <code class="language-plaintext highlighter-rouge">ANY</code>/<code class="language-plaintext highlighter-rouge">SOME</code>/<code class="language-plaintext highlighter-rouge">ALL</code> sub-query (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2510">CALCITE-2510</a>]
Implement <code class="language-plaintext highlighter-rouge">CHR</code> function (Sergey Tsvetkov, Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3176">CALCITE-3176</a>]
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="language-plaintext highlighter-rouge">AggregateCaseToFilterRule</code>, that converts <code class="language-plaintext highlighter-rouge">SUM(CASE WHEN b THEN x
END)</code> to <code class="language-plaintext 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="language-plaintext highlighter-rouge">DAYNAME</code><code class="language-plaintext highlighter-rouge">MONTHNAME</code> functions; add <code class="language-plaintext highlighter-rouge">locale</code> connection property
(xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2460">CALCITE-2460</a>]
[CALCITE-2459] Add <code class="language-plaintext highlighter-rouge">TO_BASE64</code>, <code class="language-plaintext highlighter-rouge">FROM_BASE64</code> SQL functions (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3063">CALCITE-3063</a>]
Parse and process PostgreSQL posix regular expressions</li>
</ul>
<h4 id="fixes-1-21-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3321">CALCITE-3321</a>]
Set casing rules for BigQuery SQL dialect (Lindsey Meyer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3115">CALCITE-3115</a>]
Cannot add <code class="language-plaintext highlighter-rouge">JdbcRule</code> instances that have different <code class="language-plaintext highlighter-rouge">JdbcConvention</code> to same
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code>’s <code class="language-plaintext highlighter-rouge">RuleSet</code> (Wenhui Tang, Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3309">CALCITE-3309</a>]
Refactor <code class="language-plaintext highlighter-rouge">generatePredicate</code> method from <code class="language-plaintext highlighter-rouge">EnumerableNestedLoopJoin</code>,
<code class="language-plaintext highlighter-rouge">EnumerableHashJoin</code>, and <code class="language-plaintext highlighter-rouge">EnumerableBatchNestedLoopJoin</code> into a single location</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3310">CALCITE-3310</a>]
Approximate and exact aggregate calls are recognized as the same during
SQL-to-RelNode conversion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3292">CALCITE-3292</a>]
SqlToRelConverter#substituteSubQuery fails with NullPointerException when
converting <code class="language-plaintext highlighter-rouge">SqlUpdate</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3297">CALCITE-3297</a>]
<code class="language-plaintext highlighter-rouge">PigToSqlAggregateRule</code> should be applied on multi-set projection to produce an
optimal plan (Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3295">CALCITE-3295</a>]
Add aggregate call name in serialized json string for <code class="language-plaintext highlighter-rouge">RelNode</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3296">CALCITE-3296</a>]
Decorrelator shouldn’t give empty value when fetch and offset values are null
in <code class="language-plaintext highlighter-rouge">Sort</code> rel (Juhwan Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3283">CALCITE-3283</a>]
<code class="language-plaintext highlighter-rouge">RelSubset</code> does not contain its best <code class="language-plaintext highlighter-rouge">RelNode</code> (Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3210">CALCITE-3210</a>]
JDBC adapter should generate <code class="language-plaintext highlighter-rouge">CAST(NULL AS type)</code> rather than <code class="language-plaintext highlighter-rouge">NULL</code>
conditionally (Wang Weidong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3220">CALCITE-3220</a>]
JDBC adapter now transforms <code class="language-plaintext highlighter-rouge">TRIM</code> to <code class="language-plaintext highlighter-rouge">TRIM</code>, <code class="language-plaintext highlighter-rouge">LTRIM</code> or <code class="language-plaintext highlighter-rouge">RTRIM</code> when target
is Hive (Jacky Woo)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3228">CALCITE-3228</a>]
Error while applying rule <code class="language-plaintext highlighter-rouge">ProjectScanRule</code>: interpreter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3223">CALCITE-3223</a>]
Materialized view fails to match when there is non-<code class="language-plaintext highlighter-rouge">RexInputRef</code> in the
projects (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3257">CALCITE-3257</a>]
<code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> cache is not invalidated when log trace is enabled
(Xiening Dai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3138">CALCITE-3138</a>]
<code class="language-plaintext highlighter-rouge">RelStructuredTypeFlattener</code> doesn’t restructure <code class="language-plaintext highlighter-rouge">ROW</code> type fields (Igor Guzenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3251">CALCITE-3251</a>]
<code class="language-plaintext highlighter-rouge">BinaryExpression</code> evaluate method support full numeric types in <code class="language-plaintext highlighter-rouge">Primitive</code>
(xy2953396112)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3259">CALCITE-3259</a>]
Align ‘Property’ in the serialized XML string of <code class="language-plaintext highlighter-rouge">RelXmlWriter</code> (Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3167">CALCITE-3167</a>]
Make <code class="language-plaintext highlighter-rouge">equals</code> and <code class="language-plaintext highlighter-rouge">hashCode</code> methods final in <code class="language-plaintext highlighter-rouge">AbstractRelNode</code>, and remove
overriding methods in <code class="language-plaintext highlighter-rouge">EnumerableTableScan</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3089">CALCITE-3089</a>]
Deprecate <code class="language-plaintext highlighter-rouge">EquiJoin</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3267">CALCITE-3267</a>]
Remove method <code class="language-plaintext highlighter-rouge">SqlDataTypeSpec#deriveType(RelDataTypefactory)</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3214">CALCITE-3214</a>]
Add <code class="language-plaintext 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>]
Add <code class="language-plaintext highlighter-rouge">UnionToUnionRule</code> for materialization matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3249">CALCITE-3249</a>]
`Substitution#getRexShuttle does not consider RexLiteral (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3229">CALCITE-3229</a>]
<code class="language-plaintext highlighter-rouge">UnsupportedOperationException</code> for <code class="language-plaintext highlighter-rouge">UPDATE</code> with <code class="language-plaintext highlighter-rouge">IN</code> query</li>
<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="language-plaintext highlighter-rouge">SqlDataTypeSpec</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3159">CALCITE-3159</a>]
Remove <code class="language-plaintext highlighter-rouge">DISTINCT</code> flag from calls to <code class="language-plaintext highlighter-rouge">MIN</code>, <code class="language-plaintext highlighter-rouge">MAX</code>, <code class="language-plaintext highlighter-rouge">BIT_OR</code>, <code class="language-plaintext highlighter-rouge">BIT_AND</code>
aggregate functions (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3237">CALCITE-3237</a>]
<code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> when generating deeply nested Java code from linq4j
(Sahith Nallapareddy)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3234">CALCITE-3234</a>]
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="language-plaintext highlighter-rouge">RelBuilder</code> doesn’t keep the alias when <code class="language-plaintext 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="language-plaintext highlighter-rouge">RexSimplify</code> to handle <code class="language-plaintext highlighter-rouge">(x &lt;&gt; a or x &lt;&gt; 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="language-plaintext highlighter-rouge">Project</code> below <code class="language-plaintext highlighter-rouge">Join</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3227">CALCITE-3227</a>]
<code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> when checking candidate parent match’s input
ordinal in <code class="language-plaintext 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>]
Syntax error while parsing <code class="language-plaintext highlighter-rouge">DATEADD</code> function (which is valid on Redshift)
(Lindsey Meyer)</li>
<li>Deprecate <code class="language-plaintext highlighter-rouge">RexBuilder.constantNull()</code>, because it produces untyped <code class="language-plaintext highlighter-rouge">NULL</code>
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="language-plaintext highlighter-rouge">Values</code> by generating <code class="language-plaintext highlighter-rouge">SELECT</code> without
<code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3131">CALCITE-3131</a>]
In <code class="language-plaintext highlighter-rouge">LatticeSuggester</code>, record whether columns are used as “dimensions” or
“measures”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3175">CALCITE-3175</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> while serializing to JSON a <code class="language-plaintext highlighter-rouge">RexLiteral</code> with <code class="language-plaintext highlighter-rouge">Enum</code> type
(Wang Yanlin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3225">CALCITE-3225</a>]
<code class="language-plaintext highlighter-rouge">JoinToMultiJoinRule</code> should not match semi- or anti-LogicalJoin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3215">CALCITE-3215</a>]
Simplification may have not fully simplified IS <code class="language-plaintext highlighter-rouge">NOT NULL</code> expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3192">CALCITE-3192</a>]
Simplification may weaken OR conditions containing inequalities</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3211">CALCITE-3211</a>]
List of <code class="language-plaintext highlighter-rouge">MutableRel</code> may fail to be identified by <code class="language-plaintext highlighter-rouge">SubstitutionVisitor</code> during
matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3207">CALCITE-3207</a>]
Fail to convert <code class="language-plaintext highlighter-rouge">Join</code> with <code class="language-plaintext highlighter-rouge">LIKE</code> condition to SQL statement (wojustme)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2496">CALCITE-2496</a>]
Return 0 in case of <code class="language-plaintext highlighter-rouge">EXTRACT(MILLI/MICRO/NANOSECOND FROM date)</code>
(Sergey Nuyanzin, Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3109">CALCITE-3109</a>]
Improvements on algebraic operators to express recursive queries (<code class="language-plaintext highlighter-rouge">RepeatUnion</code>
and <code class="language-plaintext highlighter-rouge">TableSpool</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3209">CALCITE-3209</a>]
When calling <code class="language-plaintext highlighter-rouge">MutableMultiRel.setInput</code>, exception thrown (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3195">CALCITE-3195</a>]
Handle a UDF that throws checked exceptions in the Enumerable code generator
(DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3118">CALCITE-3118</a>]
<code class="language-plaintext highlighter-rouge">VolcanoRuleCall</code> should look at <code class="language-plaintext highlighter-rouge">RelSubset</code> rather than <code class="language-plaintext highlighter-rouge">RelSet</code> when checking
child ordinal of a parent operand (Botong Huang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3201">CALCITE-3201</a>]
<code class="language-plaintext highlighter-rouge">SqlValidator</code> throws exception for SQL insert target table with virtual columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3182">CALCITE-3182</a>]
Trim unused fields for plan of materialized-view before matching (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3174">CALCITE-3174</a>]
<code class="language-plaintext highlighter-rouge">IS NOT DISTINCT FROM</code> condition pushed from <code class="language-plaintext highlighter-rouge">Filter</code> to <code class="language-plaintext highlighter-rouge">Join</code> is not
collapsed (Bohdan Kazydub)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3166">CALCITE-3166</a>]
Make <code class="language-plaintext highlighter-rouge">RelBuilder</code> configurable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3113">CALCITE-3113</a>]
Equivalent <code class="language-plaintext 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>:
Make decimal type inference overridable (Praveen Kumar)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3145">CALCITE-3145</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.aggregate</code> throws <code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> if <code class="language-plaintext highlighter-rouge">groupKey</code> is
non-empty and there are duplicate aggregate functions</li>
<li>Change type of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Frameworks</code>, add <code class="language-plaintext highlighter-rouge">interface BasePrepareAction</code> (a functional interface) and
deprecate <code class="language-plaintext 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="language-plaintext 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>]
Multiple fixes for Oracle SQL dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3165">CALCITE-3165</a>]
<code class="language-plaintext highlighter-rouge">Project#accept</code>(<code class="language-plaintext 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="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> in <code class="language-plaintext highlighter-rouge">ProjectFilterTransposeRule</code> when executing
<code class="language-plaintext 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="language-plaintext highlighter-rouge">SEMI</code>/<code class="language-plaintext highlighter-rouge">ANTI</code> join in
<code class="language-plaintext highlighter-rouge">RelDecorrelator</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3171">CALCITE-3171</a>]
<code class="language-plaintext highlighter-rouge">SemiJoin</code> on conditions push down throws <code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3172">CALCITE-3172</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder#empty</code> does not keep aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3121">CALCITE-3121</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> hangs due to sub-query with dynamic star</li>
<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="language-plaintext highlighter-rouge">class CorrelateJoinType</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3133">CALCITE-3133</a>]
Remove completely <code class="language-plaintext highlighter-rouge">class SemiJoinType</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3126">CALCITE-3126</a>]
Remove deprecated <code class="language-plaintext highlighter-rouge">SemiJoin</code> usage completely</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3146">CALCITE-3146</a>]
Support the detection of nested aggregations for <code class="language-plaintext highlighter-rouge">JdbcAggregate</code> in
<code class="language-plaintext highlighter-rouge">SqlImplementor</code> (Wenhui Tang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3155">CALCITE-3155</a>]
Empty <code class="language-plaintext highlighter-rouge">LogicalValues</code> can not be converted to <code class="language-plaintext highlighter-rouge">UNION ALL</code> without operands which
can not be unparsed (Musbah EL FIL)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3151">CALCITE-3151</a>]
RexCall’s Monotonicity is not considered in determining a Calc’s collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2801">CALCITE-2801</a>]
Check input type in <code class="language-plaintext highlighter-rouge">AggregateUnionAggregateRule</code> when remove the bottom
<code class="language-plaintext highlighter-rouge">Aggregate</code> (Hequn Cheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3149">CALCITE-3149</a>]
<code class="language-plaintext highlighter-rouge">RelDataType</code> CACHE in <code class="language-plaintext highlighter-rouge">RelDataTypeFactoryImpl</code> can’t be garbage collected</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3060">CALCITE-3060</a>]
<code class="language-plaintext highlighter-rouge">MutableProject</code> should be generated based on INVERSE_SURJECTION mapping
(DonnyZone)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3148">CALCITE-3148</a>]
Validator throws <code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> for <code class="language-plaintext highlighter-rouge">SqlInsert</code> when source and
sink have non-equal number of fields</li>
</ul>
<h4 id="build-1-21-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3322">CALCITE-3322</a>]
Remove duplicate test case in <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3315">CALCITE-3315</a>]
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="language-plaintext highlighter-rouge">PigRelExTest</code>, <code class="language-plaintext highlighter-rouge">PigRelOpTest</code> and <code class="language-plaintext highlighter-rouge">PigScriptTest</code> fail on Windows</li>
<li>In <code class="language-plaintext highlighter-rouge">SqlFunctionsTest</code>, replace <code class="language-plaintext highlighter-rouge">assertEquals</code> and <code class="language-plaintext highlighter-rouge">assertNull</code> with <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3222">CALCITE-3222</a>]
Fix code style issues introduced by [CALCITE-3031] (Vineet Garg)</li>
<li>More compiler fixes, and cosmetic changes</li>
<li>Fix compiler warnings</li>
<li>Update stale tests in DruidAdapter</li>
<li>Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-2804">CALCITE-2804</a>],
fix incorrect expected Druid query in test case
<code class="language-plaintext highlighter-rouge">DruidAdapterIT#testCastToTimestamp</code> (Justin Szeluga)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3153">CALCITE-3153</a>]
Improve testing in <code class="language-plaintext highlighter-rouge">TpcdsTest</code> using <code class="language-plaintext highlighter-rouge">assertEqual</code> instead of printing results</li>
<li>Fix javadoc error</li>
<li>Fix compilation warnings after Mongo java driver upgrade</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3179">CALCITE-3179</a>]
Bump Jackson from 2.9.8 to 2.9.9 (Fokko Driesprong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3157">CALCITE-3157</a>]
Mongo java driver upgrade: 3.5.0 → 3.10.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3156">CALCITE-3156</a>]
Mongo adapter. Replace fongo with Mongo Java Server for tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3168">CALCITE-3168</a>]
Add test for invalid literal of SQL parser</li>
</ul>
<h4 id="site-1-21-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3303">CALCITE-3303</a>]
Release Calcite 1.21.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3311">CALCITE-3311</a>]
Add doc to site for implicit type coercion</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3262">CALCITE-3262</a>]
Refine doc of <code class="language-plaintext highlighter-rouge">SubstitutionVisitor</code> (Jin Xing)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2835">CALCITE-2835</a>]
Markdown errors on the Geode adapter page</li>
<li>Site: Update Apache links on homepage to HTTPS</li>
<li>Update favicon for new logo</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3136">CALCITE-3136</a>]
Fix the default rule description of <code class="language-plaintext highlighter-rouge">ConverterRule</code> (TANG Wen-hui)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3184">CALCITE-3184</a>]
Add the new logo to the website</li>
<li>Update example announcement</li>
<li>Add committer names to 1.20.0 release notes</li>
<li>Add 1.20.0 release date</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>
<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.
Several new operators have been added to the algebra to allow support for recursive queries.
An adapter has also been added for <a href="https://kafka.apache.org/">Apache Kafka</a>.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12, 13 and OpenJDK 8, 9, 10, 11, 12, 13;
Guava versions 19.0 to 27.1-jre;
Apache Druid version 0.14.0-incubating;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="breaking-1-20-0">Breaking Changes</h4>
<ul>
<li>Make <code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code> extend <code class="language-plaintext highlighter-rouge">Join</code> instead of <code class="language-plaintext highlighter-rouge">EquiJoin</code>
</li>
<li>
<code class="language-plaintext highlighter-rouge">Correlate</code> use <code class="language-plaintext highlighter-rouge">JoinRelType</code> instead of <code class="language-plaintext highlighter-rouge">SemiJoinType</code>
</li>
<li>Rename <code class="language-plaintext highlighter-rouge">EnumerableThetaJoin</code> to <code class="language-plaintext highlighter-rouge">EnumerableNestedLoopJoin</code>
</li>
<li>Rename <code class="language-plaintext highlighter-rouge">EnumerableJoin</code> to <code class="language-plaintext highlighter-rouge">EnumerableHashJoin</code>
</li>
<li>Remove <code class="language-plaintext highlighter-rouge">SemiJoinFactory</code> from <code class="language-plaintext highlighter-rouge">RelBuilder</code>, method <code class="language-plaintext highlighter-rouge">semiJoin</code> now returns a <code class="language-plaintext highlighter-rouge">LogicalJoin</code>
with join type <code class="language-plaintext highlighter-rouge">JoinRelType.SEMI</code> instead of a <code class="language-plaintext highlighter-rouge">SemiJoin</code>
</li>
<li>Rules: <code class="language-plaintext highlighter-rouge">SemiJoinFilterTransposeRule</code>, <code class="language-plaintext highlighter-rouge">SemiJoinJoinTransposeRule</code>, <code class="language-plaintext highlighter-rouge">SemiJoinProjectTransposeRule</code>
and <code class="language-plaintext highlighter-rouge">SemiJoinRemoveRule</code> match <code class="language-plaintext highlighter-rouge">LogicalJoin</code> with join type <code class="language-plaintext highlighter-rouge">SEMI</code> instead of <code class="language-plaintext highlighter-rouge">SemiJoin</code>.</li>
<li>
<code class="language-plaintext highlighter-rouge">SemiJoin</code>, <code class="language-plaintext highlighter-rouge">EnumerableSemiJoin</code>, <code class="language-plaintext highlighter-rouge">SemiJoinType</code> and <code class="language-plaintext 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).
We recommend use of Elasticsearch 6.2 (or later) with Calcite.</li>
</ul>
<h4 id="new-features-1-20-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2822">CALCITE-2822</a>] Allow <code class="language-plaintext highlighter-rouge">MultiJoin</code> rules with any project/filter (Siddharth Teotia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2968">CALCITE-2968</a>] New <code class="language-plaintext highlighter-rouge">AntiJoin</code> relational expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2721">CALCITE-2721</a>] Support parsing record-type [DOT] member-functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3005">CALCITE-3005</a>] Implement string functions: <code class="language-plaintext highlighter-rouge">LEFT</code>, <code class="language-plaintext highlighter-rouge">RIGHT</code> (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2812">CALCITE-2812</a>] Add algebraic operators to allow expressing recursive queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2913">CALCITE-2913</a>] Adapter for Apache Kafka (Mingmin Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3084">CALCITE-3084</a>] Implement JDBC string functions: <code class="language-plaintext highlighter-rouge">ASCII</code>, <code class="language-plaintext highlighter-rouge">REPEAT</code>, <code class="language-plaintext highlighter-rouge">SPACE</code>, <code class="language-plaintext highlighter-rouge">SOUNDEX</code>, <code class="language-plaintext highlighter-rouge">DIFFERENC</code> (pingle wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2985">CALCITE-2985</a>] Implement <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">REPEAT</code>, <code class="language-plaintext highlighter-rouge">SPACE</code>, <code class="language-plaintext highlighter-rouge">SOUNDEX</code>, <code class="language-plaintext highlighter-rouge">DIFFERENCE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2975">CALCITE-2975</a>] Implement <code class="language-plaintext 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="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2427">CALCITE-2427</a>] Allow sub-queries in DML statements (Pressenna Sockalingasamy)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2914">CALCITE-2914</a>] Add a new statistic provider, to improve how <code class="language-plaintext highlighter-rouge">LatticeSuggester</code> deduces foreign keys</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2754">CALCITE-2754</a>] Implement <code class="language-plaintext highlighter-rouge">LISTAGG</code> function (Sergey Nuyanzin, Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1172">CALCITE-1172</a>] Add rule to flatten two Aggregate operators into one</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2892">CALCITE-2892</a>] Add the <code class="language-plaintext highlighter-rouge">JSON_KEYS</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-883">CALCITE-883</a>] Support <code class="language-plaintext highlighter-rouge">RESPECT NULLS</code>, <code class="language-plaintext highlighter-rouge">IGNORE NULLS</code> option for <code class="language-plaintext highlighter-rouge">LEAD</code>, <code class="language-plaintext highlighter-rouge">LAG</code>, <code class="language-plaintext highlighter-rouge">FIRST_VALUE</code>, <code class="language-plaintext highlighter-rouge">LAST_VALUE</code>, <code class="language-plaintext highlighter-rouge">NTH_VALUE</code> functions (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2920">CALCITE-2920</a>] In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, add <code class="language-plaintext highlighter-rouge">antiJoin</code> method (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1515">CALCITE-1515</a>] In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, add <code class="language-plaintext highlighter-rouge">functionScan</code> method to create <code class="language-plaintext highlighter-rouge">TableFunctionScan</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2658">CALCITE-2658</a>] Add <code class="language-plaintext highlighter-rouge">ExchangeRemoveConstantKeysRule</code> that removes constant keys from <code class="language-plaintext highlighter-rouge">Exchange</code> or <code class="language-plaintext highlighter-rouge">SortExchange</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2729">CALCITE-2729</a>] Introducing <code class="language-plaintext highlighter-rouge">WindowReduceExpressionsRule</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2808">CALCITE-2808</a>] Add the <code class="language-plaintext highlighter-rouge">JSON_LENGTH</code> function (xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-589">CALCITE-589</a>] Extend <code class="language-plaintext highlighter-rouge">unifyAggregates</code> method to work with Grouping Sets</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2908">CALCITE-2908</a>] Implement SQL <code class="language-plaintext highlighter-rouge">LAST_DAY</code> function (Chunwei Lei)</li>
</ul>
<h4 id="fixes-1-20-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3119">CALCITE-3119</a>] Deprecate Linq4j <code class="language-plaintext highlighter-rouge">CorrelateJoinType</code> (in favor of <code class="language-plaintext highlighter-rouge">JoinType</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3087">CALCITE-3087</a>] <code class="language-plaintext 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="language-plaintext highlighter-rouge">MockSqlOperatorTable</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3123">CALCITE-3123</a>] In <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelDecorrelator</code> use wrong output map for <code class="language-plaintext highlighter-rouge">LogicalAggregate</code> decorrelate (godfreyhe and Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2804">CALCITE-2804</a>] Fix casting to timestamps in Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3107">CALCITE-3107</a>] Upgrade commons-dbcp2 from 2.5.0 to 2.6.0 (Fokko Driesprong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3106">CALCITE-3106</a>] Upgrade commons-pool2 from 2.6.0 to 2.6.2 (Fokko Driesprong)</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="language-plaintext highlighter-rouge">USER</code> and <code class="language-plaintext highlighter-rouge">SYSTEM_USER</code> variables from <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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 &gt; 1 due to precedence issues (Steven Talbot)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3022">CALCITE-3022</a>] Babel: Various SQL parsing issues</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3047">CALCITE-3047</a>] In JDBC adapter, expose multiple schemas of the back-end database</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3048">CALCITE-3048</a>] Improve how JDBC adapter deduces current schema on Redshift</li>
<li>Javadoc typos (Wenhui Tang, Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3096">CALCITE-3096</a>] In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, make alias method idempotent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3055">CALCITE-3055</a>] Use pair of <code class="language-plaintext highlighter-rouge">relNode</code>’s <code class="language-plaintext highlighter-rouge">rowType</code> and digest as unique key for cache in <code class="language-plaintext highlighter-rouge">RelOptPlanner</code> (KazydubB)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3077">CALCITE-3077</a>] Rewrite <code class="language-plaintext highlighter-rouge">CUBE</code>&amp;<code class="language-plaintext highlighter-rouge">ROLLUP</code> queries in <code class="language-plaintext 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="language-plaintext highlighter-rouge">IS NOT DISTINCT FROM</code> expression identification in <code class="language-plaintext highlighter-rouge">RelOptUtil#pushDownJoinConditions</code>()</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3050">CALCITE-3050</a>] Integrate <code class="language-plaintext highlighter-rouge">SqlDialect</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">FLOOR&amp;SUBSTRING</code> functions in <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlLibraryOperators</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3062">CALCITE-3062</a>] Do not populate <code class="language-plaintext 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="language-plaintext highlighter-rouge">MaterializedViewAggregateRule</code>(Project-Aggregate): <code class="language-plaintext highlighter-rouge">ArrayIndexOutOfBoundsException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3066">CALCITE-3066</a>] <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> may incorrectly throw an <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3017">CALCITE-3017</a>] Re-organize how we represent built-in operators that are not in the standard operator table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3056">CALCITE-3056</a>] Elasticsearch adapter. Invalid result with cast function on raw queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3046">CALCITE-3046</a>] <code class="language-plaintext highlighter-rouge">CompileException</code> when inserting casted value of composited user defined type into table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3054">CALCITE-3054</a>] Elasticsearch adapter. Avoid scripting for simple projections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3039">CALCITE-3039</a>] In Interpreter, min() incorrectly returns maximum double value (dijkspicy)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3049">CALCITE-3049</a>] When simplifying “IS NULL” and “IS NOT NULL”, simplify the operand first</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3003">CALCITE-3003</a>] <code class="language-plaintext highlighter-rouge">AssertionError</code> when GROUP BY nested field (Will Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3012">CALCITE-3012</a>] Column uniqueness metadata provider may return wrong result for <code class="language-plaintext highlighter-rouge">FULL OUTER JOIN</code> operator (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3045">CALCITE-3045</a>] <code class="language-plaintext highlighter-rouge">NullPointerException</code> when casting null literal to composite user defined type</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3030">CALCITE-3030</a>] <code class="language-plaintext highlighter-rouge">SqlParseException</code> when using component identifier for setting in merge statements (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3029">CALCITE-3029</a>] Java-oriented field type is wrongly forced to be NOT NULL after being converted to SQL-oriented</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2292">CALCITE-2292</a>] Query result is wrong when table is implemented with <code class="language-plaintext highlighter-rouge">FilterableTable</code> and the sql has multiple where conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2998">CALCITE-2998</a>] <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">ArrayEqualityComparer</code> should use <code class="language-plaintext highlighter-rouge">Arrays#deepEquals</code>/<code class="language-plaintext highlighter-rouge">deepHashCode</code> instead of <code class="language-plaintext highlighter-rouge">Arrays#equals</code>/<code class="language-plaintext highlighter-rouge">hashCode</code> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3021">CALCITE-3021</a>] <code class="language-plaintext highlighter-rouge">ArrayEqualityComparer</code> should use <code class="language-plaintext highlighter-rouge">Arrays#deepEquals</code>/<code class="language-plaintext highlighter-rouge">deepHashCode</code> instead of <code class="language-plaintext highlighter-rouge">Arrays#equals</code>/<code class="language-plaintext 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="language-plaintext highlighter-rouge">RexOver</code> is incorrectly pushed down in <code class="language-plaintext highlighter-rouge">ProjectSetOpTransposeRule</code> and <code class="language-plaintext 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>
<li>Following [<a href="https://issues.apache.org/jira/browse/CALCITE-3010">CALCITE-3010</a>], remove redundant non-reserved keyword definitions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2993">CALCITE-2993</a>] <code class="language-plaintext highlighter-rouge">ParseException</code> may be thrown for legal SQL queries due to incorrect “LOOKAHEAD(1)” hints</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3010">CALCITE-3010</a>] In SQL parser, move <code class="language-plaintext highlighter-rouge">JsonValueExpression</code> into Expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3009">CALCITE-3009</a>] <code class="language-plaintext highlighter-rouge">DiffRepository</code> should ensure that XML resource file does not contain duplicate test names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2986">CALCITE-2986</a>] Wrong results with <code class="language-plaintext highlighter-rouge">= ANY</code> sub-query (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2962">CALCITE-2962</a>] <code class="language-plaintext highlighter-rouge">RelStructuredTypeFlattener</code> generates wrong types for nested column when <code class="language-plaintext highlighter-rouge">flattenProjection</code> (Will Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3007">CALCITE-3007</a>] Type mismatch for <code class="language-plaintext highlighter-rouge">ANY</code> sub-query in project (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2865">CALCITE-2865</a>] <code class="language-plaintext highlighter-rouge">FilterProjectTransposeRule</code> generates wrong <code class="language-plaintext highlighter-rouge">traitSet</code> when <code class="language-plaintext highlighter-rouge">copyFilter</code>/<code class="language-plaintext highlighter-rouge">Project</code> is true (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2343">CALCITE-2343</a>] <code class="language-plaintext highlighter-rouge">PushProjector</code> with OVER expression causes infinite loop (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2994">CALCITE-2994</a>] Least restrictive type among structs does not consider nullability</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2991">CALCITE-2991</a>] <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">VolcanoRuleCall</code> doesn’t match unordered child operand when the operand is not the first operand. <code class="language-plaintext highlighter-rouge">PruneEmptyRules</code> <code class="language-plaintext highlighter-rouge">UNION</code> and <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2976">CALCITE-2976</a>] Improve materialized view rewriting coverage with disjunctive predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2954">CALCITE-2954</a>] <code class="language-plaintext highlighter-rouge">SubQueryJoinRemoveRule</code> and <code class="language-plaintext highlighter-rouge">SubQueryProjectRemoveRule</code> passing on empty set instead of set of correlation id (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2930">CALCITE-2930</a>] <code class="language-plaintext highlighter-rouge">IllegalStateException</code> when <code class="language-plaintext highlighter-rouge">FilterCorrelateRule</code> matches a SEMI or ANTI Correlate (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2004">CALCITE-2004</a>] Push join predicate down into inner relation for lateral join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2820">CALCITE-2820</a>] Avoid reducing certain aggregate functions when it is not necessary (Siddharth Teotia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2928">CALCITE-2928</a>] When resolving user-defined functions (UDFs), use the case-sensitivity of the current connection (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2900">CALCITE-2900</a>] <code class="language-plaintext 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="language-plaintext highlighter-rouge">EnumerableLimitRule</code> on Sort with no collation creates <code class="language-plaintext highlighter-rouge">EnumerableLimit</code> with wrong <code class="language-plaintext highlighter-rouge">traitSet</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">SemiJoin</code> with lazy computation of <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">ROLLUP</code> on MySQL 5</li>
<li>In <code class="language-plaintext highlighter-rouge">RelFieldCollation</code>, add a <code class="language-plaintext highlighter-rouge">withX</code> copy method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2953">CALCITE-2953</a>] <code class="language-plaintext highlighter-rouge">LatticeTest.testTileAlgorithm2</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">getApplicableMaterializations</code> each time the rule is triggered</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2942">CALCITE-2942</a>] Materialized view rewriting logic instantiates <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> each time the rule is triggered</li>
</ul>
<h4 id="build-1-20-0">Build and test suite</h4>
<ul>
<li>Fix test exception caused by slightly different error message from regex in JDK 13</li>
<li>Following [<a href="https://issues.apache.org/jira/browse/CALCITE-2812">CALCITE-2812</a>] Disable parallel execution of parameterized test to avoid hanging</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-35">CALCITE-35</a>] More test cases to guard against providing a broken fix for parenthesized join (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3034">CALCITE-3034</a>] CSV test case description does not match it’s code logic (FaxianZhao)</li>
<li>Mongo adapter. Mongo checker validates only first line of the Bson query in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3053">CALCITE-3053</a>] Add a test to ensure that all functions are documented in the SQL reference</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2961">CALCITE-2961</a>] Enable Travis to test against JDK 13</li>
</ul>
<h4 id="site-1-20-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2952">CALCITE-2952</a>] Document JDK 12 support</li>
<li>Site: Add Danny Chan as committer</li>
<li>Site: Improve contribution guidelines for JIRA</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2846">CALCITE-2846</a>] Document Oracle-specific functions, such as <code class="language-plaintext highlighter-rouge">NVL</code> and <code class="language-plaintext highlighter-rouge">LTRIM</code>, in the SQL reference</li>
<li>Site: Add new committers and PMC (Chunwei Lei, Ruben Quesada Lopez, Zhiwei Peng and Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-3006">CALCITE-3006</a>] Example code on site cannot compile (Chunwei Lei)</li>
<li>Site: Add guidelines for JIRA’s fix version field</li>
<li>Site: Update content of “Not implemented” since JSON_LENGH has already been added</li>
<li>Site: Improve documentation for MySQL-specific JSON operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2927">CALCITE-2927</a>] The Javadoc and implement of <code class="language-plaintext highlighter-rouge">RuleQueue.computeImportance()</code> is inconsistent (Meng Wang)</li>
<li>Update instructions for publishing site; we previously used subversion, now we use git</li>
<li>Site: Add Alibaba MaxCompute to powered-by page</li>
<li>Site: Add new committers (Haisheng Yuan, Hongze Zhang and Stamatis Zampetakis)</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>
<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
and bug-fixes. Among others, there have been significant improvements in JSON
query support.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11, 12 and OpenJDK 8, 9, 10, 11, 12;
Guava versions 19.0 to 27.1-jre;
Druid version 0.11.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-19-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1912">CALCITE-1912</a>]
Support <code class="language-plaintext 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="language-plaintext highlighter-rouge">JSON_ARRAYAGG</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2791">CALCITE-2791</a>]
Add the <code class="language-plaintext highlighter-rouge">JSON_TYPE</code> function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2864">CALCITE-2864</a>]
Add the <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">BIT_AND</code>, <code class="language-plaintext 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="language-plaintext highlighter-rouge">HAVING</code> clause for aggregate functions</li>
</ul>
<h4 id="fixes-1-19-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1513">CALCITE-1513</a>]
Correlated <code class="language-plaintext highlighter-rouge">NOT IN</code> query throws <code class="language-plaintext highlighter-rouge">AssertionError</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1726">CALCITE-1726</a>]
Sub-query in <code class="language-plaintext highlighter-rouge">FILTER</code> is left untransformed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2249">CALCITE-2249</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> generates non-equivalent nodes if <code class="language-plaintext highlighter-rouge">Aggregate</code>
contains a <code class="language-plaintext highlighter-rouge">DISTINCT</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2288">CALCITE-2288</a>]
Type assertion error when reducing partially-constant expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2290">CALCITE-2290</a>]
Type mismatch during flattening</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2301">CALCITE-2301</a>]
JDBC adapter: use query timeout from the top-level statement</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2338">CALCITE-2338</a>]
Make simplification API more conservative</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2344">CALCITE-2344</a>]
Avoid inferring <code class="language-plaintext highlighter-rouge">$0 = null</code> predicate from <code class="language-plaintext highlighter-rouge">$0 IS NULL</code> when <code class="language-plaintext highlighter-rouge">$0</code> is not
nullable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2375">CALCITE-2375</a>]
<code class="language-plaintext highlighter-rouge">EnumerableDefaults.join_()</code> leaks connections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2437">CALCITE-2437</a>]
<code class="language-plaintext highlighter-rouge">FilterMultiJoinMergeRule</code> doesn’t combine postFilterCondition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2454">CALCITE-2454</a>]
Avoid treating <code class="language-plaintext highlighter-rouge">Project(x=1)</code> and <code class="language-plaintext highlighter-rouge">Project(x=1)</code> equal when the type of <code class="language-plaintext highlighter-rouge">1</code> is
<code class="language-plaintext highlighter-rouge">int</code> in the first rel and <code class="language-plaintext 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="language-plaintext highlighter-rouge">CalciteException</code>, <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">RelNode</code> description includes all tree when recomputed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2554">CALCITE-2554</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">ASCII(string)</code> in <code class="language-plaintext 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>]
Add specific translation for <code class="language-plaintext highlighter-rouge">POSITION</code>, <code class="language-plaintext highlighter-rouge">MOD</code> and set operators in BigQuery
and Hive SQL dialects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2625">CALCITE-2625</a>]
<code class="language-plaintext highlighter-rouge">ROW_NUMBER</code>, <code class="language-plaintext 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="language-plaintext highlighter-rouge">CatalogReader#getAllSchemaObjects</code> in <code class="language-plaintext highlighter-rouge">CatalogScope</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2635">CALCITE-2635</a>]
<code class="language-plaintext highlighter-rouge">getMonotonocity</code> is slow on wide tables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2674">CALCITE-2674</a>]
<code class="language-plaintext highlighter-rouge">SqlIdentifier</code> same name with built-in function but with escape character
should be still resolved as an identifier</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2677">CALCITE-2677</a>]
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="language-plaintext highlighter-rouge">EnumerableConvention</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2722">CALCITE-2722</a>]
<code class="language-plaintext highlighter-rouge">SqlImplementor.createLeftCall</code> method throws <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2733">CALCITE-2733</a>]
Use <code class="language-plaintext highlighter-rouge">catalog</code> and <code class="language-plaintext highlighter-rouge">schema</code> from JDBC connect string to retrieve tables if specified</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2750">CALCITE-2750</a>]
<code class="language-plaintext highlighter-rouge">PI</code> operator is incorrectly identified as dynamic function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2755">CALCITE-2755</a>]
Expose document <code class="language-plaintext highlighter-rouge">_id</code> field when querying ElasticSearch</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2762">CALCITE-2762</a>]
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="language-plaintext highlighter-rouge">ClosableAllocation</code>, <code class="language-plaintext highlighter-rouge">ClosableAllocationOwner</code>,
<code class="language-plaintext 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="language-plaintext highlighter-rouge">NullPointerException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2785">CALCITE-2785</a>]
In <code class="language-plaintext highlighter-rouge">EnumerableAggregate</code>, wrong result produced If there are sorted aggregates
and non-sorted aggregates at the same time</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2787">CALCITE-2787</a>]
JSON aggregate calls with different null clause get incorrectly merged while
converting from SQL to relational algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2790">CALCITE-2790</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> incorrectly pushes down distinct count into join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2797">CALCITE-2797</a>]
Support <code class="language-plaintext 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="language-plaintext highlighter-rouge">ORDER BY</code> in sub-query, provided it has no <code class="language-plaintext highlighter-rouge">LIMIT</code> or
<code class="language-plaintext 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="language-plaintext highlighter-rouge">'2010-01-01' &lt; TIMESTAMP</code> leads
to incorrect results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2805">CALCITE-2805</a>]
Can’t specify port with Cassandra adapter in connection string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2806">CALCITE-2806</a>]
Cassandra adapter doesn’t allow uppercase characters in table names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2811">CALCITE-2811</a>]
Update version of Cassandra driver</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2814">CALCITE-2814</a>]
In ElasticSearch adapter, fix <code class="language-plaintext highlighter-rouge">GROUP BY</code> when using raw item access
(e.g. <code class="language-plaintext highlighter-rouge">_MAP*</code> [‘a.b.c’])</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2817">CALCITE-2817</a>]
Make <code class="language-plaintext highlighter-rouge">CannotPlanException</code> more informative</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2827">CALCITE-2827</a>]
Allow <code class="language-plaintext highlighter-rouge">CONVENTION.NONE</code> planning with <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2838">CALCITE-2838</a>]
Simplification: Remove redundant <code class="language-plaintext highlighter-rouge">IS TRUE</code> checks</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2839">CALCITE-2839</a>]
Simplify comparisons against <code class="language-plaintext highlighter-rouge">BOOLEAN</code> literals</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2840">CALCITE-2840</a>]
<code class="language-plaintext highlighter-rouge">RexNode</code> simplification logic should use more specific <code class="language-plaintext highlighter-rouge">UnknownAs</code> modes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2841">CALCITE-2841</a>]
Simplification: push negation into Case expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2842">CALCITE-2842</a>]
Computing <code class="language-plaintext highlighter-rouge">RexCall</code> digest containing <code class="language-plaintext highlighter-rouge">IN</code> expressions leads to exceptions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2848">CALCITE-2848</a>]
Simplifying a CASE statement's first branch should ignore its safety</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2850">CALCITE-2850</a>]
Geode adapter: support <code class="language-plaintext highlighter-rouge">BOOLEAN</code> column as filter operand</li>
<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="language-plaintext highlighter-rouge">COMMA JOIN</code> as <code class="language-plaintext highlighter-rouge">CROSS JOIN</code> for <code class="language-plaintext 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="language-plaintext highlighter-rouge">_MAP</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2887">CALCITE-2887</a>]
Improve performance of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Class.getSimpleName()</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2899">CALCITE-2899</a>]
Deprecate <code class="language-plaintext highlighter-rouge">RelTraitPropagationVisitor</code> and remove its usages</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2890">CALCITE-2890</a>]
In ElasticSearch adapter, combine <code class="language-plaintext highlighter-rouge">any_value</code> with other aggregation functions
failed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2891">CALCITE-2891</a>]
Alias suggester failed to suggest name based on original name incrementally</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2894">CALCITE-2894</a>]
<code class="language-plaintext highlighter-rouge">RelMdPercentageOriginalRows</code> throws <code class="language-plaintext 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="language-plaintext highlighter-rouge">AbstractRelNode.computeDigest()</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2929">CALCITE-2929</a>]
Simplification of <code class="language-plaintext highlighter-rouge">IS NULL</code> checks are incorrectly assuming that <code class="language-plaintext highlighter-rouge">CAST</code>s are
possible</li>
<li>Improve Graphviz dump in <code class="language-plaintext highlighter-rouge">CannotPlanException</code>: make boxes shorter, print
composite traits if they were simplified</li>
<li>Make <code class="language-plaintext highlighter-rouge">SparkHandlerImpl</code> singleton thread-safe</li>
<li>Remove usage of <code class="language-plaintext highlighter-rouge">userConfig</code> attribute in ElasticSearch adapter</li>
<li>In ElasticSearch adapter, remove dead (or unnecessary) code</li>
</ul>
<h4 id="build-1-19-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2732">CALCITE-2732</a>]
Upgrade PostgreSQL driver version</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2759">CALCITE-2759</a>]
Update <code class="language-plaintext highlighter-rouge">maven-remote-resources-plugin</code> to 1.6.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2765">CALCITE-2765</a>]
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="language-plaintext highlighter-rouge">PlannerTest</code> ignores top-level <code class="language-plaintext highlighter-rouge">ORDER BY</code> clause (<code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">StringBuffer</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2875">CALCITE-2875</a>]
Some misspellings in <code class="language-plaintext 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="language-plaintext highlighter-rouge">LogicalAggregate</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2836">CALCITE-2836</a>]
Remove <code class="language-plaintext highlighter-rouge">maven-compiler-plugin</code> from <code class="language-plaintext highlighter-rouge">calcite-plus</code> module <code class="language-plaintext highlighter-rouge">pom.xml</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2878">CALCITE-2878</a>]
Avoid <code class="language-plaintext highlighter-rouge">throw new RuntimeException(e)</code> in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2916">CALCITE-2916</a>]
Upgrade jackson to 2.9.8</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2925">CALCITE-2925</a>]
Exclude <code class="language-plaintext highlighter-rouge">maven-wrapper.jar</code> from source distribution</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2931">CALCITE-2931</a>]
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="language-plaintext highlighter-rouge">DruidAdapterIT</code> regression after 1.17 release</li>
<li>Improve messages for tests based on <code class="language-plaintext 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="language-plaintext highlighter-rouge">log4j-over-slf4j</code>) from
<code class="language-plaintext highlighter-rouge">cassandra-all</code>
</li>
</ul>
<h4 id="site-1-19-0">Web site and documentation</h4>
<ul>
<li>Switch from <code class="language-plaintext highlighter-rouge">maven:alpine</code> to <code class="language-plaintext highlighter-rouge">maven</code> image for generating javadoc when
building the site</li>
<li>Update instructions for pushing to the git site repository</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2734">CALCITE-2734</a>]
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="language-plaintext 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>]
Steps for building site under Windows; fix misprint in SQL Language page</li>
<li>Site: News item for release 1.18</li>
<li>Site: Rename MapD to OmniSci, and update logos</li>
<li>Update site for new repository</li>
<li>Update git URL</li>
<li>Site: ElasticAdapter mention supported versions (and support schedule)</li>
<li>Site: Improve documentation for ElasticSearch Adapter</li>
<li>Site: Update PMC chair</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>
<p>With over 200 commits from 36 contributors, this is the largest
Calcite release ever. To the SQL dialect, we added
<a href="https://issues.apache.org/jira/browse/CALCITE-2266">JSON
functions</a> and
<a href="https://issues.apache.org/jira/browse/CALCITE-2402">linear
regression functions</a>, the
<a href="https://issues.apache.org/jira/browse/CALCITE-2224">WITHIN
GROUP</a> clause for aggregate functions; there is a new
<a href="https://issues.apache.org/jira/browse/CALCITE-1870">utility
to recommend lattices based on past queries</a>,
and improvements to expression simplification, the SQL advisor,
and the Elasticsearch and Apache Geode adapters.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10, 11 and OpenJDK 10, 11;
Guava versions 19.0 to 27.0.1-jre;
Druid version 0.11.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-18-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2662">CALCITE-2662</a>]
In <code class="language-plaintext highlighter-rouge">Planner</code>, allow parsing a stream (<code class="language-plaintext highlighter-rouge">Reader</code>) instead of a <code class="language-plaintext highlighter-rouge">String</code>
(Enrico Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2699">CALCITE-2699</a>]
<code class="language-plaintext highlighter-rouge">TIMESTAMPADD</code> function now applies to <code class="language-plaintext highlighter-rouge">DATE</code> and <code class="language-plaintext highlighter-rouge">TIME</code> as well as <code class="language-plaintext highlighter-rouge">TIMESTAMP</code>
(xuqianjin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-563">CALCITE-563</a>]
In JDBC adapter, push bindable parameters down to the underlying JDBC data
source (Vladimir Sitnikov, Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2663">CALCITE-2663</a>]
In DDL parser, add <code class="language-plaintext highlighter-rouge">CREATE</code> and <code class="language-plaintext highlighter-rouge">DROP FUNCTION</code> (ambition119)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2266">CALCITE-2266</a>]
Implement SQL:2016 JSON functions: <code class="language-plaintext highlighter-rouge">JSON_EXISTS</code>, <code class="language-plaintext highlighter-rouge">JSON_VALUE</code>, <code class="language-plaintext highlighter-rouge">JSON_QUERY</code>,
<code class="language-plaintext highlighter-rouge">JSON_OBJECT</code>, <code class="language-plaintext highlighter-rouge">JSON_OBJECTAGG</code>, <code class="language-plaintext highlighter-rouge">JSON_ARRAY</code>, <code class="language-plaintext highlighter-rouge">JSON_ARRAYAGG</code>, <code class="language-plaintext highlighter-rouge">x IS JSON</code>
predicate (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2224">CALCITE-2224</a>]
Support <code class="language-plaintext highlighter-rouge">WITHIN GROUP</code> clause for aggregate functions (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2405">CALCITE-2405</a>]
In Babel parser, make 400 reserved keywords including <code class="language-plaintext highlighter-rouge">YEAR</code>, <code class="language-plaintext highlighter-rouge">SECOND</code>, <code class="language-plaintext highlighter-rouge">DESC</code>
non-reserved</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1870">CALCITE-1870</a>]
Lattice suggester</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2571">CALCITE-2571</a>]
<code class="language-plaintext highlighter-rouge">TRIM</code> function now trims more than one character (Andrew Pilloud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>]
Add Maven wrapper for Calcite (Ratandeep S. Ratti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
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="language-plaintext highlighter-rouge">COVAR_POP</code>, <code class="language-plaintext highlighter-rouge">COVAR_SAMP</code>, <code class="language-plaintext highlighter-rouge">REGR_COUNT</code>,
<code class="language-plaintext highlighter-rouge">REGR_SXX</code>, <code class="language-plaintext highlighter-rouge">REGR_SYY</code>
</li>
<li>SQL advisor (<code class="language-plaintext highlighter-rouge">SqlAdvisor</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2479">CALCITE-2479</a>]
Automatically quote identifiers that look like SQL keywords</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2478">CALCITE-2478</a>]
Purge <code class="language-plaintext highlighter-rouge">from_clause</code> when <code class="language-plaintext highlighter-rouge">_suggest_</code> token is located in one of the
<code class="language-plaintext highlighter-rouge">FROM</code> sub-queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2477">CALCITE-2477</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">MINUS</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2473">CALCITE-2473</a>]
Support <code class="language-plaintext highlighter-rouge">--</code> comments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2434">CALCITE-2434</a>]
Hints for nested tables and schemas</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2433">CALCITE-2433</a>]
Configurable quoting characters</li>
</ul>
</li>
<li>Relational algebra builder (<code class="language-plaintext highlighter-rouge">RelBuilder</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2661">CALCITE-2661</a>]
Add methods for creating <code class="language-plaintext highlighter-rouge">Exchange</code> and <code class="language-plaintext highlighter-rouge">SortExchange</code>
relational expressions (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2654">CALCITE-2654</a>]
Add a fluent API for building complex aggregate calls</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2441">CALCITE-2441</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.scan</code> should expand <code class="language-plaintext highlighter-rouge">TranslatableTable</code> and views</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2647">CALCITE-2647</a>]
Add a <code class="language-plaintext 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="language-plaintext highlighter-rouge">project</code> method should combine expressions if the underlying
node is a <code class="language-plaintext highlighter-rouge">Project</code>
</li>
</ul>
</li>
<li>Elasticsearch adapter:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2679">CALCITE-2679</a>]
Implement <code class="language-plaintext highlighter-rouge">DISTINCT</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">DATE</code> and <code class="language-plaintext 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>]
Support <code class="language-plaintext highlighter-rouge">NOT</code> operator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2578">CALCITE-2578</a>]
Support <code class="language-plaintext highlighter-rouge">ANY_VALUE</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2528">CALCITE-2528</a>]
Support <code class="language-plaintext highlighter-rouge">Aggregate</code> (Andrei Sereda)</li>
</ul>
</li>
<li>Apache Geode adapter:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2709">CALCITE-2709</a>]
Allow filtering on <code class="language-plaintext highlighter-rouge">DATE</code>, <code class="language-plaintext highlighter-rouge">TIME</code>, <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> fields (Sandeep Chada)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2671">CALCITE-2671</a>]
<code class="language-plaintext highlighter-rouge">GeodeFilter</code> now converts multiple <code class="language-plaintext highlighter-rouge">OR</code> predicates (on same attribute) into
a single <code class="language-plaintext highlighter-rouge">IN SET</code> (Sandeep Chada)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2498">CALCITE-2498</a>]
Geode adapter wrongly quotes <code class="language-plaintext highlighter-rouge">BOOLEAN</code> values as strings (Andrei Sereda)</li>
</ul>
</li>
</ul>
<h4 id="fixes-1-18-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2670">CALCITE-2670</a>]
Combine similar JSON aggregate functions in operator table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2468">CALCITE-2468</a>]
Validator throws <code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> when trying to infer operand type
from <code class="language-plaintext highlighter-rouge">STRUCT</code> return type (Rong Rong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2596">CALCITE-2596</a>]
When translating correlated variables in enumerable convention, convert
not-null boxed primitive values to primitive (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2684">CALCITE-2684</a>]
<code class="language-plaintext highlighter-rouge">RexBuilder</code> gives <code class="language-plaintext highlighter-rouge">AssertionError</code> when creating integer literal larger than
2<sup>63</sup> (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2719">CALCITE-2719</a>]
In JDBC adapter for MySQL, fix cast to <code class="language-plaintext highlighter-rouge">INTEGER</code> and <code class="language-plaintext highlighter-rouge">BIGINT</code> (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2713">CALCITE-2713</a>]
JDBC adapter may generate casts on PostgreSQL for <code class="language-plaintext highlighter-rouge">VARCHAR</code> type exceeding max
length</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2529">CALCITE-2529</a>]
All numbers are in the same type family (Andrew Pilloud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2701">CALCITE-2701</a>]
Make generated <code class="language-plaintext highlighter-rouge">Baz</code> classes immutable (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2619">CALCITE-2619</a>]
Reduce string literal creation cost by deferring and caching charset
conversion (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2720">CALCITE-2720</a>]
<code class="language-plaintext highlighter-rouge">RelMetadataQuery.getTableOrigin</code> throws <code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> if
<code class="language-plaintext highlighter-rouge">RelNode</code> has no columns (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2717">CALCITE-2717</a>]
Use <code class="language-plaintext highlighter-rouge">Interner</code> instead of <code class="language-plaintext highlighter-rouge">LoadingCache</code> to cache traits, and so allow traits
to be garbage-collected (Haisheng Yuan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2542">CALCITE-2542</a>]
In SQL parser, allow <code class="language-plaintext highlighter-rouge">.field</code> to follow any expression, not just tables and
columns (Rong Rong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2637">CALCITE-2637</a>]
In SQL parser, allow prefix ‘-‘ between <code class="language-plaintext highlighter-rouge">BETWEEN</code> and <code class="language-plaintext highlighter-rouge">AND</code> (Qi Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2632">CALCITE-2632</a>]
Ensure that <code class="language-plaintext highlighter-rouge">RexNode</code> and its sub-classes implement <code class="language-plaintext highlighter-rouge">hashCode</code> and <code class="language-plaintext highlighter-rouge">equals</code>
methods (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2494">CALCITE-2494</a>]
<code class="language-plaintext highlighter-rouge">RexFieldAccess</code> should implement <code class="language-plaintext highlighter-rouge">equals</code> and <code class="language-plaintext highlighter-rouge">hashCode</code> methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2715">CALCITE-2715</a>]
In JDBC adapter, do not generate character set in data types for MS SQL Server
(Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2714">CALCITE-2714</a>]
Make <code class="language-plaintext highlighter-rouge">BasicSqlType</code> immutable, and now <code class="language-plaintext highlighter-rouge">SqlTypeFactory.createWithNullability</code>
can reuse existing type if possible (Ruben Quesada Lopez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2687">CALCITE-2687</a>]
<code class="language-plaintext highlighter-rouge">IS DISTINCT FROM</code> could lead to exceptions in <code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code>
(Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2673">CALCITE-2673</a>]
<code class="language-plaintext highlighter-rouge">SqlDialect</code> supports pushing of all functions by default</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2675">CALCITE-2675</a>]
Type validation error as <code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> fails to preserve type
nullability (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2669">CALCITE-2669</a>]
<code class="language-plaintext highlighter-rouge">RelMdTableReferences</code> should check whether references inferred from input are
null for <code class="language-plaintext highlighter-rouge">Union</code>/<code class="language-plaintext highlighter-rouge">Join</code> operators</li>
<li>Following
[<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="language-plaintext highlighter-rouge">RelMdExpressionLineage</code>
</li>
<li>Fix invocation of deprecated constructor of <code class="language-plaintext highlighter-rouge">SqlAggFunction</code> (Hongze Zhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2652">CALCITE-2652</a>]
<code class="language-plaintext highlighter-rouge">SqlNode</code> to SQL conversion fails if the join condition references a <code class="language-plaintext highlighter-rouge">BOOLEAN</code>
column (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2657">CALCITE-2657</a>]
In <code class="language-plaintext highlighter-rouge">RexShuttle</code>, use <code class="language-plaintext highlighter-rouge">RexCall.clone</code> instead of <code class="language-plaintext highlighter-rouge">new RexCall</code> (Chunwei Lei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>]
Support semi-join via <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SUM0(x)</code> to <code class="language-plaintext highlighter-rouge">COALESCE(SUM(x), 0)</code>
</li>
<li><code class="language-plaintext 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="language-plaintext highlighter-rouge">FilterProjectTransposeRule</code> that can push down a <code class="language-plaintext highlighter-rouge">Filter</code>
that contains correlated variables (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2638">CALCITE-2638</a>]
Constant reducer should not treat as constant an <code class="language-plaintext highlighter-rouge">RexInputRef</code> that points to a
call to a dynamic or non-deterministic function (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2628">CALCITE-2628</a>]
JDBC adapter throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> while generating <code class="language-plaintext highlighter-rouge">GROUP BY</code> query
for MySQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2404">CALCITE-2404</a>]
Implement access to structured-types in enumerable runtime
(Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2622">CALCITE-2622</a>]
<code class="language-plaintext highlighter-rouge">RexFieldCollation.toString()</code> method is not deterministic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2611">CALCITE-2611</a>]
Linq4j code generation failure if one side of an <code class="language-plaintext highlighter-rouge">OR</code> contains <code class="language-plaintext highlighter-rouge">UNKNOWN</code>
(Zoltan Haindrich)</li>
<li>Canonize simple cases for composite traits in trait factory</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2591">CALCITE-2591</a>]
<code class="language-plaintext highlighter-rouge">EnumerableDefaults#mergeJoin</code> should throw error and not return incorrect
results when inputs are not ordered (Enrico Olivelli)</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-2592">CALCITE-2592</a>]
<code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code> is never taken</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2526">CALCITE-2526</a>]
Add test for <code class="language-plaintext highlighter-rouge">OR</code> with nullable comparisons (pengzhiwei)</li>
<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="language-plaintext 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="language-plaintext highlighter-rouge">StandardConvertletTable#convertDatetimeMinus</code>
</li>
<li>Avoid <code class="language-plaintext highlighter-rouge">NullPointerException</code> when <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SUBSTRING</code> function (Andrew Pilloud)</li>
<li>Remove dead code: <code class="language-plaintext highlighter-rouge">Compatible</code>, <code class="language-plaintext 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="language-plaintext highlighter-rouge">IN</code> expressions when converting <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">Profiler</code>’s <code class="language-plaintext highlighter-rouge">surprise</code> and <code class="language-plaintext highlighter-rouge">cardinality</code> attributes to
avoid floating point discrepancies (Alisha Prabhu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2563">CALCITE-2563</a>]
Materialized view rewriting may swap columns in equivalent classes incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2551">CALCITE-2551</a>]
<code class="language-plaintext highlighter-rouge">SqlToRelConverter</code> gives <code class="language-plaintext highlighter-rouge">ClassCastException</code> while handling <code class="language-plaintext highlighter-rouge">IN</code> inside
<code class="language-plaintext highlighter-rouge">WHERE NOT CASE</code> (pengzhiwei)</li>
<li>Remove redundant <code class="language-plaintext highlighter-rouge">new</code> expression in constant array creation</li>
<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="language-plaintext highlighter-rouge">matchRecognize</code> field of <code class="language-plaintext highlighter-rouge">SqlSelect</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2514">CALCITE-2514</a>]
Add <code class="language-plaintext highlighter-rouge">SqlIdentifier</code> conversion to <code class="language-plaintext highlighter-rouge">ITEM</code> operator for dynamic tables in
<code class="language-plaintext highlighter-rouge">ExtendedExpander</code> (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2491">CALCITE-2491</a>]
Refactor <code class="language-plaintext highlighter-rouge">NameSet</code>, <code class="language-plaintext highlighter-rouge">NameMap</code>, and <code class="language-plaintext highlighter-rouge">NameMultimap</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2520">CALCITE-2520</a>]
Make <code class="language-plaintext highlighter-rouge">SparkHandlerImpl#compile</code> silent by default, print code in
<code class="language-plaintext highlighter-rouge">calcite.debug=true</code> mode only</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
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="language-plaintext highlighter-rouge">Integer.MAX_VALUE</code> (Hongze Zhang)</li>
<li>Support <code class="language-plaintext highlighter-rouge">AND</code>, <code class="language-plaintext highlighter-rouge">OR</code>, <code class="language-plaintext highlighter-rouge">COALESCE</code>, <code class="language-plaintext highlighter-rouge">IS [NOT] DISTINCT</code> in <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">NullPointerException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2481">CALCITE-2481</a>]
<code class="language-plaintext highlighter-rouge">NameSet</code> assumes lower-case characters have greater codes, which does not hold
for certain characters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2480">CALCITE-2480</a>]
<code class="language-plaintext highlighter-rouge">NameSet.contains</code> wrongly returns <code class="language-plaintext highlighter-rouge">false</code> when element in set is upper-case
and <code class="language-plaintext highlighter-rouge">seek</code> is lower-case</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2465">CALCITE-2465</a>]
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="language-plaintext highlighter-rouge">POWER</code>, <code class="language-plaintext highlighter-rouge">ATAN2</code> functions fail with <code class="language-plaintext highlighter-rouge">NoSuchMethodException</code>
</li>
<li>Typo in <code class="language-plaintext highlighter-rouge">HepPlanner</code> trace message (Dylan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2416">CALCITE-2416</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> when determining monotonicity (Alina Ipatina)</li>
<li>Java 8: use <code class="language-plaintext highlighter-rouge">Map.computeIfAbsent</code> when possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2431">CALCITE-2431</a>]
<code class="language-plaintext highlighter-rouge">SqlUtil.getAncestry</code> throws <code class="language-plaintext highlighter-rouge">AssertionError</code> when providing completion hints
for sub-schema</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2430">CALCITE-2430</a>]
<code class="language-plaintext highlighter-rouge">RelDataTypeImpl.getFieldList</code> throws <code class="language-plaintext highlighter-rouge">AssertionError</code> when SQL Advisor inspects
non-struct field</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2429">CALCITE-2429</a>]
<code class="language-plaintext highlighter-rouge">SqlValidatorImpl.lookupFieldNamespace</code> throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> when SQL
Advisor observes non-existing field</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2422">CALCITE-2422</a>]
Query with unnest of column from nested sub-query fails when dynamic table is
used</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2417">CALCITE-2417</a>]
<code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> throws <code class="language-plaintext highlighter-rouge">ClassCastException</code> with structs (Benoit Hanotte)</li>
<li>Upgrades:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2716">CALCITE-2716</a>]
Upgrade to Avatica 1.13.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2711">CALCITE-2711</a>]
Upgrade SQLLine to 1.6.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2570">CALCITE-2570</a>]
Upgrade <code class="language-plaintext highlighter-rouge">forbiddenapis</code> to 2.6 for JDK 11 support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2486">CALCITE-2486</a>]
Upgrade Apache parent POM to version 21</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2467">CALCITE-2467</a>]
Upgrade <code class="language-plaintext highlighter-rouge">owasp-dependency-check</code> maven plugin to 3.3.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2559">CALCITE-2559</a>]
Update Checkstyle to 7.8.2</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2497">CALCITE-2497</a>]
Update Janino version to 3.0.9</li>
</ul>
</li>
<li>Expression simplification (<code class="language-plaintext highlighter-rouge">RexSimplify</code>):
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2731">CALCITE-2731</a>]
<code class="language-plaintext highlighter-rouge">RexProgramBuilder</code> makes unsafe simplifications to <code class="language-plaintext highlighter-rouge">CASE</code> expressions (Zoltan
Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2730">CALCITE-2730</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder</code> incorrectly simplifies a <code class="language-plaintext highlighter-rouge">Filter</code> with duplicate conjunction to
empty (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2726">CALCITE-2726</a>]
<code class="language-plaintext highlighter-rouge">ReduceExpressionRule</code> may oversimplify filter conditions containing <code class="language-plaintext highlighter-rouge">NULL</code>
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="language-plaintext highlighter-rouge">CASE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2639">CALCITE-2639</a>]
<code class="language-plaintext highlighter-rouge">FilterReduceExpressionsRule</code> causes <code class="language-plaintext highlighter-rouge">ArithmeticException</code> at execution time</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2620">CALCITE-2620</a>]
Simplify <code class="language-plaintext highlighter-rouge">COALESCE(NULL, x)</code><code class="language-plaintext highlighter-rouge">x</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1413">CALCITE-1413</a>]
Enhance boolean case statement simplifications (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2615">CALCITE-2615</a>]
When simplifying <code class="language-plaintext highlighter-rouge">NOT-AND-OR</code>, <code class="language-plaintext highlighter-rouge">RexSimplify</code> incorrectly applies predicates
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="language-plaintext highlighter-rouge">UNKNOWN</code> value will be
interpreted as is, or as <code class="language-plaintext highlighter-rouge">TRUE</code> or <code class="language-plaintext 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="language-plaintext 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>]
Simplifying <code class="language-plaintext highlighter-rouge">COALESCE(+ nullInt, +vInt())</code> results in
<code class="language-plaintext highlighter-rouge">AssertionError: result mismatch</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2580">CALCITE-2580</a>]
Simplifying <code class="language-plaintext highlighter-rouge">COALESCE(NULL &gt; NULL, TRUE)</code> produces wrong result filter
expressions (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2586">CALCITE-2586</a>]
<code class="language-plaintext highlighter-rouge">CASE</code> with repeated branches gives <code class="language-plaintext highlighter-rouge">AssertionError</code>
(pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2590">CALCITE-2590</a>]
Remove redundant <code class="language-plaintext highlighter-rouge">CAST</code> when operand has exactly the same type as it is casted to</li>
<li>Implement fuzzy generator for <code class="language-plaintext highlighter-rouge">CASE</code> expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2556">CALCITE-2556</a>]
Simplify <code class="language-plaintext highlighter-rouge">NOT TRUE</code><code class="language-plaintext highlighter-rouge">FALSE</code>, and <code class="language-plaintext highlighter-rouge">NOT FALSE</code><code class="language-plaintext highlighter-rouge">TRUE</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2581">CALCITE-2581</a>]
Avoid errors in simplifying <code class="language-plaintext highlighter-rouge">UNKNOWN AND NOT (UNKNOWN OR ...)</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2527">CALCITE-2527</a>]
Simplify <code class="language-plaintext highlighter-rouge">(c IS NULL) OR (c IS ...)</code> might result in AssertionError: result
mismatch (pengzhiwei)</li>
<li>Display random failure of Rex fuzzer in build logs to inspire further fixes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2567">CALCITE-2567</a>]
Simplify <code class="language-plaintext highlighter-rouge">IS NULL(NULL)</code> to <code class="language-plaintext highlighter-rouge">TRUE</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2555">CALCITE-2555</a>]
RexSimplify: Simplify <code class="language-plaintext highlighter-rouge">x &gt;= NULL</code> to <code class="language-plaintext highlighter-rouge">UNKNOWN</code> (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2504">CALCITE-2504</a>]
Add randomized test for better code coverage of rex node create and
simplification</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2469">CALCITE-2469</a>]
Simplify <code class="language-plaintext highlighter-rouge">(NOT x) IS NULL</code><code class="language-plaintext highlighter-rouge">x IS NULL</code> (pengzhiwei);
also, simplify <code class="language-plaintext highlighter-rouge">f(x, y) IS NULL</code><code class="language-plaintext highlighter-rouge">x IS NULL OR y IS NULL</code> if <code class="language-plaintext 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="language-plaintext highlighter-rouge">AND(x, y, NOT(y))</code><code class="language-plaintext 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="language-plaintext highlighter-rouge">x AND NOT(x)</code> to <code class="language-plaintext highlighter-rouge">FALSE</code> for nullable <code class="language-plaintext highlighter-rouge">x</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2505">CALCITE-2505</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> when simplifying <code class="language-plaintext highlighter-rouge">IS [NOT] DISTINCT</code> expressions
(Haisheng Yuan)</li>
</ul>
</li>
</ul>
<h4 id="build-1-18-0">Build and test suite</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2678">CALCITE-2678</a>]
<code class="language-plaintext highlighter-rouge">RelBuilderTest#testRelBuilderToString</code> fails on Windows (Stamatis Zampetakis)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2660">CALCITE-2660</a>]
<code class="language-plaintext highlighter-rouge">OsAdapterTest</code> now checks whether required commands are available</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2655">CALCITE-2655</a>]
Enable Travis to test against JDK 12</li>
<li>Ensure that tests are not calling <code class="language-plaintext highlighter-rouge">checkSimplify3</code> with <code class="language-plaintext highlighter-rouge">expected</code>,
<code class="language-plaintext highlighter-rouge">expectedFalse</code>, <code class="language-plaintext highlighter-rouge">expectedTrue</code> all the same</li>
<li>Geode adapter tests: Removed unnecessary <code class="language-plaintext highlighter-rouge">try/final</code> block in <code class="language-plaintext highlighter-rouge">RefCountPolicy</code>
</li>
<li>Add license to <code class="language-plaintext highlighter-rouge">TestKtTest</code> and add <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">forbiddenapis</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">maven-wrapper.properties</code> is missing a header</li>
<li>
<code class="language-plaintext highlighter-rouge">commons:commons-pool2</code> is used in tests only, so use <code class="language-plaintext highlighter-rouge">scope=test</code> for it</li>
<li>Make <code class="language-plaintext 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>
<li>Make build scripts Maven 3.3 compatible</li>
<li>Fix JavaDoc warnings for Java 9+, and check JavaDoc in Travis CI</li>
<li>Unwrap invocation target exception from QuidemTest#test</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2518">CALCITE-2518</a>]
Add <code class="language-plaintext highlighter-rouge">failOnWarnings</code> to <code class="language-plaintext highlighter-rouge">maven-javadoc-plugin</code> configuration</li>
<li>Silence Pig, Spark, and Elasticsearch logs in tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1894">CALCITE-1894</a>]
<code class="language-plaintext highlighter-rouge">CsvTest.testCsvStream</code> failing often: add <code class="language-plaintext highlighter-rouge">@Ignore</code> since the test is known to
fail</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2535">CALCITE-2535</a>]
Enable <code class="language-plaintext 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="language-plaintext highlighter-rouge">parser.java</code> update on each build</li>
<li>Increase timeout for Cassandra daemon startup for <code class="language-plaintext 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="language-plaintext highlighter-rouge">HepPlannerTest#testRuleApplyCount</code> complexity</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2523">CALCITE-2523</a>]
Guard <code class="language-plaintext highlighter-rouge">PartiallyOrderedSetTest#testPosetBitsLarge</code> with
<code class="language-plaintext highlighter-rouge">CalciteAssert.ENABLE_SLOW</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2521">CALCITE-2521</a>]
Guard <code class="language-plaintext highlighter-rouge">RelMetadataTest#testMetadataHandlerCacheLimit</code> with
<code class="language-plaintext highlighter-rouge">CalciteAssert.ENABLE_SLOW</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
Add <code class="language-plaintext highlighter-rouge">SqlValidatorDynamicTest</code> to <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlValidatorDynamicTest</code>, and
avoid reuse of <code class="language-plaintext highlighter-rouge">MockCatalogReaderDynamic</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2522">CALCITE-2522</a>]
Remove <code class="language-plaintext highlighter-rouge">e.printStackTrace()</code> from <code class="language-plaintext highlighter-rouge">CalciteAssert#returns</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2512">CALCITE-2512</a>]
Move <code class="language-plaintext highlighter-rouge">StreamTest#ROW_GENERATOR</code> to <code class="language-plaintext highlighter-rouge">Table.scan().iterator</code> to make it not
shared between threads (Sergey Nuyanzin)</li>
<li>Skip second Checkstyle execution during Travis CI build</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2519">CALCITE-2519</a>]
Silence ERROR logs from <code class="language-plaintext highlighter-rouge">CalciteException</code>, <code class="language-plaintext highlighter-rouge">SqlValidatorException</code> during
tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
Fix <code class="language-plaintext highlighter-rouge">ModelTest#testYamlFileDetection</code> when source folder has spaces</li>
<li>
<code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>]
<code class="language-plaintext highlighter-rouge">RexProgramTest</code>: replace <code class="language-plaintext highlighter-rouge">nullLiteral</code><code class="language-plaintext highlighter-rouge">nullInt</code>,
<code class="language-plaintext highlighter-rouge">unknownLiteral</code><code class="language-plaintext highlighter-rouge">nullBool</code> for brevity</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>]
<code class="language-plaintext highlighter-rouge">RexProgramTest</code>: move “rex building” methods to base class</li>
<li>
<code class="language-plaintext 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="language-plaintext 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>]
Use embedded Cassandra for tests</li>
</ul>
<h4 id="site-1-18-0">Web site and documentation</h4>
<ul>
<li>Add geospatial category to DOAP file</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2577">CALCITE-2577</a>]
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="language-plaintext 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>
<li>Site: Update Julian Hyde’s affiliation</li>
<li>Update Michael Mior’s affiliation</li>
<li>Site: Add instructions for updating PRs based on the discussion in the dev
list (Stamatis Zampetakis)</li>
<li>Site: Add committer Sergey Nuyanzin</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>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10;
Guava versions 19.0 to 23.0;
Druid version 0.11.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<p>This release comes four months after 1.16.0. It includes more than 90 resolved
issues, comprising a large number of new features as well as general improvements
and bug-fixes. Among others:</p>
<p>Implemented <a href="https://issues.apache.org/jira/browse/CALCITE-2280">Babel SQL parser</a>
that accepts all SQL dialects.
Allowed <a href="https://issues.apache.org/jira/browse/CALCITE-2261">JDK 8 language level</a> for core module.
Calcite has been upgraded to use <a href="https://issues.apache.org/jira/browse/CALCITE-2365">Avatica 1.12.0</a></p>
<h4 id="new-features-1-17-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-873">CALCITE-873</a>]
Add a planner rule, <code class="language-plaintext highlighter-rouge">SortRemoveConstantKeysRule</code>, that removes constant keys from Sort (Atri Sharma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2045">CALCITE-2045</a>]
<code class="language-plaintext highlighter-rouge">CREATE TYPE</code> (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2216">CALCITE-2216</a>]
Improve extensibility of <code class="language-plaintext 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="language-plaintext highlighter-rouge">NATURAL JOIN</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">CHAR</code> columns of different lengths can now (based on a conformance setting) yield a <code class="language-plaintext highlighter-rouge">VARCHAR</code> column (Hequn Cheng)</li>
</ul>
<h4 id="fixes-1-17-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-531">CALCITE-531</a>]
<code class="language-plaintext highlighter-rouge">LATERAL</code> combined with window function or table function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1167">CALCITE-1167</a>]
<code class="language-plaintext highlighter-rouge">OVERLAPS</code> should match even if operands are in (high, low) order</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1436">CALCITE-1436</a>]
Support <code class="language-plaintext highlighter-rouge">MIN</code>/<code class="language-plaintext highlighter-rouge">MAX</code> functions (Muhammad Gelbana)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1866">CALCITE-1866</a>]
JDBC adapter generates incorrect code when pushing <code class="language-plaintext highlighter-rouge">FLOOR</code> to MySQL (Kang Wang, Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1916">CALCITE-1916</a>]
Use Teradata’s TPC-DS generator and run tests against TPC-DS at small scale</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1949">CALCITE-1949</a>]
<code class="language-plaintext highlighter-rouge">CalciteStatement</code> should call <code class="language-plaintext highlighter-rouge">AvaticaStatement</code> close_(), to avoid memory leak (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2053">CALCITE-2053</a>]
Resolve Java user-defined functions that have <code class="language-plaintext highlighter-rouge">Double</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">UNNEST</code> (Chunhui Shi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2164">CALCITE-2164</a>]
Fix alerts raised by lgtm.com (Malcolm Taylor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2188">CALCITE-2188</a>]
JDBC adapter generates invalid SQL for <code class="language-plaintext highlighter-rouge">DATE</code>/<code class="language-plaintext highlighter-rouge">INTERVAL</code> arithmetic (Rahul Raj)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2201">CALCITE-2201</a>]
Pass <code class="language-plaintext highlighter-rouge">RelBuilder</code> into <code class="language-plaintext highlighter-rouge">RelDecorrelator</code> and <code class="language-plaintext highlighter-rouge">RelStructuredTypeFlattener</code> (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2205">CALCITE-2205</a>]
<code class="language-plaintext highlighter-rouge">JoinPushTransitivePredicatesRule</code> should not create <code class="language-plaintext highlighter-rouge">Filter</code> on top of equivalent <code class="language-plaintext highlighter-rouge">Filter</code> (Vitalii Diravka)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2206">CALCITE-2206</a>]
JDBC adapter incorrectly pushes windowed aggregates down to HSQLDB (Pavel Gubin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2220">CALCITE-2220</a>]
<code class="language-plaintext highlighter-rouge">SqlToRelConverter</code> generates incorrect ordinal while flattening a record-valued field (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2222">CALCITE-2222</a>]
Add Quarter timeunit as a valid unit to pushdown to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2225">CALCITE-2225</a>]
Upgrade Apache parent POM to version 19, and support OpenJDK 10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2226">CALCITE-2226</a>]
Druid adapter: Substring operator converter does not handle non-constant literals correctly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2229">CALCITE-2229</a>]
Allow sqlsh to be run from path, not just current directory</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2232">CALCITE-2232</a>]
Assertion error on <code class="language-plaintext highlighter-rouge">AggregatePullUpConstantsRule</code> while adjusting <code class="language-plaintext highlighter-rouge">Aggregate</code> indices</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2236">CALCITE-2236</a>]
Druid adapter: Avoid duplication of fields names during Druid query planing</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2237">CALCITE-2237</a>]
Upgrade Maven Surefire plugin to 2.21.0 (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2238">CALCITE-2238</a>]
Fix Pig and Spark adapter failures with JDK 10</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2240">CALCITE-2240</a>]
Extend rule to push predicates into <code class="language-plaintext highlighter-rouge">CASE</code> statement (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2242">CALCITE-2242</a>]
Using custom <code class="language-plaintext highlighter-rouge">RelBuilder</code> for <code class="language-plaintext highlighter-rouge">FilterRemoveIsNotDistinctFromRule</code> (Vitalii Diravka)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2247">CALCITE-2247</a>]
Simplify <code class="language-plaintext highlighter-rouge">AND</code> and <code class="language-plaintext highlighter-rouge">OR</code> conditions using predicates (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2253">CALCITE-2253</a>]
Fix matching predicate for <code class="language-plaintext highlighter-rouge">JdbcProjectRule</code> rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2255">CALCITE-2255</a>]
Add JDK 11 to Travis CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2259">CALCITE-2259</a>]
Allow Java 8 syntax</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2261">CALCITE-2261</a>]
Switch core module to JDK 8 (Enrico Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2262">CALCITE-2262</a>]
Druid adapter: Allow count(*) to be pushed when other aggregate functions are present</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2264">CALCITE-2264</a>]
In JDBC adapter, do not push down a call to a user-defined function (UDF) (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2265">CALCITE-2265</a>]
Allow comparison of ROW values (Dylan Adams)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2267">CALCITE-2267</a>]
Thread-safe generation of <code class="language-plaintext highlighter-rouge">AbstractRelNode.id</code> (Zhong Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2275">CALCITE-2275</a>]
Do not push down <code class="language-plaintext highlighter-rouge">NOT</code> condition in <code class="language-plaintext highlighter-rouge">JOIN</code> (Vitalii Diravka)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2276">CALCITE-2276</a>]
Allow explicit <code class="language-plaintext highlighter-rouge">ROW</code> value constructor in <code class="language-plaintext highlighter-rouge">SELECT</code> clause and elsewhere (Danny Chan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2277">CALCITE-2277</a>]
Skip <code class="language-plaintext highlighter-rouge">SemiJoin</code> operator in materialized view-based rewriting algorithm</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2278">CALCITE-2278</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> fails to split aggregate call if input contains an aggregate call and has distinct rows (Haisheng Yuan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2281">CALCITE-2281</a>]
Return type of the <code class="language-plaintext highlighter-rouge">TIMESTAMPADD</code> function has wrong precision (Sudheesh Katkam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2287">CALCITE-2287</a>]
<code class="language-plaintext highlighter-rouge">FlatList.equals()</code> throws <code class="language-plaintext highlighter-rouge">StackOverflowError</code> (Zhen Wang, Zhong Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2291">CALCITE-2291</a>]
Support Push Project past Correlate (Chunhui Shi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2293">CALCITE-2293</a>]
Upgrade forbidden-apis to 2.5 (for JDK 10)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2299">CALCITE-2299</a>]
<code class="language-plaintext highlighter-rouge">TIMESTAMPADD</code>(<code class="language-plaintext highlighter-rouge">SQL_TSI_FRAC_SECOND</code>) should be nanoseconds (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2303">CALCITE-2303</a>]
In <code class="language-plaintext highlighter-rouge">EXTRACT</code> function, support <code class="language-plaintext highlighter-rouge">MICROSECONDS</code>, <code class="language-plaintext highlighter-rouge">MILLISECONDS</code>, <code class="language-plaintext highlighter-rouge">EPOCH</code>, <code class="language-plaintext highlighter-rouge">ISODOW</code>, <code class="language-plaintext highlighter-rouge">ISOYEAR</code> and <code class="language-plaintext highlighter-rouge">DECADE</code> time units (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2305">CALCITE-2305</a>]
JDBC adapter generates invalid casts on PostgreSQL, because PostgreSQL does not have <code class="language-plaintext highlighter-rouge">TINYINT</code> and <code class="language-plaintext highlighter-rouge">DOUBLE</code> types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2306">CALCITE-2306</a>]
AssertionError in <code class="language-plaintext highlighter-rouge">RexLiteral.getValue3</code> with null literal of type <code class="language-plaintext highlighter-rouge">DECIMAL</code> (Godfrey He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2309">CALCITE-2309</a>]
Dialects: Hive dialect does not support charsets in constants</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2314">CALCITE-2314</a>]
Verify RexNode transformations by evaluating before and after expressions against sample values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2316">CALCITE-2316</a>]
Elasticsearch adapter should not convert queries to lower-case (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2318">CALCITE-2318</a>]
<code class="language-plaintext highlighter-rouge">NumberFormatException</code> while starting SQLLine</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2319">CALCITE-2319</a>]
Set correct dimension type for druid expressions with result type boolean (nsihantmonu51)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2320">CALCITE-2320</a>]
Filtering UDF when converting <code class="language-plaintext highlighter-rouge">Filter</code> to <code class="language-plaintext highlighter-rouge">JDBCFilter</code> (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2323">CALCITE-2323</a>]
Apply “<code class="language-plaintext highlighter-rouge">defaultNullCollation</code>” configuration parameter when translating <code class="language-plaintext highlighter-rouge">ORDER BY</code> inside <code class="language-plaintext highlighter-rouge">OVER</code> (John Fang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2324">CALCITE-2324</a>]
<code class="language-plaintext highlighter-rouge">EXTRACT</code> function: <code class="language-plaintext highlighter-rouge">HOUR</code>, <code class="language-plaintext highlighter-rouge">MINUTE</code> and <code class="language-plaintext highlighter-rouge">SECOND</code> parts of a <code class="language-plaintext highlighter-rouge">DATE</code> must be zero (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2329">CALCITE-2329</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">FLOOR(CEIL(x))</code> to <code class="language-plaintext 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>]
Extend simplification of expressions with <code class="language-plaintext highlighter-rouge">CEIL</code> function over date types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2341">CALCITE-2341</a>]
Fix <code class="language-plaintext highlighter-rouge">ImmutableBitSetTest</code> for jdk11</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2342">CALCITE-2342</a>]
Fix improper use of assert</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2345">CALCITE-2345</a>]
Running Unit tests with Fongo and integration tests with real mongo instance (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2347">CALCITE-2347</a>]
Running ElasticSearch in embedded mode for unit tests of ES adapter (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2353">CALCITE-2353</a>]
Allow user to override <code class="language-plaintext highlighter-rouge">SqlSetOption</code> (Andrew Pilloud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2355">CALCITE-2355</a>]
Implement multiset operations (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2357">CALCITE-2357</a>]
Freemarker dependency override issue in fmpp maven plugin (yanghua)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2358">CALCITE-2358</a>]
Use null literal instead of empty string (b-slim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2359">CALCITE-2359</a>]
Inconsistent results casting intervals to integers (James Duong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2364">CALCITE-2364</a>]
Fix timezone issue (in test) between Mongo DB and local JVM (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2365">CALCITE-2365</a>]
Upgrade avatica to 1.12</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2366">CALCITE-2366</a>]
Add support for <code class="language-plaintext highlighter-rouge">ANY_VALUE</code> aggregate function (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2368">CALCITE-2368</a>]
Fix <code class="language-plaintext highlighter-rouge">misc.iq</code> and <code class="language-plaintext highlighter-rouge">scalar.iq</code> quidem unit tests failures on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2369">CALCITE-2369</a>]
Fix <code class="language-plaintext highlighter-rouge">OsAdapterTest</code> failure on windows (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2370">CALCITE-2370</a>]
Fix failing mongo IT tests when explicit order was not specified (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2376">CALCITE-2376</a>]
Unify ES2 and ES5 adapters. Migrate to low-level ES rest client as main transport (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2379">CALCITE-2379</a>]
CVSS dependency-check-maven fails for calcite-spark and calcite-ubenchmark modules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2380">CALCITE-2380</a>]
Javadoc generation failure in Elasticsearch2 adapter (Andrei Sereda)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2381">CALCITE-2381</a>]
Add information for authenticating against maven repo, GPG keys and version numbers to HOWTO</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2382">CALCITE-2382</a>]
Sub-query join lateral table function (pengzhiwei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2383">CALCITE-2383</a>]
<code class="language-plaintext highlighter-rouge">NTH_VALUE</code> window function (Sergey Nuyanzin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2384">CALCITE-2384</a>]
Performance issue in <code class="language-plaintext highlighter-rouge">getPulledUpPredicates</code> (Zoltan Haindrich)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2387">CALCITE-2387</a>]
Fix for <code class="language-plaintext highlighter-rouge">date</code>/<code class="language-plaintext highlighter-rouge">timestamp</code> cast expressions in Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2388">CALCITE-2388</a>]
Upgrade from <code class="language-plaintext highlighter-rouge">commons-dbcp</code> to <code class="language-plaintext 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="language-plaintext highlighter-rouge">UNNEST</code> or <code class="language-plaintext highlighter-rouge">LATERAL</code> fails with <code class="language-plaintext 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="language-plaintext highlighter-rouge">NATURAL JOIN</code> and <code class="language-plaintext 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>]
Allow <code class="language-plaintext highlighter-rouge">NULL</code> intervals in <code class="language-plaintext highlighter-rouge">TIMESTAMPADD</code> and <code class="language-plaintext highlighter-rouge">DATETIME_PLUS</code> functions (James Duong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2398">CALCITE-2398</a>]
<code class="language-plaintext highlighter-rouge">SqlSelect</code> must call into <code class="language-plaintext highlighter-rouge">SqlDialect</code> for unparse (James Duong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2403">CALCITE-2403</a>]
Upgrade quidem to 0.9</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2409">CALCITE-2409</a>]
<code class="language-plaintext highlighter-rouge">SparkAdapterTest</code> fails on Windows when ‘/tmp’ directory does not exist
(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>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 8, 9, 10;
Guava versions 19.0 to 23.0;
Druid version 0.11.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<p>This release comes three months after 1.15.0. It includes more than 80 resolved
issues, comprising a large number of new features as well as general improvements
and bug-fixes to Calcite core. Among others:</p>
<ul>
<li>Calcite has been upgraded to use
<a href="https://issues.apache.org/jira/browse/CALCITE-2182">Avatica 1.11.0</a>,
which was recently released.</li>
<li>Moreover, a new adapter to
<a href="https://issues.apache.org/jira/browse/CALCITE-2059">read data from Apache Geode</a>
was added in this release. In addition, more progress has been made for the existing adapters,
e.g., the Druid adapter can generate
<a href="https://issues.apache.org/jira/browse/CALCITE-2077"><code class="language-plaintext highlighter-rouge">SCAN</code> queries rather than <code class="language-plaintext highlighter-rouge">SELECT</code> queries</a>
for more efficient execution and it can push
<a href="https://issues.apache.org/jira/browse/CALCITE-2170">more work to Druid using its new expressions capabilities</a>,
and the JDBC adapter now <a href="https://issues.apache.org/jira/browse/CALCITE-2128">supports the SQL dialect used by Jethro Data</a>.</li>
<li>Finally, this release
<a href="https://issues.apache.org/jira/browse/CALCITE-2027">drops support for JDK 1.7</a> and
support for <a href="https://issues.apache.org/jira/browse/CALCITE-2191">Guava versions earlier than 19</a>.</li>
</ul>
<h4 id="new-features-1-16-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1265">CALCITE-1265</a>]
In JDBC adapter, push <code class="language-plaintext highlighter-rouge">OFFSET</code> and <code class="language-plaintext highlighter-rouge">FETCH</code> to data source</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2059">CALCITE-2059</a>]
Apache Geode adapter (Christian Tzolov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2077">CALCITE-2077</a>]
Druid adapter: Use <code class="language-plaintext highlighter-rouge">SCAN</code> query rather than <code class="language-plaintext highlighter-rouge">SELECT</code> query (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2128">CALCITE-2128</a>]
In JDBC adapter, add SQL dialect for Jethro Data (Jonathan Doron)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2170">CALCITE-2170</a>]
Use Druid Expressions capabilities to improve the amount of work that can be pushed to Druid</li>
</ul>
<h4 id="fixes-1-16-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1054">CALCITE-1054</a>]
NPE caused by wrong code generation for Timestamp fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1188">CALCITE-1188</a>]
NullPointerException in <code class="language-plaintext highlighter-rouge">EXTRACT</code> with <code class="language-plaintext highlighter-rouge">WHERE ... IN</code> clause if field has null value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1427">CALCITE-1427</a>]
Code generation incorrect (does not compile) for DATE, TIME and TIMESTAMP fields</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1658">CALCITE-1658</a>]
DateRangeRules incorrectly rewrites <code class="language-plaintext highlighter-rouge">EXTRACT</code> calls (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1697">CALCITE-1697</a>]
Update Mongo driver version to 3.5.0 (Vladimir Dolzhenko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2002">CALCITE-2002</a>]
<code class="language-plaintext highlighter-rouge">DISTINCT</code> applied to <code class="language-plaintext highlighter-rouge">VALUES</code> returns wrong result</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2009">CALCITE-2009</a>]
Possible bug in interpreting <code class="language-plaintext highlighter-rouge">( IN ) OR ( IN )</code> logic</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2020">CALCITE-2020</a>]
Upgrade org.incava java-diff</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2027">CALCITE-2027</a>]
Drop support for Java 7 (JDK 1.7)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2034">CALCITE-2034</a>]
<code class="language-plaintext highlighter-rouge">FileReaderTest</code> fails with path containing spaces</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2066">CALCITE-2066</a>]
<code class="language-plaintext highlighter-rouge">RelOptUtil.splitJoinCondition()</code> could not split condition with case after applying <code class="language-plaintext highlighter-rouge">FilterReduceExpressionsRule</code> (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2071">CALCITE-2071</a>]
Query with <code class="language-plaintext highlighter-rouge">IN</code> and <code class="language-plaintext highlighter-rouge">OR</code> in <code class="language-plaintext highlighter-rouge">WHERE</code> clause returns wrong result (Vineet Garg)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2072">CALCITE-2072</a>]
Enable spatial functions by adding ‘fun=spatial’ to JDBC connect string</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2075">CALCITE-2075</a>]
SparkAdapterTest UT fails</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2076">CALCITE-2076</a>]
Upgrade to Druid 0.11.0 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2080">CALCITE-2080</a>]
Query with <code class="language-plaintext highlighter-rouge">NOT IN</code> operator and literal throws <code class="language-plaintext highlighter-rouge">AssertionError</code>: ‘Cast for just nullability not allowed’ (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2081">CALCITE-2081</a>]
Query with windowed aggregates under both sides of a <code class="language-plaintext highlighter-rouge">JOIN</code> throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2084">CALCITE-2084</a>]
<code class="language-plaintext highlighter-rouge">SqlValidatorImpl.findTable()</code> method incorrectly handles table schema with few schema levels (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2088">CALCITE-2088</a>]
Add more complex end-to-end tests in “plus” module, using Chinook data set (Piotr Bojko)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2089">CALCITE-2089</a>]
Druid adapter: Push filter on <code class="language-plaintext highlighter-rouge">floor(time)</code> to Druid (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2090">CALCITE-2090</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder</code> into <code class="language-plaintext highlighter-rouge">SqlToRelConverter</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2093">CALCITE-2093</a>]
<code class="language-plaintext 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>]
Druid adapter: <code class="language-plaintext highlighter-rouge">Count(*)</code> returns null instead of 0 when condition filters all rows</li>
<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="language-plaintext 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>]
Push filters to Druid Query Scan when we have <code class="language-plaintext highlighter-rouge">OR</code> of <code class="language-plaintext highlighter-rouge">AND</code> clauses</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2099">CALCITE-2099</a>]
Code generated for <code class="language-plaintext highlighter-rouge">GROUP BY</code> inside <code class="language-plaintext highlighter-rouge">UNION</code> does not compile (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2101">CALCITE-2101</a>]
Druid adapter: Push count(column) using Druid filtered aggregate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2102">CALCITE-2102</a>]
Ignore duplicate <code class="language-plaintext highlighter-rouge">ORDER BY</code> keys, and ensure RelCollation contains no duplicates (John Fang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2104">CALCITE-2104</a>]
Add separate rules for <code class="language-plaintext highlighter-rouge">AggregateUnionAggregateRule</code> to reduce potential matching cost in <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> (lincoln-lil)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2105">CALCITE-2105</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> fails when process aggregate without group keys (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2107">CALCITE-2107</a>]
Timezone not passed as part of granularity when passing <code class="language-plaintext highlighter-rouge">TimeExtractionFunction</code> to Druid (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2108">CALCITE-2108</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> fails when process aggregateCall above <code class="language-plaintext highlighter-rouge">SqlSumEmptyIsZeroAggFunction</code> without groupKeys (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2110">CALCITE-2110</a>]
<code class="language-plaintext highlighter-rouge">ArrayIndexOutOfBoundsException</code> in RexSimplify when using <code class="language-plaintext 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="language-plaintext 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>]
RelToSqlConverter should only generate “*” if field names match (Sam Waggoner)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2122">CALCITE-2122</a>]
In DateRangeRules, make either <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> or <code class="language-plaintext highlighter-rouge">DATE</code> literal, according to target type (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2124">CALCITE-2124</a>]
<code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> should make <code class="language-plaintext highlighter-rouge">SUM</code> nullable if there is no <code class="language-plaintext highlighter-rouge">GROUP BY</code> (Godfrey He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2127">CALCITE-2127</a>]
In Interpreter, allow a node to have more than one consumer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2133">CALCITE-2133</a>]
Allow SqlGroupedWindowFunction to specify returnTypeInference in its constructor (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2135">CALCITE-2135</a>]
If there is an aggregate function inside an <code class="language-plaintext highlighter-rouge">OVER</code> clause, validator should treat query as an aggregate query (Volodymyr Tkach)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2137">CALCITE-2137</a>]
Materialized view rewriting not being triggered for some join queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2139">CALCITE-2139</a>]
Upgrade checkstyle</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2143">CALCITE-2143</a>]
RelToSqlConverter produces incorrect SQL with aggregation (Sam Waggoner)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2147">CALCITE-2147</a>]
GroupingSets involving rollup resulting into an incorrect plan (Ravindar Munjam)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2154">CALCITE-2154</a>]
Upgrade jackson to 2.9.4</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2156">CALCITE-2156</a>]
In DateRangeRules, compute <code class="language-plaintext highlighter-rouge">FLOOR</code> and <code class="language-plaintext highlighter-rouge">CEIL</code> of <code class="language-plaintext highlighter-rouge">TIMESTAMP WITH LOCAL TIMEZONE</code> in local time zone (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2162">CALCITE-2162</a>]
Exception when accessing sub-field of sub-field of composite Array element (Shuyi Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2178">CALCITE-2178</a>]
Extend expression simplifier to work on datetime <code class="language-plaintext highlighter-rouge">CEIL</code>/<code class="language-plaintext highlighter-rouge">FLOOR</code> functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2179">CALCITE-2179</a>]
General improvements for materialized view rewriting rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2180">CALCITE-2180</a>]
Invalid code generated for negative of byte and short values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2183">CALCITE-2183</a>]
Implement <code class="language-plaintext highlighter-rouge">RelSubset.copy</code> method (Alessandro Solimando)</li>
<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="language-plaintext 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>]
Extend SubstitutionVisitor.splitFilter to cover different order of operands</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2191">CALCITE-2191</a>]
Drop support for Guava versions earlier than 19</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2192">CALCITE-2192</a>]
RelBuilder wrongly skips creating an Aggregate that prunes columns, if input is unique</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2195">CALCITE-2195</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> fails to aggregate over unique column (Zhong Yu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2196">CALCITE-2196</a>]
Tweak janino code generation to allow debugging (jingzhang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2197">CALCITE-2197</a>]
Test failures on Windows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2200">CALCITE-2200</a>]
Infinite loop for JoinPushTransitivePredicatesRule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2207">CALCITE-2207</a>]
Enforce Java version via maven-enforcer-plugin (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2213">CALCITE-2213</a>]
Geode integration tests are failing</li>
</ul>
<h4 id="site-1-16-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2024">CALCITE-2024</a>]
Submit a journal paper on Calcite to VLDB Journal or ACM SIGMOD Record (Edmon Begoli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2203">CALCITE-2203</a>]
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>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 7, 8, 9, 10;
Guava versions 14.0 to 23.0;
Druid version 0.10.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<p>This release comes three months after 1.14.0. It includes than 44 resolved
issues, mostly modest improvements and bug-fixes, but here are some
features of note:</p>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-707">CALCITE-707</a>]
adds <em>DDL commands</em> to Calcite for the first time, including <em>CREATE and DROP
commands for schemas, tables, foreign tables, views, and materialized views</em>.
We know that DDL syntax is a matter of taste, so we added the extensions to a
<em>new “server” module</em>, leaving the “core” parser unchanged;</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2061">CALCITE-2061</a>]
allows <em>dynamic parameters</em> in the <code class="language-plaintext highlighter-rouge">LIMIT</code> and <code class="language-plaintext highlighter-rouge">OFFSET</code> and clauses;</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1913">CALCITE-1913</a>]
refactors the JDBC adapter to make it easier to <em>plug in a new SQL dialect</em>;</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1616">CALCITE-1616</a>]
adds a <em>data profiler</em>, an algorithm that efficiently analyzes large data sets
with many columns, estimating the number of distinct values in columns and
groups of columns, and finding functional dependencies. The improved
statistics are used by the algorithm that designs summary tables for a
lattice.</li>
</ul>
<p>Calcite now supports JDK 10 and Guava 23.0. (It continues to run on
JDK 7, 8 and 9, and on versions of Guava as early as 14.0.1. The default
version of Guava remains 19.0, the latest version compatible with JDK 7
and the Cassandra adapter’s dependencies.)</p>
<p>This is the <a href="https://issues.apache.org/jira/browse/CALCITE-2027">last
release that will support JDK 1.7</a>.</p>
<h4 id="new-features-1-15-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1616">CALCITE-1616</a>]
Data profiler</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2061">CALCITE-2061</a>]
Dynamic parameters in <code class="language-plaintext highlighter-rouge">OFFSET</code>, <code class="language-plaintext highlighter-rouge">FETCH</code> and <code class="language-plaintext highlighter-rouge">LIMIT</code> clauses (Enrico Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-707">CALCITE-707</a>]
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="language-plaintext highlighter-rouge">ReduceExpressionRule</code> simplifies a nullable expression, allow the result
to change type to <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">APPROX_COUNT_DISTINCT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1990">CALCITE-1990</a>]
Make <code class="language-plaintext highlighter-rouge">RelDistribution</code> extend <code class="language-plaintext highlighter-rouge">RelMultipleTrait</code> (LeoWangLZ)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1867">CALCITE-1867</a>]
Allow user-defined grouped window functions (Timo Walther)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2031">CALCITE-2031</a>]
<code class="language-plaintext highlighter-rouge">ST_X</code> and <code class="language-plaintext highlighter-rouge">ST_Y</code> GIS functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1913">CALCITE-1913</a>]
Pluggable SQL dialects for JDBC adapter: Replace usages of <code class="language-plaintext highlighter-rouge">DatabaseProduct</code>
with dialect methods, and introduce a configurable <code class="language-plaintext highlighter-rouge">SqlDialectFactory</code>
(Christian Beikov)</li>
</ul>
<h4 id="fixes-1-15-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2078">CALCITE-2078</a>]
Aggregate functions in <code class="language-plaintext highlighter-rouge">OVER</code> clause (Liao Xintao)</li>
<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="language-plaintext highlighter-rouge">JaninoRelMetadataProvider</code> loading cache might cause <code class="language-plaintext highlighter-rouge">OutOfMemoryError</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2069">CALCITE-2069</a>]
<code class="language-plaintext highlighter-rouge">RexSimplify.removeNullabilityCast()</code> always removes cast for operand with
<code class="language-plaintext highlighter-rouge">ANY</code> type (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2074">CALCITE-2074</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">UPDATE</code> with dynamic parameter in <code class="language-plaintext highlighter-rouge">SET</code> clause (Enrico
Olivelli)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2055">CALCITE-2055</a>]
Check year, month, day, hour, minute and second ranges for date and time
literals (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2051">CALCITE-2051</a>]
Rules using <code class="language-plaintext highlighter-rouge">Aggregate</code> might check for simple grouping sets incorrectly</li>
<li>Add parameter to <code class="language-plaintext 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="language-plaintext highlighter-rouge">AssertionError</code> when pushing project to <code class="language-plaintext 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>]
Use custom <code class="language-plaintext highlighter-rouge">RelBuilder</code> implementation in some rules (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2044">CALCITE-2044</a>]
Tweak cost of <code class="language-plaintext highlighter-rouge">BindableTableScan</code> to make sure <code class="language-plaintext highlighter-rouge">Project</code> is pushed through
<code class="language-plaintext highlighter-rouge">Aggregate</code> (Luis Fernando Kauer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2012">CALCITE-2012</a>]
Replace <code class="language-plaintext highlighter-rouge">LocalInterval</code> by <code class="language-plaintext highlighter-rouge">Interval</code> in Druid adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1984">CALCITE-1984</a>]
Incorrect rewriting with materialized views using <code class="language-plaintext highlighter-rouge">DISTINCT</code> in aggregate
functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1876">CALCITE-1876</a>]
In CSV example, tweak cost to ensure that <code class="language-plaintext highlighter-rouge">Project</code> is pushed through
<code class="language-plaintext highlighter-rouge">Aggregate</code> (Luis Fernando Kauer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2037">CALCITE-2037</a>]
Modify parser template to allow sub-projects to override <code class="language-plaintext highlighter-rouge">SqlStmt</code> syntax
(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="language-plaintext highlighter-rouge">COUNT(druid_time_column)</code> as if it
were <code class="language-plaintext highlighter-rouge">COUNT(*)</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2034">CALCITE-2034</a>]
<code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">SubQueryRemoveRule</code> should create <code class="language-plaintext highlighter-rouge">Join</code>, not <code class="language-plaintext highlighter-rouge">Correlate</code>, for un-correlated
sub-queries (Liao Xintao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2029">CALCITE-2029</a>]
Query with <code class="language-plaintext highlighter-rouge">IS DISTINCT FROM</code> condition in <code class="language-plaintext highlighter-rouge">WHERE</code> or <code class="language-plaintext highlighter-rouge">JOIN</code> clause fails with
<code class="language-plaintext highlighter-rouge">AssertionError</code>, “Cast for just nullability not allowed” (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1998">CALCITE-1998</a>]
Hive <code class="language-plaintext highlighter-rouge">ORDER BY</code> null values (Abbas Gadhia)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2014">CALCITE-2014</a>]
Look for <code class="language-plaintext 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="language-plaintext highlighter-rouge">NullPointerException</code> on filtered aggregators using <code class="language-plaintext 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>]
Fix braces in <code class="language-plaintext highlighter-rouge">TRIM</code> signature</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2007">CALCITE-2007</a>]
Fix <code class="language-plaintext highlighter-rouge">RexSimplify</code> behavior when literals come first</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2006">CALCITE-2006</a>]
Push <code class="language-plaintext highlighter-rouge">IS NULL</code> and <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> predicates to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1996">CALCITE-1996</a>]
In JDBC adapter, generate correct <code class="language-plaintext highlighter-rouge">VALUES</code> syntax</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2001">CALCITE-2001</a>]
JDBC driver should return “SYSTEM TABLE” rather than “SYSTEM_TABLE”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1995">CALCITE-1995</a>]
Remove terms from <code class="language-plaintext highlighter-rouge">Filter</code> if predicates indicate they are always true or
false</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1983">CALCITE-1983</a>]
Push <code class="language-plaintext highlighter-rouge">=</code>and <code class="language-plaintext highlighter-rouge">&lt;&gt;</code> operations with numeric cast on dimensions to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1960">CALCITE-1960</a>]
<code class="language-plaintext highlighter-rouge">RelMdPredicates.getPredicates</code> is slow if there are many equivalent columns
(Rheet Wong)</li>
<li>Make Travis CI builds work (Christian Beikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1987">CALCITE-1987</a>]
Implement <code class="language-plaintext highlighter-rouge">EXTRACT</code> for JDBC (Pavel Gubin)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1988">CALCITE-1988</a>]
Various code quality issues</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1986">CALCITE-1986</a>]
Add <code class="language-plaintext highlighter-rouge">RelBuilder.match</code> and methods for building patterns (Dian Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1980">CALCITE-1980</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.aggregate</code> should rename underlying fields if <code class="language-plaintext highlighter-rouge">groupKey</code> contains
an alias</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1946">CALCITE-1946</a>]
JDBC adapter should generate sub-<code class="language-plaintext highlighter-rouge">SELECT</code> if dialect does not support nested
aggregate functions (Pawel Ruchaj)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1976">CALCITE-1976</a>]
linq4j: support List and Map literals</li>
</ul>
<h4 id="site-1-15-0">Web site and documentation</h4>
<ul>
<li>Update PMC Chair</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>
<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>]
Document the interfaces that you can use to extend Calcite</li>
<li>Javadoc fixes (Alexey Roytman)</li>
<li>Add two talks, and committer Christian Beikov</li>
<li>Fix URL in <code class="language-plaintext highlighter-rouge">FileSchemaFactory</code> javadoc (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1989">CALCITE-1989</a>]
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>
<p>This release brings some big new features.
The <code class="language-plaintext highlighter-rouge">GEOMETRY</code> data type was added along with 35 associated functions as the start of support for Simple Feature Access.
There are also two new adapters.
Firstly, the Elasticsearch 5 adapter which now exists in parallel with the previous Elasticsearch 2 adapter.
Additionally there is now an <a href="/docs/os_adapter.html">OS adapter</a> which exposes operating system metrics as relational tables.
<code class="language-plaintext highlighter-rouge">ThetaSketch</code> and <code class="language-plaintext highlighter-rouge">HyperUnique</code> support has also been added to the Druid adapter.</p>
<p>Several minor improvements are added as well including improved <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> support, quantified comparison predicates, and <code class="language-plaintext highlighter-rouge">ARRAY</code> and <code class="language-plaintext highlighter-rouge">MULTISET</code> support for UDFs.
A full list of new features is given below.</p>
<p>There are also a few breaking changes.
The return type of <code class="language-plaintext highlighter-rouge">RANK</code> and other aggregate functions has been changed.
There also changes to <code class="language-plaintext highlighter-rouge">Aggregate</code> in order to improve compatibility with Apache Hive.
Finally, the <code class="language-plaintext highlighter-rouge">Schema#snapshot()</code> interface has been upgraded to allow for more flexible versioning.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
Guava versions 14.0 to 21.0;
Druid version 0.11.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-14-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1968">CALCITE-1968</a>] OpenGIS Simple Feature Access SQL 1.2.1: add <code class="language-plaintext highlighter-rouge">GEOMETRY</code> data type and first 35 functions
Add Spatial page, document GIS functions in SQL reference (indicating
which ones are implemented), and add “countries” data set for testing.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1967">CALCITE-1967</a>] Elasticsearch 5 adapter (Christian Beikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1911">CALCITE-1911</a>] In <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code>, support <code class="language-plaintext highlighter-rouge">WITHIN</code> sub-clause (Dian Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1897">CALCITE-1897</a>] Add ‘%’ operator as an alternative to ‘MOD’ (sunjincheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1787">CALCITE-1787</a>] Add <code class="language-plaintext highlighter-rouge">ThetaSketch</code> and <code class="language-plaintext highlighter-rouge">HyperUnique</code> support to Calcite via rolled up columns (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1896">CALCITE-1896</a>] OS adapter and <code class="language-plaintext highlighter-rouge">sqlsh</code>
<ul>
<li>Vmstat table function for sqlsh</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1864">CALCITE-1864</a>] Allow <code class="language-plaintext highlighter-rouge">NULL</code> literal as argument</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1834">CALCITE-1834</a>] Allow user-defined functions to have arguments that are <code class="language-plaintext highlighter-rouge">ARRAY</code> or <code class="language-plaintext highlighter-rouge">MULTISET</code> (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1886">CALCITE-1886</a>] Support <code class="language-plaintext highlighter-rouge">"LIMIT [offset,] row_count"</code>, per MySQL (Kaiwang Chen)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1845">CALCITE-1845</a>] Quantified comparison predicates (SOME, ANY, ALL)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1709">CALCITE-1709</a>] Support mixing table columns with extended columns in DML (Rajeshbabu Chintaguntla)</li>
</ul>
<h4 id="fixes-1-14-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1931">CALCITE-1931</a>]
Change the return type of <code class="language-plaintext highlighter-rouge">RANK</code> and other aggregate functions.
Various aggregate functions that used to return <code class="language-plaintext highlighter-rouge">INTEGER</code> now return other
types: <code class="language-plaintext highlighter-rouge">RANK</code>, <code class="language-plaintext highlighter-rouge">DENSE_RANK</code>, and <code class="language-plaintext highlighter-rouge">NTILE</code> now return <code class="language-plaintext highlighter-rouge">BIGINT</code>;
<code class="language-plaintext highlighter-rouge">CUME_DIST</code> and <code class="language-plaintext highlighter-rouge">PERCENT_RANK</code> now return <code class="language-plaintext highlighter-rouge">DOUBLE</code>.
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1947">CALCITE-1947</a>] Add <code class="language-plaintext highlighter-rouge">TIME</code>/<code class="language-plaintext highlighter-rouge">TIMESTAMP</code> with local time zone types to optimizer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1972">CALCITE-1972</a>] Create <code class="language-plaintext highlighter-rouge">.sha512</code> and <code class="language-plaintext highlighter-rouge">.md5</code> digests for release artifacts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1941">CALCITE-1941</a>] Refine interface <code class="language-plaintext highlighter-rouge">Schema#snapshot()</code>
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1069">CALCITE-1069</a>] In <code class="language-plaintext highlighter-rouge">Aggregate</code>, deprecate indicators, and allow <code class="language-plaintext highlighter-rouge">GROUPING</code> to be used as an aggregate function
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1969">CALCITE-1969</a>] Annotate user-defined functions as strict and semi-strict</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1945">CALCITE-1945</a>] Make return types of <code class="language-plaintext highlighter-rouge">AVG</code>, <code class="language-plaintext highlighter-rouge">VARIANCE</code>, <code class="language-plaintext highlighter-rouge">STDDEV</code> and <code class="language-plaintext highlighter-rouge">COVAR</code> customizable via RelDataTypeSystem</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1966">CALCITE-1966</a>] Allow normal views to act as materialization table (Christian Beikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1953">CALCITE-1953</a>] Rewrite <code class="language-plaintext highlighter-rouge">"NOT (x IS FALSE)" to "x IS NOT FALSE"; "x IS TRUE"</code> would be wrong</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1943">CALCITE-1943</a>] Add back <code class="language-plaintext highlighter-rouge">NavigationExpander</code> and <code class="language-plaintext highlighter-rouge">NavigationReplacer</code> in <code class="language-plaintext highlighter-rouge">SqlValidatorImpl</code> (Dian Fu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1963">CALCITE-1963</a>] Upgrade checkstyle, and fix code to comply</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1944">CALCITE-1944</a>] Window function applied to sub-query that returns dynamic star gets wrong plan (Volodymyr Vysotskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1954">CALCITE-1954</a>] Column from outer join should be null, whether or not it is aliased</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1959">CALCITE-1959</a>] Reduce the amount of metadata and <code class="language-plaintext highlighter-rouge">tableName</code> calls in Druid (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1930">CALCITE-1930</a>] Fix <code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> when there are multiple <code class="language-plaintext highlighter-rouge">AggregateCalls</code> referring to the same input</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1936">CALCITE-1936</a>] Allow <code class="language-plaintext highlighter-rouge">ROUND()</code> and <code class="language-plaintext highlighter-rouge">TRUNCATE()</code> to take one operand, defaulting scale to 0</li>
<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="language-plaintext highlighter-rouge">Project.getPermutation()</code> should return null if not a permutation (e.g. repeated <code class="language-plaintext highlighter-rouge">InputRef</code>)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1925">CALCITE-1925</a>] In <code class="language-plaintext 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="language-plaintext highlighter-rouge">RexSubQuery</code> in <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1909">CALCITE-1909</a>] Output <code class="language-plaintext highlighter-rouge">rowType</code> of Match should include <code class="language-plaintext highlighter-rouge">PARTITION BY</code> and <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">NullPointerException</code> when target in <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1893">CALCITE-1893</a>] Add MYSQL_5 conformance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1883">CALCITE-1883</a>] <code class="language-plaintext highlighter-rouge">HepPlanner</code> should force garbage collect whenever a root registered (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1889">CALCITE-1889</a>] Accept compound identifiers in <code class="language-plaintext highlighter-rouge">SqlValidatorUtil.checkIdentifierListForDuplicates()</code> (Rajeshbabu Chintaguntla)</li>
<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="language-plaintext highlighter-rouge">LAST</code> within <code class="language-plaintext highlighter-rouge">PREV</code> is not parsed correctly for <code class="language-plaintext 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="language-plaintext highlighter-rouge">FLOOR</code> operator when in a <code class="language-plaintext highlighter-rouge">GROUP BY</code> (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1842">CALCITE-1842</a>] <code class="language-plaintext highlighter-rouge">Sort.computeSelfCost()</code><code class="language-plaintext highlighter-rouge"> calls </code>makeCost()`` with arguments in wrong order (Junxian Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1874">CALCITE-1874</a>] In Frameworks, make <code class="language-plaintext highlighter-rouge">SqlToRelConverter</code> configurable</li>
<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="language-plaintext highlighter-rouge">NullPointerException</code> in <code class="language-plaintext 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="language-plaintext highlighter-rouge">VolcanoPlanner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1818">CALCITE-1818</a>] Handle <code class="language-plaintext highlighter-rouge">SqlKind.DYNAMIC</code> (parameters) in <code class="language-plaintext 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="language-plaintext highlighter-rouge">StructKind.PEEK_FIELDS_NO_EXPAND</code>, similar to <code class="language-plaintext highlighter-rouge">PEEK_FIELDS</code> but is not expanded in <code class="language-plaintext highlighter-rouge">"SELECT *"</code> (Shuyi Chen)</li>
</ul>
<h4 id="site-1-14-0">Web site and documentation</h4>
<ul>
<li>Add committer Chris Baynes</li>
<li>Add DataEngConf talk</li>
<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>
<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>
<p>First, Calcite has been upgraded to use
<a href="https://issues.apache.org/jira/browse/CALCITE-1807">Avatica 1.10.0</a>,
which was recently released.</p>
<p>Moreover, Calcite core includes improvements which aim at making it more powerful, stable and robust.
In addition to numerous bux-fixes, we have implemented a
<a href="https://issues.apache.org/jira/browse/CALCITE-1731">new materialized view rewriting algorithm</a>
and <a href="https://issues.apache.org/jira/browse/CALCITE-1682">new metadata providers</a> which
should prove useful for data processing systems relying on Calcite.</p>
<p>In this release, we have also completed the work to
<a href="https://issues.apache.org/jira/browse/CALCITE-1570">support the <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> clause</a>
used in complex-event processing (CEP).</p>
<p>In addition, more progress has been made for the different adapters.
For instance, the Druid adapter now relies on
<a href="https://issues.apache.org/jira/browse/CALCITE-1771">Druid 0.10.0</a> and
it can generate more efficient plans where most of the computation can be pushed to Druid,
e.g., <a href="https://issues.apache.org/jira/browse/CALCITE-1707">using extraction functions</a>.</p>
<p>There is one minor but potentially breaking API change in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1788">CALCITE-1788</a>]
(Simplify handling of position in the parser), requiring changes in the parameter
lists of parser extension methods.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
Guava versions 14.0 to 21.0;
Druid version 0.10.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-13-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1570">CALCITE-1570</a>]
Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">match_number</code> syntax support for <code class="language-plaintext 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="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1645">CALCITE-1645</a>]
Row per match syntax support for <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1644">CALCITE-1644</a>]
Subset clause syntax support for <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1643">CALCITE-1643</a>]
<code class="language-plaintext highlighter-rouge">AFTER MATCH</code> sub-clause of <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> clause (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1642">CALCITE-1642</a>]
Support <code class="language-plaintext highlighter-rouge">MEASURES</code> clause in <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
</ul>
</li>
<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="language-plaintext highlighter-rouge">TIME</code>/<code class="language-plaintext highlighter-rouge">TIMESTAMP</code>/<code class="language-plaintext highlighter-rouge">DATE</code> datatype handling to <code class="language-plaintext highlighter-rouge">RexImplicationChecker</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1613">CALCITE-1613</a>]
Implement <code class="language-plaintext highlighter-rouge">EXTRACT</code> for time unit <code class="language-plaintext highlighter-rouge">DOW</code>, <code class="language-plaintext highlighter-rouge">DOY</code>; and fix <code class="language-plaintext 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>]
Add post-aggregation step for Union in materialized view rewriting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1795">CALCITE-1795</a>]
Extend materialized view rewriting to produce rewritings using <code class="language-plaintext highlighter-rouge">Union</code> operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1797">CALCITE-1797</a>]
Support view partial rewriting in aggregate materialized view rewriting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1791">CALCITE-1791</a>]
Support view partial rewriting in join materialized view rewriting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1731">CALCITE-1731</a>]
Rewriting of queries using materialized views with joins and aggregates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1780">CALCITE-1780</a>]
Add <code class="language-plaintext highlighter-rouge">required Order</code> and <code class="language-plaintext highlighter-rouge">requiresOver</code> parameters to the constructor of <code class="language-plaintext highlighter-rouge">SqlUserDefinedAggregate Function</code> (SunJincheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1306">CALCITE-1306</a>]
Allow <code class="language-plaintext highlighter-rouge">GROUP BY</code> and <code class="language-plaintext highlighter-rouge">HAVING</code> to reference <code class="language-plaintext 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="language-plaintext highlighter-rouge">CUBE</code> and <code class="language-plaintext 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>]
Add a hook to allow <code class="language-plaintext highlighter-rouge">RelNode</code> expressions to be executed by JDBC driver</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1766">CALCITE-1766</a>]
Support system functions having no args with parenthesis too (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1760">CALCITE-1760</a>]
Implement utility method to identify lossless casts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1682">CALCITE-1682</a>]
New metadata providers for expression column origin and all predicates in plan</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1753">CALCITE-1753</a>]
Push expressions into null-generating side of a join if they are “strong” (null-preserving)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1759">CALCITE-1759</a>]
Add SQL:2014 reserved words to parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-476">CALCITE-476</a>]
Support distinct aggregates in window functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1738">CALCITE-1738</a>]
Support <code class="language-plaintext highlighter-rouge">CAST</code> of literal values in filters pushed to Druid (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1758">CALCITE-1758</a>]
Push to Druid <code class="language-plaintext highlighter-rouge">OrderBy</code>/<code class="language-plaintext highlighter-rouge">Limit</code> operation over time dimension and additional columns (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1707">CALCITE-1707</a>]
Push <code class="language-plaintext highlighter-rouge">Extraction</code> filter on <code class="language-plaintext highlighter-rouge">Year</code>/<code class="language-plaintext highlighter-rouge">Month</code>/<code class="language-plaintext highlighter-rouge">Day</code> to druid (Slim Bouguerra)</li>
<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="language-plaintext highlighter-rouge">RelMdColumnUniqueness</code> for <code class="language-plaintext 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>]
Upgrade Druid to 0.9.2 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1702">CALCITE-1702</a>]
Support extended columns in DML (Kevin Liew)</li>
</ul>
<h4 id="fixes-1-13-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1855">CALCITE-1855</a>]
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="language-plaintext highlighter-rouge">UnionMergeRule</code> to deal correctly with <code class="language-plaintext highlighter-rouge">EXCEPT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1850">CALCITE-1850</a>]
Extend <code class="language-plaintext 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="language-plaintext highlighter-rouge">COUNT(c)</code>; Druid only supports <code class="language-plaintext 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>]
Druid Adapter does not push the boolean operator <code class="language-plaintext highlighter-rouge">&lt;&gt;</code> as a filter correctly (Zain Humayun)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1798">CALCITE-1798</a>]
In JDBC adapter, generate dialect-specific SQL for <code class="language-plaintext highlighter-rouge">FLOOR</code> operator (Chris Baynes)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1812">CALCITE-1812</a>]
Provide <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code> from planner to rules and invalidate in <code class="language-plaintext highlighter-rouge">transformTo</code> (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1804">CALCITE-1804</a>]
Cannot assign <code class="language-plaintext highlighter-rouge">NOT NULL</code> array to <code class="language-plaintext highlighter-rouge">NULLABLE</code> array (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1810">CALCITE-1810</a>]
Allow <code class="language-plaintext highlighter-rouge">NULL</code> for <code class="language-plaintext highlighter-rouge">ARRAY</code> constructor (Ankit Singhal)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1830">CALCITE-1830</a>]
<code class="language-plaintext highlighter-rouge">ProcessBuilder</code> is security sensitive; move it to test suite to prevent accidents</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1816">CALCITE-1816</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">TIMESTAMP(3)</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1664">CALCITE-1664</a>]
<code class="language-plaintext highlighter-rouge">CAST(&lt;string&gt; 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>]
Create a read-consistent view of CalciteSchema for each statement compilation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1800">CALCITE-1800</a>]
JDBC adapter fails on query with <code class="language-plaintext highlighter-rouge">UNION</code> in <code class="language-plaintext highlighter-rouge">FROM</code> clause (Viktor Batytskyi, Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1788">CALCITE-1788</a>]
Simplify handling of position in the parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1782">CALCITE-1782</a>]
<code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> should work on <code class="language-plaintext highlighter-rouge">Aggregate</code> instead of <code class="language-plaintext highlighter-rouge">LogicalAggregate</code> (Haohui Mai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1293">CALCITE-1293</a>]
Bad code generated when argument to <code class="language-plaintext highlighter-rouge">COUNT(DISTINCT)</code> is a <code class="language-plaintext highlighter-rouge">GROUP BY</code> column</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1770">CALCITE-1770</a>]
<code class="language-plaintext highlighter-rouge">CAST(NULL AS ...)</code> gives NPE (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1777">CALCITE-1777</a>]
<code class="language-plaintext highlighter-rouge">WHERE FALSE</code> causes <code class="language-plaintext highlighter-rouge">AssertionError</code> (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1778">CALCITE-1778</a>]
Query with <code class="language-plaintext highlighter-rouge">WHERE CASE</code> throws <code class="language-plaintext highlighter-rouge">AssertionError</code> “Cast for just nullability not allowed”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1773">CALCITE-1773</a>]
Add Test sql validator test for Pattern skip syntax in <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1761">CALCITE-1761</a>]
<code class="language-plaintext highlighter-rouge">TUMBLE</code>/<code class="language-plaintext highlighter-rouge">HOP</code>/<code class="language-plaintext highlighter-rouge">SESSION_START</code>/<code class="language-plaintext highlighter-rouge">END</code> do not resolve time field correctly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1765">CALCITE-1765</a>]
Druid adapter fail when the extract granularity is not supported (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1767">CALCITE-1767</a>]
Fix join/aggregate rewriting rule when same table is referenced more than once</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1764">CALCITE-1764</a>]
Adding sort ordering type for druid sort json field (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-715">CALCITE-715</a>]
Add <code class="language-plaintext highlighter-rouge">PERIOD</code> type constructor and period operators (<code class="language-plaintext highlighter-rouge">CONTAINS</code>, <code class="language-plaintext highlighter-rouge">PRECEDES</code>, etc.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1456">CALCITE-1456</a>]
Change <code class="language-plaintext highlighter-rouge">SubstitutionVisitor</code> to use generic <code class="language-plaintext highlighter-rouge">RelBuilder</code> instead of Logical instances of the operators when possible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1763">CALCITE-1763</a>]
Recognize lossless casts in join/aggregate materialized view rewriting rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1639">CALCITE-1639</a>]
<code class="language-plaintext highlighter-rouge">TIMESTAMPADD(MONTH, ...)</code> should return last day of month if the day overflows</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1754">CALCITE-1754</a>]
In Csv adapter, convert <code class="language-plaintext highlighter-rouge">DATE</code> and <code class="language-plaintext highlighter-rouge">TIME</code> values to <code class="language-plaintext highlighter-rouge">int</code>, and <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> values to <code class="language-plaintext highlighter-rouge">long</code> (Hongbin Ma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1751">CALCITE-1751</a>]
<code class="language-plaintext highlighter-rouge">PigRelBuilderStyleTest</code> test cases are flapping</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1750">CALCITE-1750</a>]
Fix unit test failures when the path to the repository contains spaces</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1724">CALCITE-1724</a>]
Wrong comparison for floats/double type in Druid (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1734">CALCITE-1734</a>]
Select query result not parsed correctly with druid 0.9.2 (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1732">CALCITE-1732</a>]
<code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> when using <code class="language-plaintext highlighter-rouge">LATERAL TABLE</code> with more than one field (Godfrey He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1722">CALCITE-1722</a>]
Druid adapter uses un-scaled value of <code class="language-plaintext highlighter-rouge">DECIMAL</code> literals (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1723">CALCITE-1723</a>]
Match <code class="language-plaintext highlighter-rouge">DruidProjectFilterTransposeRule</code> against <code class="language-plaintext highlighter-rouge">DruidQuery</code> (Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1714">CALCITE-1714</a>]
Do not push group by on druid metrics fields (Slim Bouguerra)</li>
</ul>
<h4 id="site-1-13-0">Web site and documentation</h4>
<ul>
<li>Michael Mior joins PMC</li>
<li>Add 3 new committers (Zhiqiang-He, Kevin Liew, Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1854">CALCITE-1854</a>]
Fix value range of TINYINT in documentation (James Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1827">CALCITE-1827</a>]
Document <code class="language-plaintext highlighter-rouge">TIMESTAMPADD</code>, <code class="language-plaintext highlighter-rouge">TIMESTAMPDIFF</code> functions (SunJincheng)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1796">CALCITE-1796</a>]
Update materialized views documentation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1566">CALCITE-1566</a>]
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>
<p><a href="../news/2017/03/24/release-1.12.0">Features of note</a> this release are
JDK 9 support,
the new file/web and Apache Pig adapters,
general improvements to the Druid adapter,
more helpful error messages if you get a table or column name wrong,
improved the plans for correlated sub-queries,
support for <code class="language-plaintext highlighter-rouge">TUMBLE</code>, <code class="language-plaintext highlighter-rouge">HOP</code> and <code class="language-plaintext highlighter-rouge">SESSION</code> window functions in streaming and regular queries,
experimental support for <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> clause for complex-event processing (CEP),
several new built-in functions to comply with the ODBC/JDBC standard.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8, 9;
Guava versions 14.0 to 21.0;
Druid version 0.9.1.1;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h3 id="new-features-1-12-0">New features</h3>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1666">CALCITE-1666</a>]
Support for modifiable views with extended columns (Kevin Liew)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1655">CALCITE-1655</a>]
Druid adapter: add <code class="language-plaintext highlighter-rouge">IN</code> filter (Slim Bouguerra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1641">CALCITE-1641</a>]
Add parser and validator support for <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code>, a new clause for
complex-event processing (CEP) (Zhiqiang-He)
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1686">CALCITE-1686</a>]
Only allow <code class="language-plaintext highlighter-rouge">FINAL</code> and other functions inside <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> (Zhiqiang-He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1689">CALCITE-1689</a>]
Remove <code class="language-plaintext highlighter-rouge">PATTERN_DEFINE_AS</code> in SqlStdOperatorTable; <code class="language-plaintext highlighter-rouge">MATCH_RECOGNIZE</code> now uses
<code class="language-plaintext highlighter-rouge">AS</code> (Zhiqiang-He)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1668">CALCITE-1668</a>]
Simplify <code class="language-plaintext highlighter-rouge">1 = 1</code> to <code class="language-plaintext highlighter-rouge">TRUE</code>, <code class="language-plaintext highlighter-rouge">1 &gt; 2</code> to <code class="language-plaintext highlighter-rouge">FALSE</code> (Kevin Risden)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1598">CALCITE-1598</a>]
Pig adapter (Eli Levine)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1661">CALCITE-1661</a>]
Druid adapter: Support aggregation functions on <code class="language-plaintext highlighter-rouge">DECIMAL</code> columns</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1615">CALCITE-1615</a>]
Support <code class="language-plaintext highlighter-rouge">HOP</code> and <code class="language-plaintext highlighter-rouge">SESSION</code> functions in the <code class="language-plaintext highlighter-rouge">GROUP BY</code> clause
(Julian Hyde and Haohui Mai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1494">CALCITE-1494</a>]
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="language-plaintext highlighter-rouge">$x = $x</code> to <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1704">CALCITE-1704</a>]
Execute queries on CSV files using simple <code class="language-plaintext highlighter-rouge">sqlline</code> command</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1676">CALCITE-1676</a>]
Scan directory for .csv, .json and .gz files</li>
<li>Allow multiple Calcite columns to be derived from one HTML column,
e.g. Location → Lat, Lon</li>
<li>Improved pattern match: added <code class="language-plaintext highlighter-rouge">matchSeq</code> to allow selection of
<i>n</i>th match</li>
<li>Add replace patterns to cell parsing logic</li>
<li>Add handling for tables without <code class="language-plaintext highlighter-rouge">&lt;TH&gt;</code> elements</li>
<li>Unit tests using local files (URL tests are contingent on network
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>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1652">CALCITE-1652</a>]
Allow <code class="language-plaintext highlighter-rouge">GROUPING</code> function to have multiple arguments, like <code class="language-plaintext highlighter-rouge">GROUPING_ID</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1634">CALCITE-1634</a>]
Make <code class="language-plaintext highlighter-rouge">RelBuilder.distinct</code> no-op if input is already distinct; use it in
<code class="language-plaintext highlighter-rouge">RelDecorrelator</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1635">CALCITE-1635</a>]
Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">SemiJoinRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1618">CALCITE-1618</a>]
<code class="language-plaintext highlighter-rouge">SortProjectTransposeRule</code> should check for monotonicity preserving <code class="language-plaintext highlighter-rouge">CAST</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1510">CALCITE-1510</a>]
In <code class="language-plaintext highlighter-rouge">INSERT</code>/<code class="language-plaintext highlighter-rouge">UPSERT</code> without an explicit target column list, allow fewer source
columns than table (Kevin Liew)
<ul>
<li>Check for default value only when target field is null
(Rajeshbabu Chintaguntla)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1603">CALCITE-1603</a>]
Support <code class="language-plaintext highlighter-rouge">TUMBLE</code> window function in the <code class="language-plaintext highlighter-rouge">GROUP BY</code> clause (Julian Hyde and
Haohui Mai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1606">CALCITE-1606</a>]
Add datetime scalar functions (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1604">CALCITE-1604</a>]
Add JDBC/ODBC scalar functions <code class="language-plaintext highlighter-rouge">DATABASE</code>, <code class="language-plaintext highlighter-rouge">IFNULL</code>, <code class="language-plaintext highlighter-rouge">USER</code> (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1549">CALCITE-1549</a>]
More helpful error message when schema, table or column not found</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-420">CALCITE-420</a>]
Add <code class="language-plaintext highlighter-rouge">REPLACE</code> function, callable with and without JDBC escape syntax (Riccardo
Tommasini)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1557">CALCITE-1557</a>]
Add numeric scalar functions (Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1258">CALCITE-1258</a>]
JDK9</li>
</ul>
<h4 id="fixes-1-12-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1716">CALCITE-1716</a>]
Fix Cassandra integration tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1715">CALCITE-1715</a>]
Downgrade to Guava 19.0 to fix Cassandra incompatibility</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1706">CALCITE-1706</a>]
Disable <code class="language-plaintext highlighter-rouge">DruidAggregateFilterTransposeRule</code>, because it causes fine-grained
aggregations to be pushed to Druid</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1695">CALCITE-1695</a>]
Add class <code class="language-plaintext highlighter-rouge">RexSimplify</code>, providing an explicit <code class="language-plaintext highlighter-rouge">RexExecutor</code> for methods to
simplify <code class="language-plaintext highlighter-rouge">RexNode</code>s</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1694">CALCITE-1694</a>]
Pig adapter: Use the shaded Avatica dependency instead</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1561">CALCITE-1561</a>]
Make <code class="language-plaintext 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="language-plaintext highlighter-rouge">RexLocalRef</code> for <code class="language-plaintext 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="language-plaintext highlighter-rouge">Filter</code> with other relations
(Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1684">CALCITE-1684</a>]
Change default precision of <code class="language-plaintext highlighter-rouge">VARCHAR</code> and <code class="language-plaintext highlighter-rouge">VARBINARY</code> types from 1 to
“unspecified” (Kevin Liew)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1691">CALCITE-1691</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> in <code class="language-plaintext highlighter-rouge">RelOptUtil.containsNullableFields</code>, attempting to
convert executor to <code class="language-plaintext 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="language-plaintext highlighter-rouge">Union</code>,
<code class="language-plaintext highlighter-rouge">Minus</code> or <code class="language-plaintext highlighter-rouge">Intersect</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1665">CALCITE-1665</a>]
<code class="language-plaintext highlighter-rouge">HAVING</code> support in <code class="language-plaintext highlighter-rouge">RelToSqlConverter</code> (Zhiqiang He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1673">CALCITE-1673</a>]
In CSV adapter, query with <code class="language-plaintext highlighter-rouge">ORDER BY</code> or <code class="language-plaintext highlighter-rouge">GROUP BY</code> on <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> column
throws CompileException (Gangadhar Kairi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1674">CALCITE-1674</a>]
<code class="language-plaintext 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="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1656">CALCITE-1656</a>]
Improve cost function in <code class="language-plaintext highlighter-rouge">DruidQuery</code> to encourage early column pruning
(Nishant Bangarwa)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1664">CALCITE-1664</a>]
<code class="language-plaintext highlighter-rouge">CAST('&lt;string&gt;' as TIMESTAMP)</code> wrongly adds part of sub-second fraction to the
value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1659">CALCITE-1659</a>]
Simplifying <code class="language-plaintext highlighter-rouge">CAST('YYYY-MM-DD hh:mm:ss.SSS' as TIMESTAMP)</code> should round the
sub-second fraction (Remus Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1439">CALCITE-1439</a>]
Handle errors during constant reduction</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1653">CALCITE-1653</a>]
Pass an expression executor to <code class="language-plaintext highlighter-rouge">RexUtil.simplify</code> for constant reduction (Remus
Rusanu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1601">CALCITE-1601</a>]
<code class="language-plaintext highlighter-rouge">DateRangeRules</code> loses OR filters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1637">CALCITE-1637</a>]
Add mutable equivalents for all relational expressions (e.g. <code class="language-plaintext highlighter-rouge">MutableFilter</code>)</li>
<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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">Correlate.joinType</code> attribute in lower-case, same as
<code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> while translating query with <code class="language-plaintext highlighter-rouge">WITH</code> and correlated sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1623">CALCITE-1623</a>]
Make sure <code class="language-plaintext highlighter-rouge">DATE</code>, <code class="language-plaintext highlighter-rouge">TIME</code> and <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> literals have <code class="language-plaintext highlighter-rouge">Calendar</code> with GMT
timezone</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1619">CALCITE-1619</a>]
<code class="language-plaintext highlighter-rouge">CAST</code> is ignored by rules pushing operators into <code class="language-plaintext 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="language-plaintext highlighter-rouge">VolcanoPlanner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1589">CALCITE-1589</a>]
Druid adapter: <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">JdbcSchema</code> throws exception when detecting nullable columns (Wu Xiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1610">CALCITE-1610</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder</code> sort-combining optimization treats aliases incorrectly (Jess
Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1595">CALCITE-1595</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.call</code> throws <code class="language-plaintext highlighter-rouge">NullPointerException</code> if argument types are invalid
(Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1602">CALCITE-1602</a>]
Remove uses of deprecated APIs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1569">CALCITE-1569</a>]
Code generation for fields of type <code class="language-plaintext highlighter-rouge">java.sql.Date</code> (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1582">CALCITE-1582</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">Util.newInternal</code>, <code class="language-plaintext highlighter-rouge">.pre</code>, <code class="language-plaintext highlighter-rouge">.post</code>, <code class="language-plaintext highlighter-rouge">.permAssert</code> and
<code class="language-plaintext 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="language-plaintext highlighter-rouge">UNION</code> has more than two inputs (Zhiqiang
He)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1535">CALCITE-1535</a>]
Give error if column referenced in <code class="language-plaintext highlighter-rouge">ORDER BY</code> is ambiguous (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1594">CALCITE-1594</a>]
<code class="language-plaintext highlighter-rouge">ConventionTraitDef.getConversionData()</code> is not thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1577">CALCITE-1577</a>]
Druid adapter: Incorrect result - limit on timestamp disappears</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1587">CALCITE-1587</a>]
Druid adapter: <code class="language-plaintext 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="language-plaintext highlighter-rouge">topN</code> query limit with granularity</li>
<li>Druid adapter: Add <code class="language-plaintext highlighter-rouge">enum Granularity</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1592">CALCITE-1592</a>]
<code class="language-plaintext highlighter-rouge">SqlToRelConverter</code> throws <code class="language-plaintext highlighter-rouge">UnsupportedOperationException</code> if query has
<code class="language-plaintext 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>]
Literals may lose precision during expression reduction</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1546">CALCITE-1546</a>]
Wrong plan for <code class="language-plaintext highlighter-rouge">NOT IN</code> sub-queries with disjunction</li>
<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="language-plaintext highlighter-rouge">SimpleCalciteSchema</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1558">CALCITE-1558</a>]
<code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> gets field mapping wrong if group key
is used in aggregate function (Zhenghua Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1562">CALCITE-1562</a>]
Update jsr305 from 1.3.9 to 3.0.1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1563">CALCITE-1563</a>]
In case-insensitive connection, non-existent tables use alphabetically
preceding table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1544">CALCITE-1544</a>]
<code class="language-plaintext highlighter-rouge">AggregateJoinTransposeRule</code> fails to preserve row type (Kurt Young)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1543">CALCITE-1543</a>]
Correlated scalar sub-query with multiple aggregates gives <code class="language-plaintext highlighter-rouge">AssertionError</code>
(Kurt Young)</li>
</ul>
<h4 id="site-1-12-0">Web site and documentation</h4>
<ul>
<li>Maryann Xue joins PMC</li>
<li>Add 3 new committers (Gian Merlino, Jess Balint, Laurent Goujon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1657">CALCITE-1657</a>]
Release Calcite 1.12.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1677">CALCITE-1677</a>]
Replace duplicate avatica docs with a redirect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1685">CALCITE-1685</a>]
Site: <code class="language-plaintext highlighter-rouge">defaultNullCollation</code> key listed as <code class="language-plaintext highlighter-rouge">materializationsEnabled</code>
(Kevin Liew)</li>
<li>Add MapD to <a href="/docs/powered_by.html">Powered by
Calcite</a> page (Todd Mostak)</li>
<li>Diagram of logos of projects and products powered by Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1622">CALCITE-1622</a>]
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>
<p>Nearly three months after the previous release, there is a long list
of improvements and bug-fixes, many of them making planner rules
smarter.</p>
<p>Several adapters have improvements:</p>
<ul>
<li>The JDBC adapter can now push down DML (<code class="language-plaintext highlighter-rouge">INSERT</code>, <code class="language-plaintext highlighter-rouge">UPDATE</code>, <code class="language-plaintext highlighter-rouge">DELETE</code>),
windowed aggregates (<code class="language-plaintext highlighter-rouge">OVER</code>), <code class="language-plaintext highlighter-rouge">IS NULL</code> and <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> operators.</li>
<li>The Cassandra adapter now supports authentication.</li>
<li>Several key bug-fixes in the Druid adapter.</li>
</ul>
<p>For correlated and uncorrelated sub-queries, we generate more
efficient plans (for example, in some correlated queries we no longer
require a sub-query to generate the values of the correlating
variable), can now handle multiple correlations, and have also fixed a
few correctness bugs.</p>
<p>New SQL syntax:</p>
<ul>
<li>
<code class="language-plaintext highlighter-rouge">CROSS APPLY</code> and <code class="language-plaintext highlighter-rouge">OUTER APPLY</code>;</li>
<li>
<code class="language-plaintext highlighter-rouge">MINUS</code> as a synonym for <code class="language-plaintext highlighter-rouge">EXCEPT</code>;</li>
<li>an <code class="language-plaintext highlighter-rouge">AS JSON</code> option for the <code class="language-plaintext highlighter-rouge">EXPLAIN</code> command;</li>
<li>compound identifiers in the target list of <code class="language-plaintext highlighter-rouge">INSERT</code>, allowing you to
insert into individual fields of record-valued columns (or column
families if you are using the Apache Phoenix adapter).</li>
</ul>
<p>A variety of new and extended built-in functions: <code class="language-plaintext highlighter-rouge">CONVERT</code>, <code class="language-plaintext highlighter-rouge">LTRIM</code>,
<code class="language-plaintext highlighter-rouge">RTRIM</code>, 3-parameter <code class="language-plaintext highlighter-rouge">LOCATE</code> and <code class="language-plaintext highlighter-rouge">POSITION</code>, <code class="language-plaintext highlighter-rouge">RAND</code>, <code class="language-plaintext highlighter-rouge">RAND_INTEGER</code>,
and <code class="language-plaintext highlighter-rouge">SUBSTRING</code> applied to binary types.</p>
<p>There are minor but potentially breaking API changes in
[<a href="https://issues.apache.org/jira/browse/CALCITE-1519">CALCITE-1519</a>]
(interface <code class="language-plaintext highlighter-rouge">SubqueryConverter</code> becomes <code class="language-plaintext highlighter-rouge">SubQueryConverter</code> and some
similar changes in the case of classes and methods) and
[<a href="https://issues.apache.org/jira/browse/CALCITE-1530">CALCITE-1530</a>]
(rename <code class="language-plaintext highlighter-rouge">Shuttle</code> to <code class="language-plaintext highlighter-rouge">Visitor</code>, and create a new class <code class="language-plaintext highlighter-rouge">Visitor&lt;R&gt;</code>).
See the cases for more details.</p>
<p>Compatibility: This release is tested
on Linux, macOS, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
Druid version 0.9.1.1;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-11-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1551">CALCITE-1551</a>]
Preserve alias in <code class="language-plaintext highlighter-rouge">RelBuilder.project</code> (Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1552">CALCITE-1552</a>]
Add <code class="language-plaintext highlighter-rouge">RAND</code> function, returning <code class="language-plaintext highlighter-rouge">DOUBLE</code> values in the range 0..1</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1414">CALCITE-1414</a>]
Add <code class="language-plaintext highlighter-rouge">RAND_INTEGER</code> function, which returns a random integer modulo N (Julian
Feinauer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1540">CALCITE-1540</a>]
Support multiple columns in <code class="language-plaintext highlighter-rouge">PARTITION BY</code> clause of window function
(Hongbin Ma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1534">CALCITE-1534</a>]
Allow compound identifiers in <code class="language-plaintext highlighter-rouge">INSERT</code> target column list</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1529">CALCITE-1529</a>]
Support <code class="language-plaintext highlighter-rouge">CREATE TABLE</code> in tests (and only in tests)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1527">CALCITE-1527</a>]
Support DML in the JDBC adapter (Christian Tzolov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1523">CALCITE-1523</a>]
In <code class="language-plaintext highlighter-rouge">RelBuilder</code>, add <code class="language-plaintext highlighter-rouge">field</code> method to reference input to join by alias (Jess
Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1524">CALCITE-1524</a>]
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="language-plaintext highlighter-rouge">INSERT</code>/<code class="language-plaintext highlighter-rouge">UPDATE</code>/<code class="language-plaintext highlighter-rouge">MERGE</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1472">CALCITE-1472</a>]
Support <code class="language-plaintext highlighter-rouge">CROSS</code>/<code class="language-plaintext highlighter-rouge">OUTER APPLY</code> syntax (Jark Wu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1506">CALCITE-1506</a>]
Push <code class="language-plaintext highlighter-rouge">OVER</code> clause to underlying SQL via JDBC adapter (Christian Tzolov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1509">CALCITE-1509</a>]
Allow overriding the convertlet table in CalcitePrepareImpl (Gian Merlino)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1483">CALCITE-1483</a>]
Generate simpler logic for <code class="language-plaintext highlighter-rouge">NOT IN</code> if we can deduce that the key is never null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1497">CALCITE-1497</a>]
Infer <code class="language-plaintext highlighter-rouge">IS NOT NULL</code>, and project predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1489">CALCITE-1489</a>]
Add rule, <code class="language-plaintext highlighter-rouge">AggregateValuesRule</code>, that applies to an <code class="language-plaintext highlighter-rouge">Aggregate</code> on an empty
relation (Gian Merlino)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1447">CALCITE-1447</a>]
Implement <code class="language-plaintext highlighter-rouge">INTERSECT DISTINCT</code> by rewriting to <code class="language-plaintext highlighter-rouge">UNION ALL</code> and counting
(Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1389">CALCITE-1389</a>]
Add a rewrite rule to use materialized views with joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1125">CALCITE-1125</a>]
<code class="language-plaintext highlighter-rouge">MINUS</code> as a synonym for <code class="language-plaintext highlighter-rouge">EXCEPT</code> (enabled in Oracle10 conformance)
(Chandni Singh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1453">CALCITE-1453</a>]
Support <code class="language-plaintext highlighter-rouge">ANY</code> type with binary comparison and arithmetic operators
(Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1444">CALCITE-1444</a>]
Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">Intersect</code> and <code class="language-plaintext highlighter-rouge">Minus</code>;
flatten set-operators if the top is <code class="language-plaintext highlighter-rouge">DISTINCT</code> and bottom is <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SqlConformance</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1417">CALCITE-1417</a>]
In <code class="language-plaintext 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="language-plaintext highlighter-rouge">FILTER</code> on aggregate functions in <code class="language-plaintext highlighter-rouge">Interpreter</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1418">CALCITE-1418</a>]
Implement <code class="language-plaintext highlighter-rouge">SUBSTRING</code> function for <code class="language-plaintext highlighter-rouge">BINARY</code> and <code class="language-plaintext highlighter-rouge">VARBINARY</code> (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1422">CALCITE-1422</a>]
In JDBC adapter, allow <code class="language-plaintext highlighter-rouge">IS NULL</code> and <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> operators in generated SQL
join condition (Viktor Batytskyi)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1419">CALCITE-1419</a>]
Implement JDBC functions: <code class="language-plaintext highlighter-rouge">LTRIM</code>, <code class="language-plaintext highlighter-rouge">RTRIM</code> and 3-parameter <code class="language-plaintext highlighter-rouge">LOCATE</code> and
<code class="language-plaintext highlighter-rouge">POSITION</code> (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-917">CALCITE-917</a>]
Add <code class="language-plaintext highlighter-rouge">AS JSON</code> as output option for <code class="language-plaintext highlighter-rouge">EXPLAIN</code>
</li>
</ul>
<h4 id="fixes-1-11-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1559">CALCITE-1559</a>]
Convert example models to stricter JSON</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1560">CALCITE-1560</a>]
Remove <code class="language-plaintext highlighter-rouge">avatica</code> directory from <code class="language-plaintext highlighter-rouge">sqlline</code>’s class path</li>
<li>Remove non-ASCII characters from Java source files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1511">CALCITE-1511</a>]
Decorrelation fails if query has more than one <code class="language-plaintext highlighter-rouge">EXISTS</code> in <code class="language-plaintext highlighter-rouge">WHERE</code> clause</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1555">CALCITE-1555</a>]
Improve <code class="language-plaintext highlighter-rouge">RelNode</code> validation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1548">CALCITE-1548</a>]
Instantiate function objects once per query</li>
<li>Add lock to <code class="language-plaintext highlighter-rouge">JdbcAdapterTest</code>, to ensure that tests that modify data run in
series</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1519">CALCITE-1519</a>]
Standardize on “sub-query” rather than “subquery” in class names and comments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1493">CALCITE-1493</a>]
Wrong plan for <code class="language-plaintext highlighter-rouge">NOT IN</code> correlated queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1526">CALCITE-1526</a>]
Use <code class="language-plaintext 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="language-plaintext highlighter-rouge">Visitor</code> to <code class="language-plaintext highlighter-rouge">Shuttle</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1507">CALCITE-1507</a>]
<code class="language-plaintext highlighter-rouge">OFFSET</code> cannot be pushed through a <code class="language-plaintext highlighter-rouge">JOIN</code> if the non-preserved side of outer
join is not count-preserving</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1522">CALCITE-1522</a>]
Fix error message for <code class="language-plaintext highlighter-rouge">SetOp</code> with incompatible args (Jess Balint)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1532">CALCITE-1532</a>]
In <code class="language-plaintext highlighter-rouge">HttpUtils</code>, don’t log HTTP requests; they may contain user name, password</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1037">CALCITE-1037</a>]
Column uniqueness is calculated incorrectly for <code class="language-plaintext highlighter-rouge">Correlate</code> (Alexey Makhmutov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1495">CALCITE-1495</a>]
<code class="language-plaintext highlighter-rouge">SemiJoinRule</code> should not apply to <code class="language-plaintext highlighter-rouge">RIGHT</code> and <code class="language-plaintext highlighter-rouge">FULL JOIN</code>, and should strip
<code class="language-plaintext highlighter-rouge">LEFT JOIN</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1516">CALCITE-1516</a>]
Upgrade <code class="language-plaintext highlighter-rouge">hydromatic-resource-maven-plugin</code>, and re-work <code class="language-plaintext highlighter-rouge">SaffronProperties</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1498">CALCITE-1498</a>]
Avoid <code class="language-plaintext highlighter-rouge">LIMIT</code> with trivial <code class="language-plaintext highlighter-rouge">ORDER BY</code> being pushed through <code class="language-plaintext highlighter-rouge">JOIN</code> endlessly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1501">CALCITE-1501</a>]
<code class="language-plaintext highlighter-rouge">EnumerableUnion</code> should use array comparator when row format is <code class="language-plaintext highlighter-rouge">ARRAY</code> (Dayue
Gao)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1502">CALCITE-1502</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> when <code class="language-plaintext highlighter-rouge">CASE</code> is used with optional
value and literal (Serhii Harnyk)</li>
<li>Cosmetic changes, and deprecate some methods</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="language-plaintext highlighter-rouge">ValuesReduceRule</code> should ignore empty <code class="language-plaintext highlighter-rouge">Values</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1384">CALCITE-1384</a>]
Extension point for <code class="language-plaintext highlighter-rouge">ALTER</code> statements (Gabriel Reid)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1484">CALCITE-1484</a>]
Upgrade Apache parent POM to version 18</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1482">CALCITE-1482</a>]
Fix leak on CassandraSchema creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1479">CALCITE-1479</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> on multi-column <code class="language-plaintext highlighter-rouge">IN</code> sub-query
(Gian Merlino)</li>
<li>Upgrade <code class="language-plaintext highlighter-rouge">Quidem</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1416">CALCITE-1416</a>]
Make classes implement <code class="language-plaintext 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="language-plaintext highlighter-rouge">aggdesigner</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1270">CALCITE-1270</a>]
Upgrade to <code class="language-plaintext highlighter-rouge">avatica-1.9</code>, <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">fromNext</code> when requesting rows from Druid (Jiarong
Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1430">CALCITE-1430</a>]
In Druid adapter, <code class="language-plaintext highlighter-rouge">pagingIdentifiers</code> might have more than one value (Jiarong
Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1442">CALCITE-1442</a>]
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="language-plaintext highlighter-rouge">RelDataTypeFactoryImpl.copyType()</code> did not copy <code class="language-plaintext 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="language-plaintext highlighter-rouge">FLOAT</code>, not <code class="language-plaintext highlighter-rouge">DOUBLE</code> (Jiarong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1415">CALCITE-1415</a>]
Add sub-query support for RelStructuredTypeFlattener</li>
</ul>
<h4 id="site-1-11-0">Web site and documentation</h4>
<ul>
<li>Change PMC chair</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1459">CALCITE-1459</a>]
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>
<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
<a href="https://issues.apache.org/jira/browse/CALCITE-1403">important issue</a> that
prevented us from handling consistently time dimensions in different time zones.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
Druid version 0.9.1.1;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-10-0">New feature</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1374">CALCITE-1374</a>]
Support operator <code class="language-plaintext highlighter-rouge">!=</code> as an alternative to <code class="language-plaintext highlighter-rouge">&lt;&gt;</code>
</li>
</ul>
<h4 id="fixes-1-10-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1378">CALCITE-1378</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">STAR</code>, expand sub-fields in <code class="language-plaintext highlighter-rouge">RecordType</code> columns of <code class="language-plaintext highlighter-rouge">StructKind.PEEK_FIELDS</code> and <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">ITEM</code> operator ignores the value type of the collection, assigns to Object variable (Jungtaek Lim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1392">CALCITE-1392</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">isDeterministic</code> only explores top <code class="language-plaintext highlighter-rouge">RexCall</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1397">CALCITE-1397</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> in <code class="language-plaintext highlighter-rouge">FilterReduceExpressionsRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1398">CALCITE-1398</a>]
Change visibility of <code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> utility methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1400">CALCITE-1400</a>]
<code class="language-plaintext highlighter-rouge">AggregatePullUpConstantsRule</code> might adjust aggregation function parameters indices wrongly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1402">CALCITE-1402</a>]
Druid Filter translation incorrect if input reference is in RHS of comparison</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1403">CALCITE-1403</a>]
<code class="language-plaintext highlighter-rouge">DruidAdapterIT</code> broken</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1420">CALCITE-1420</a>]
Allow Calcite JDBC Driver minor version to be greater than 9</li>
</ul>
<h4 id="site-1-10-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1393">CALCITE-1393</a>]
Exclude packages <code class="language-plaintext highlighter-rouge">org.apache.calcite.benchmarks.generated</code>, <code class="language-plaintext 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>
<p>This release includes extensions and fixes for the Druid adapter. New features were
added, such as the capability to
<a href="https://issues.apache.org/jira/browse/CALCITE-1357">recognize and translate Timeseries and TopN Druid queries</a>.
Moreover, this release contains multiple bug-fixes over the initial implementation of the
adapter. It is worth mentioning that most of these fixes were contributed by Druid developers,
which demonstrates the good reception of the adapter by that community.</p>
<p>We have added new SQL features too, e.g.,
<a href="https://issues.apache.org/jira/browse/CALCITE-1309">support for <code class="language-plaintext highlighter-rouge">LATERAL TABLE</code></a>.
There are multiple interesting extensions to the planner rules that should contribute to
obtain better plans, such as
<a href="https://issues.apache.org/jira/browse/CALCITE-1288">avoiding doing the same join twice</a>
in the presence of <code class="language-plaintext highlighter-rouge">COUNT DISTINCT</code>, or being able to
<a href="https://issues.apache.org/jira/browse/CALCITE-1220">simplify the expressions</a>
in the plan further. In addition, we implemented a rule to
<a href="https://issues.apache.org/jira/browse/CALCITE-1334">convert predicates on <code class="language-plaintext highlighter-rouge">EXTRACT</code> function calls into date ranges</a>.
The rule is not specific to Druid; however, in principle, it will be useful to identify
filter conditions on the time dimension of Druid data sources.</p>
<p>Finally, the release includes more than thirty bug-fixes, minor enhancements and internal
changes to planner rules and APIs.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-9-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1208">CALCITE-1208</a>]
Improve two-level column structure handling</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1227">CALCITE-1227</a>]
Add streaming CSV table (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1309">CALCITE-1309</a>]
Support <code class="language-plaintext highlighter-rouge">LATERAL TABLE</code> (Jark Wu)</li>
</ul>
<h4 id="druid-adapter-1-9-0">Druid adapter</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1292">CALCITE-1292</a>]
Druid metadata query is very slow (Michael Spector)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1324">CALCITE-1324</a>]
Druid metadata query throws exception if there are non-standard aggregators (Martin Karlsch)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1343">CALCITE-1343</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">Timeseries</code> and <code class="language-plaintext highlighter-rouge">TopN</code> queries in <code class="language-plaintext 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>
<h4 id="planner-rules-1-9-0">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1220">CALCITE-1220</a>]
Further extend simplify for reducing expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1288">CALCITE-1288</a>]
Avoid doing the same join twice if count(distinct) exists (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1289">CALCITE-1289</a>]
<code class="language-plaintext highlighter-rouge">RexUtil.simplifyCase()</code> should account for nullability</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1290">CALCITE-1290</a>]
When converting to CNF, fail if the expression size exceeds a threshold</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1334">CALCITE-1334</a>]
Convert predicates on <code class="language-plaintext highlighter-rouge">EXTRACT</code> function calls into date ranges</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1342">CALCITE-1342</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">UnionPullUpConstantsRule</code>
</li>
</ul>
<h4 id="fixes-1-9-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-30">CALCITE-30</a>]
Implement <code class="language-plaintext highlighter-rouge">Statement.cancel</code> method</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-308">CALCITE-308</a>]
Wrong result when using <code class="language-plaintext highlighter-rouge">DATE</code>+<code class="language-plaintext highlighter-rouge">INTERVAL</code> arithmetics</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-319">CALCITE-319</a>]
Table aliases should follow case-sensitivity policy</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-528">CALCITE-528</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">RexOptUtil</code> does not support function table other than <code class="language-plaintext highlighter-rouge">SqlStdOperatorTable</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1095">CALCITE-1095</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">RelTraits</code> other than <code class="language-plaintext 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="language-plaintext highlighter-rouge">DELETE</code> should be same as <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlTypeFactory.leastRestrictiveSqlType()</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1284">CALCITE-1284</a>]
Move <code class="language-plaintext highlighter-rouge">Quidem</code> tests from <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SqlTypeName</code> values for each interval range, e.g. <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">TIMESTAMP_ADD</code> applied to a <code class="language-plaintext highlighter-rouge">DATE</code> should be <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> if unit is smaller than <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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>]
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="language-plaintext 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="language-plaintext highlighter-rouge">AggFunctions</code> supported by <code class="language-plaintext highlighter-rouge">JdbcAggregate</code> should depend on <code class="language-plaintext highlighter-rouge">SqlKind</code>, instead of operator instance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1336">CALCITE-1336</a>]
Add view name to the <code class="language-plaintext highlighter-rouge">ViewExpander</code> (Julien Le Dem)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1337">CALCITE-1337</a>]
Lazy evaluate <code class="language-plaintext highlighter-rouge">RexCall</code> digests (Ted Xu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1340">CALCITE-1340</a>]
Window aggregates invalid error/error messages in some cases (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1344">CALCITE-1344</a>]
Incorrect inferred precision when <code class="language-plaintext highlighter-rouge">BigDecimal</code> value is less than 1</li>
<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="language-plaintext 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="language-plaintext highlighter-rouge">GROUP BY</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1370">CALCITE-1370</a>]
In <code class="language-plaintext highlighter-rouge">SqlKind</code>, add <code class="language-plaintext highlighter-rouge">OTHER_DDL</code> to <code class="language-plaintext highlighter-rouge">DDL</code> enum set (Rajeshbabu Chintaguntla)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1372">CALCITE-1372</a>]
Calcite generate wrong field names in JDBC adapter</li>
</ul>
<h4 id="site-1-9-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1229">CALCITE-1229</a>]
Restore API and Test API links to site</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1325">CALCITE-1325</a>]
Druid adapter requires Guava 14.0 or higher</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1329">CALCITE-1329</a>]
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>
<p>This release adds adapters for
<a href="https://issues.apache.org/jira/browse/CALCITE-1253">Elasticsearch</a> and
<a href="https://issues.apache.org/jira/browse/CALCITE-1121">Druid</a>.
It is also now easier to
<a href="https://issues.apache.org/jira/browse/CALCITE-1259">make a JDBC connection based upon a single adapter</a>.</p>
<p>There are several new SQL features: <code class="language-plaintext highlighter-rouge">UNNEST</code> with
<a href="https://issues.apache.org/jira/browse/CALCITE-855">multiple arguments</a>,
<a href="https://issues.apache.org/jira/browse/CALCITE-1250">MAP arguments</a>
and <a href="https://issues.apache.org/jira/browse/CALCITE-1225">with a JOIN</a>;
a <a href="https://issues.apache.org/jira/browse/CALCITE-1168">DESCRIBE</a> statement;
and a <a href="https://issues.apache.org/jira/browse/CALCITE-1115">TRANSLATE</a>
function like the one in Oracle and PostgreSQL.
We also added support for
<a href="https://issues.apache.org/jira/browse/CALCITE-1120">SELECT without FROM</a>
(equivalent to the <code class="language-plaintext highlighter-rouge">VALUES</code> clause, and widely used in MySQL and PostgreSQL),
and added a
<a href="/docs/adapter.html#jdbc-connect-string-parameters">conformance</a>
parameter to allow you to selectively enable this and other SQL features.</p>
<p>And a couple of dozen bug-fixes and enhancements to planner rules and APIs.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 14.0 to 19.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-8-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1177">CALCITE-1177</a>]
Extend list of supported time units in <code class="language-plaintext highlighter-rouge">EXTRACT</code>, <code class="language-plaintext highlighter-rouge">CEIL</code> and <code class="language-plaintext highlighter-rouge">FLOOR</code> functions
(Venki Korukanti)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1259">CALCITE-1259</a>]
Allow connecting to a single schema without writing a model</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-750">CALCITE-750</a>]
Support aggregates within windowed aggregates (Gautam Parai)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1250">CALCITE-1250</a>]
<code class="language-plaintext highlighter-rouge">UNNEST</code> applied to <code class="language-plaintext highlighter-rouge">MAP</code> data type (Johannes Schulte)</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="language-plaintext highlighter-rouge">INSERT</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1120">CALCITE-1120</a>]
<code class="language-plaintext highlighter-rouge">SELECT</code> without <code class="language-plaintext highlighter-rouge">FROM</code> (Jimmy Xiang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-855">CALCITE-855</a>]
<code class="language-plaintext highlighter-rouge">UNNEST</code> with multiple arguments</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1225">CALCITE-1225</a>]
<code class="language-plaintext highlighter-rouge">UNNEST</code> with <code class="language-plaintext highlighter-rouge">JOIN</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1115">CALCITE-1115</a>]
Add <code class="language-plaintext highlighter-rouge">TRANSLATE</code> function with 3 parameters, like the one in Oracle (Javanshir
Yelchiyev)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1168">CALCITE-1168</a>]
Add <code class="language-plaintext highlighter-rouge">DESCRIBE</code> statement (Arina Ielchiieva)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1121">CALCITE-1121</a>]
Druid adapter
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1276">CALCITE-1276</a>]
In Druid adapter, deduce tables and columns if not specified</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1207">CALCITE-1207</a>]
Allow numeric connection properties, and ‘K’, ‘M’, ‘G’ suffixes</li>
</ul>
<h4 id="planner-rules-1-8-0">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1235">CALCITE-1235</a>]
Fully push down <code class="language-plaintext highlighter-rouge">LIMIT</code> + <code class="language-plaintext highlighter-rouge">OFFSET</code> in Cassandra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1216">CALCITE-1216</a>]
Rule to convert <code class="language-plaintext highlighter-rouge">Filter</code>-on-<code class="language-plaintext highlighter-rouge">Scan</code> to materialized view (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1200">CALCITE-1200</a>]
Extend <code class="language-plaintext highlighter-rouge">RelOptUtil.splitJoinCondition</code> to handle <code class="language-plaintext 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="language-plaintext highlighter-rouge">CassandraSort</code> for <code class="language-plaintext 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>]
Add <code class="language-plaintext highlighter-rouge">ProjectRemoveRule</code> to pre-processing program of materialization
substitution</li>
</ul>
<h4 id="fixes-1-8-0">Bug-fixes, API changes and minor enhancements</h4>
<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="language-plaintext highlighter-rouge">int</code> or <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">ANY</code> type in <code class="language-plaintext highlighter-rouge">RexBuilder.ensureType</code> and <code class="language-plaintext highlighter-rouge">TypeFactory.leastRestrictive</code>
(Mehand Baid, Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1151">CALCITE-1151</a>]
Fix <code class="language-plaintext highlighter-rouge">SqlSetOption</code> to correctly handle <code class="language-plaintext highlighter-rouge">SqlOperator.createCall</code>
(Sudheesh Katkam, Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1106">CALCITE-1106</a>]
Expose constructor for <code class="language-plaintext highlighter-rouge">ProjectJoinTransposeRule</code> (Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1107">CALCITE-1107</a>]
Make <code class="language-plaintext highlighter-rouge">SqlSumEmptyIsZeroAggFunction</code> constructor public (Minji Kim)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1269">CALCITE-1269</a>]
Replace <code class="language-plaintext highlighter-rouge">IntList</code> with Guava <code class="language-plaintext highlighter-rouge">Ints</code> class</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1239">CALCITE-1239</a>]
Upgrade to avatica-1.8.0</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1266">CALCITE-1266</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.field</code> gets offsets wrong</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1264">CALCITE-1264</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder.scan</code> to take qualified table name (Chris Baynes)</li>
<li>Move code from <code class="language-plaintext highlighter-rouge">Enumerables</code> to <code class="language-plaintext 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="language-plaintext highlighter-rouge">JoinPushThroughJoinRule</code> (Yi Xinglu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1241">CALCITE-1241</a>]
Add a Freemarker variable for adding non reserved keyword list to <code class="language-plaintext highlighter-rouge">Parser.jj</code>
template (Venki Korukanti)
<ul>
<li>Create a table in <code class="language-plaintext highlighter-rouge">SqlParserTest</code> of reserved keywords from various versions
of the SQL standard</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1150">CALCITE-1150</a>]
Add dynamic record type and dynamic star for schema-on-read table</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1238">CALCITE-1238</a>]
Unparsing a query with <code class="language-plaintext highlighter-rouge">LIMIT</code> but no <code class="language-plaintext highlighter-rouge">ORDER BY</code> gives invalid SQL (Emmanuel
Bastien)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1230">CALCITE-1230</a>]
Add SQLSTATE reference data as <code class="language-plaintext highlighter-rouge">enum SqlState</code> in Avatica, and
deprecate <code class="language-plaintext 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="language-plaintext highlighter-rouge">CHAR</code> when performing cast to <code class="language-plaintext highlighter-rouge">VARCHAR</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1219">CALCITE-1219</a>]
Add method <code class="language-plaintext 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="language-plaintext highlighter-rouge">DatabaseMetaData.getColumnLabel</code> returns null when query has <code class="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">RelOptRuleOperand</code>
</li>
<li>Remove all calls to deprecated methods</li>
<li>Add class <code class="language-plaintext 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>]
Fix invalid Javadoc and suppress checkstyle “errors”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1170">CALCITE-1170</a>]
Allow <code class="language-plaintext highlighter-rouge">SqlSetOperator</code> to be overridden, as a regular <code class="language-plaintext highlighter-rouge">SqlOperator</code> can
(Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-746">CALCITE-746</a>]
Allow apache-rat to be run outside of release process</li>
</ul>
<h4 id="site-1-8-0">Web site and documentation</h4>
<ul>
<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="language-plaintext highlighter-rouge">EnumerableTableAccessRel</code> to <code class="language-plaintext 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>]
Update to github-pages-67</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1202">CALCITE-1202</a>]
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>
<p>This is the first Apache Calcite release since
<a href="/avatica/news/2016/03/03/separate-project/">Avatica became an independent project</a>.
Calcite now depends on <a href="/avatica/">Avatica</a> in the
same way as it does other libraries, via a Maven dependency. To see
Avatica-related changes, see the
<a href="/avatica/docs/history.html#v1-7-1">release notes for Avatica 1.7.1</a>.</p>
<p>We have <a href="https://issues.apache.org/jira/browse/CALCITE-1080">added</a>
an <a href="/docs/adapter.html">adapter</a> for
<a href="https://cassandra.apache.org/">Apache Cassandra</a>.
You can map a Cassandra keyspace into Calcite as a schema, Cassandra
CQL tables as tables, and execute SQL queries on them, which Calcite
converts into <a href="https://cassandra.apache.org/doc/cql/CQL.html">CQL</a>.
Cassandra can define and maintain materialized views but the adapter
goes further: it can transparently rewrite a query to use a
materialized view even if the view is not mentioned in the query.</p>
<p>This release adds an
<a href="https://issues.apache.org/jira/browse/CALCITE-1066">Oracle-compatibility mode</a>.
If you add <code class="language-plaintext highlighter-rouge">fun=oracle</code> to your JDBC connect string, you get all of
the standard operators and functions plus Oracle-specific functions
<code class="language-plaintext highlighter-rouge">DECODE</code>, <code class="language-plaintext highlighter-rouge">NVL</code>, <code class="language-plaintext highlighter-rouge">LTRIM</code>, <code class="language-plaintext highlighter-rouge">RTRIM</code>, <code class="language-plaintext highlighter-rouge">GREATEST</code> and <code class="language-plaintext highlighter-rouge">LEAST</code>. We look
forward to adding more functions, and compatibility modes for other
databases, in future releases.</p>
<p>We’ve replaced our use of JUL (<code class="language-plaintext highlighter-rouge">java.util.logging</code>)
with <a href="https://slf4j.org/">SLF4J</a>. SLF4J provides an API which Calcite can use
independent of the logging implementation. This ultimately provides additional
flexibility to users, allowing them to configure Calcite’s logging within their
own chosen logging framework. This work was done in
[<a href="https://issues.apache.org/jira/browse/CALCITE-669">CALCITE-669</a>].</p>
<p>For users experienced with configuring JUL in Calcite previously, there are some
differences as some the JUL logging levels do not exist in SLF4J: <code class="language-plaintext highlighter-rouge">FINE</code>,
<code class="language-plaintext highlighter-rouge">FINER</code>, and <code class="language-plaintext highlighter-rouge">FINEST</code>, specifically. To deal with this, <code class="language-plaintext highlighter-rouge">FINE</code> was mapped
to SLF4J’s <code class="language-plaintext highlighter-rouge">DEBUG</code> level, while <code class="language-plaintext highlighter-rouge">FINER</code> and <code class="language-plaintext highlighter-rouge">FINEST</code> were mapped to SLF4J’s <code class="language-plaintext highlighter-rouge">TRACE</code>.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
Guava versions 12.0.1 to 19.0;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-7-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1124">CALCITE-1124</a>]
Add <code class="language-plaintext highlighter-rouge">TIMESTAMPADD</code>, <code class="language-plaintext 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="language-plaintext highlighter-rouge">DECODE</code>, <code class="language-plaintext highlighter-rouge">NVL</code>, <code class="language-plaintext highlighter-rouge">LTRIM</code>, <code class="language-plaintext highlighter-rouge">RTRIM</code>,
<code class="language-plaintext highlighter-rouge">GREATEST</code>, <code class="language-plaintext 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>]
In validation, lookup a (possibly overloaded) operator from an operator
table (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-551">CALCITE-551</a>]
Sub-query inside aggregate function</li>
</ul>
<h4 id="planner-rules-1-7-0">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1158">CALCITE-1158</a>]
Make <code class="language-plaintext highlighter-rouge">AggregateRemoveRule</code> extensible</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1116">CALCITE-1116</a>]
Extend <code class="language-plaintext highlighter-rouge">simplify</code> for reducing expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1104">CALCITE-1104</a>]
Materialized views in Cassandra (Michael Mior)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1130">CALCITE-1130</a>]
Add support for operators <code class="language-plaintext highlighter-rouge">IS NULL</code> and <code class="language-plaintext highlighter-rouge">IS NOT NULL</code> in
<code class="language-plaintext highlighter-rouge">RexImplicationChecker</code> (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1129">CALCITE-1129</a>]
Extend <code class="language-plaintext highlighter-rouge">JoinUnionTransposeRule</code> to match <code class="language-plaintext highlighter-rouge">Union</code> instead of <code class="language-plaintext highlighter-rouge">LogicalUnion</code>
(Vasia Kalavri)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1109">CALCITE-1109</a>]
Fix up condition when pushing <code class="language-plaintext highlighter-rouge">Filter</code> through <code class="language-plaintext highlighter-rouge">Aggregate</code> (Amogh Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1100">CALCITE-1100</a>]
If constant reduction no-ops, don’t create a new <code class="language-plaintext highlighter-rouge">RelNode</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1076">CALCITE-1076</a>]
Update <code class="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder</code>, simplify predicates, and optimize away <code class="language-plaintext 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="language-plaintext highlighter-rouge">Aggregate</code> on empty to empty if its <code class="language-plaintext highlighter-rouge">GROUP BY</code> key is empty</li>
</ul>
<h4 id="fixes-1-7-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1147">CALCITE-1147</a>]
Allow multiple providers for the same kind of metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1153">CALCITE-1153</a>]
Invalid cast created during SQL Join in Oracle (Chris Atkinson)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1146">CALCITE-1146</a>]
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="language-plaintext highlighter-rouge">maven-remote-resources-plugin</code>
</li>
<li>In <code class="language-plaintext highlighter-rouge">TimeUnit</code> add <code class="language-plaintext highlighter-rouge">WEEK</code>, <code class="language-plaintext highlighter-rouge">QUARTER</code>, <code class="language-plaintext highlighter-rouge">MICROSECOND</code> values, and change type of
<code class="language-plaintext highlighter-rouge">multiplier</code>
</li>
<li>Deprecate <code class="language-plaintext highlighter-rouge">SqlLiteral.SqlSymbol</code>; <code class="language-plaintext 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
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1077">CALCITE-1077</a>]
Switch Calcite to the released Avatica 1.7.1</li>
<li>Update <code class="language-plaintext highlighter-rouge">groupId</code> when Calcite POMs reference Avatica modules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1137">CALCITE-1137</a>]
Exclude Avatica from Calcite source release</li>
</ul>
</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="language-plaintext highlighter-rouge">TIMESTAMP</code> values that may be <code class="language-plaintext 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>]
Flat lists for 4, 5, 6 elements</li>
<li>Add Orinoco schema (streaming retail data), accessible from Quidem scripts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1097">CALCITE-1097</a>]
Exception when executing query with too many aggregation columns (chenzhifa)</li>
<li>Add tests for leap days</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-553">CALCITE-553</a>]
In maven, enable compiler profiles by default</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1031">CALCITE-1031</a>]
In prepared statement, <code class="language-plaintext highlighter-rouge">CsvScannableTable.scan</code> is called twice</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1046">CALCITE-1046</a>]
Matchers for testing SQL query results</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1083">CALCITE-1083</a>]
<code class="language-plaintext highlighter-rouge">SqlNode.equalsDeep</code> has O(n ^ 2) performance</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-998">CALCITE-998</a>]
Exception when calling <code class="language-plaintext highlighter-rouge">STDDEV_SAMP</code>, <code class="language-plaintext highlighter-rouge">STDDEV_POP</code> (Matthew Shaer)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1071">CALCITE-1071</a>]
Improve hash functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1072">CALCITE-1072</a>]
CSV adapter incorrectly parses <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> values after noon (Chris Albright)</li>
<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="language-plaintext 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>]
Correlation variable has incorrect row type if it is populated by right side
of a Join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1021">CALCITE-1021</a>]
Upgrade Jackson</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-999">CALCITE-999</a>]
Clean up maven POM files</li>
</ul>
<h4 id="site-1-7-0">Web site and documentation</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1112">CALCITE-1112</a>]
“Powered by Calcite” page</li>
<li>Add SQL-Gremlin to Adapters page</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1090">CALCITE-1090</a>]
Revise Streaming SQL specification</li>
<li>Appoint Josh Elser to PMC</li>
<li>Add “Streaming SQL” talk</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-623">CALCITE-623</a>]
Add a small blurb to the site about Jenkins for CI</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1070">CALCITE-1070</a>]
Upgrade to new Apache logo</li>
<li>Document how to announce a release</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1074">CALCITE-1074</a>]
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>
<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
couple of features make it easier to handle complex queries.</p>
<p>[<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>]
allows you to represent sub-queries (<code class="language-plaintext highlighter-rouge">EXISTS</code>, <code class="language-plaintext highlighter-rouge">IN</code> and scalar) as
<code class="language-plaintext highlighter-rouge">RexSubQuery</code>, a kind of expression in the relational algebra. Until
now, the sql-to-rel converter was burdened with expanding sub-queries,
and people creating relational algebra directly (or via RelBuilder)
could only create ‘flat’ relational expressions. Now we have planner
rules to expand and de-correlate sub-queries.</p>
<p>Metadata is the fuel that powers query planning. It includes
traditional query-planning statistics such as cost and row-count
estimates, but also information such as which columns form unique
keys, unique and what predicates are known to apply to a relational
expression’s output rows. From the predicates we can deduce which
columns are constant, and following
[<a href="https://issues.apache.org/jira/browse/CALCITE-1023">CALCITE-1023</a>]
we can now remove constant columns from <code class="language-plaintext highlighter-rouge">GROUP BY</code> keys.</p>
<p>Metadata is often computed recursively, and it is hard to safely and
efficiently calculate metadata on a graph of <code class="language-plaintext highlighter-rouge">RelNode</code>s that is large,
frequently cyclic, and constantly changing.
[<a href="https://issues.apache.org/jira/browse/CALCITE-794">CALCITE-794</a>]
introduces a context to each metadata call. That context can detect
cyclic metadata calls and produce a safe answer to the metadata
request. It will also allow us to add finer-grained caching and
further tune the metadata layer.</p>
<p>Compatibility: This release is tested
on Linux, Mac OS X, Microsoft Windows;
using Oracle JDK 1.7, 1.8;
other software versions as specified in <code class="language-plaintext highlighter-rouge">pom.xml</code>.</p>
<h4 id="new-features-1-6-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-816">CALCITE-816</a>]
Represent sub-query as a <code class="language-plaintext highlighter-rouge">RexNode</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-854">CALCITE-854</a>]
Implement <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">FETCH/LIMIT</code> and <code class="language-plaintext highlighter-rouge">OFFSET</code> in RelToSqlConverter (Amogh Margoor)</li>
<li>Move code from <code class="language-plaintext highlighter-rouge">JdbcImplementor</code> and <code class="language-plaintext highlighter-rouge">JdbcRules</code> to new class
<code class="language-plaintext highlighter-rouge">SqlImplementor</code>
</li>
<li>Deduce dialect’s null collation from <code class="language-plaintext highlighter-rouge">DatabaseMetaData</code>
</li>
<li>Fix <code class="language-plaintext highlighter-rouge">RelToSqlConverterTest</code> on Windows</li>
</ul>
</li>
<li>Following
[<a href="https://issues.apache.org/jira/browse/CALCITE-897">CALCITE-897</a>],
empty string for <code class="language-plaintext highlighter-rouge">boolean</code> properties means true</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-992">CALCITE-992</a>]
Validate and resolve sequence reference as a <code class="language-plaintext highlighter-rouge">Table</code> object</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-968">CALCITE-968</a>]
Stream-to-relation and stream-to-stream joins (Milinda Pathirage)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1041">CALCITE-1041</a>]
User-defined function that returns <code class="language-plaintext highlighter-rouge">DATE</code> or <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-986">CALCITE-986</a>]
User-defined function with <code class="language-plaintext highlighter-rouge">DATE</code> or <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> parameters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-958">CALCITE-958</a>]
Overloaded Table Functions with named arguments (Julien Le Dem)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-970">CALCITE-970</a>]
If <code class="language-plaintext highlighter-rouge">NULLS FIRST</code>/<code class="language-plaintext highlighter-rouge">NULLS LAST</code> not specified, sort <code class="language-plaintext highlighter-rouge">NULL</code> values high</li>
</ul>
<h4 id="avatica-1-6-0">Avatica features and bug-fixes</h4>
<ul>
<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="language-plaintext 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>]
Handle nulls in <code class="language-plaintext highlighter-rouge">ErrorResponse</code>’s protobuf representation better</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-989">CALCITE-989</a>]
Add server’s address in each response</li>
<li>Fix some bugs found by static analysis</li>
<li>Make all <code class="language-plaintext highlighter-rouge">equals</code> and <code class="language-plaintext 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="language-plaintext highlighter-rouge">JdbcMeta</code>
</li>
</ul>
<h4 id="planner-rules-1-6-0">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1057">CALCITE-1057</a>]
Add <code class="language-plaintext highlighter-rouge">RelMetadataProvider</code> parameter to standard planner <code class="language-plaintext highlighter-rouge">Program</code>s</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1055">CALCITE-1055</a>]
<code class="language-plaintext highlighter-rouge">SubQueryRemoveRule</code> should create <code class="language-plaintext highlighter-rouge">Correlate</code>, not <code class="language-plaintext highlighter-rouge">Join</code>, for correlated
sub-queries</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-978">CALCITE-978</a>]
Enable customizing constant folding rule behavior when a <code class="language-plaintext highlighter-rouge">Filter</code> simplifies
to false (Jason Altekruse)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-977">CALCITE-977</a>]
Make the constant expression <code class="language-plaintext highlighter-rouge">Executor</code> configurable in <code class="language-plaintext highlighter-rouge">FrameworkConfig</code>
(Jason Altekruse)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1058">CALCITE-1058</a>]
Add method <code class="language-plaintext highlighter-rouge">RelBuilder.empty</code>, and rewrite LIMIT 0 and WHERE FALSE to it</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-996">CALCITE-996</a>]
Simplify predicate when we create a <code class="language-plaintext highlighter-rouge">Filter</code> operator</li>
<li>Simplify <code class="language-plaintext highlighter-rouge">RexProgram</code>, in particular <code class="language-plaintext highlighter-rouge">(NOT CASE ... END) IS TRUE</code>, which
occurs in when <code class="language-plaintext 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="language-plaintext 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>]
Planner rule that removes <code class="language-plaintext highlighter-rouge">Aggregate</code> keys that are constant</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1018">CALCITE-1018</a>]
<code class="language-plaintext highlighter-rouge">SortJoinTransposeRule</code> not firing due to <code class="language-plaintext highlighter-rouge">getMaxRowCount(RelSubset)</code> returning
null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1019">CALCITE-1019</a>]
<code class="language-plaintext highlighter-rouge">RelMdUtil.checkInputForCollationAndLimit()</code> was wrong with <code class="language-plaintext highlighter-rouge">alreadySorted</code>
check</li>
<li>Not safe to use ‘=’ for predicates on constant expressions that might be null</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-993">CALCITE-993</a>]
Pull up all constant expressions, not just literals, as predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1005">CALCITE-1005</a>]
Handle null in <code class="language-plaintext highlighter-rouge">getMaxRowCount</code> for <code class="language-plaintext highlighter-rouge">Aggregate</code> (Mike Hinchey)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-995">CALCITE-995</a>]
Sort transpose rules might fall in an infinite loop</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-987">CALCITE-987</a>]
Pushing <code class="language-plaintext highlighter-rouge">LIMIT 0</code> results in an infinite loop (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-988">CALCITE-988</a>]
<code class="language-plaintext highlighter-rouge">FilterToProjectUnifyRule.invert(MutableRel, MutableRel, MutableProject)</code>
works incorrectly</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-969">CALCITE-969</a>]
Composite <code class="language-plaintext highlighter-rouge">EnumerableSort</code> with <code class="language-plaintext highlighter-rouge">DESC</code> wrongly sorts <code class="language-plaintext highlighter-rouge">NULL</code> values low</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-959">CALCITE-959</a>]
Add description to <code class="language-plaintext highlighter-rouge">SortProjectTransposeRule</code>’s constructor</li>
</ul>
<h4 id="fixes-1-6-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1060">CALCITE-1060</a>]
Fix test deadlock by initializing <code class="language-plaintext highlighter-rouge">DriverManager</code> before registering <code class="language-plaintext highlighter-rouge">AlternatingDriver</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1047">CALCITE-1047</a>]
<code class="language-plaintext highlighter-rouge">ChunkList.clear</code> throws <code class="language-plaintext highlighter-rouge">AssertionError</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1053">CALCITE-1053</a>]
CPU spin, <code class="language-plaintext highlighter-rouge">ReflectiveRelMetadataProvider.apply</code> waiting for <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-975">CALCITE-975</a>]
Allow Planner to return validated row type together with SqlNode</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1020">CALCITE-1020</a>]
Add <code class="language-plaintext highlighter-rouge">MILLISECOND</code> in <code class="language-plaintext highlighter-rouge">TimeUnit</code> (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-794">CALCITE-794</a>]
Detect cycles when computing statistics
(<strong>This is a breaking change</strong>.)</li>
<li>Tune algorithm that deduces the return type of <code class="language-plaintext 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="language-plaintext highlighter-rouge">NullPointerException</code> in <code class="language-plaintext highlighter-rouge">SqlJoin.toString()</code>
</li>
<li>Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">ThreadLocal</code> values on exit</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1036">CALCITE-1036</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">Litmus</code> (continuation-passing style for methods that check invariants)</li>
<li>
<code class="language-plaintext 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="language-plaintext highlighter-rouge">Util</code> methods, and upgrade last Maven modules to JDK 1.7</li>
<li>Document <code class="language-plaintext highlighter-rouge">RelOptPredicateList</code>
</li>
<li>Add <code class="language-plaintext highlighter-rouge">ImmutableNullableList.copyOf(Iterable)</code>
</li>
<li>Fix “endPosTable already set” error from <code class="language-plaintext highlighter-rouge">javac</code>
</li>
<li>Add benchmark of <code class="language-plaintext 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="language-plaintext highlighter-rouge">FILTER</code> is <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">ModelHandler</code> calling <code class="language-plaintext highlighter-rouge">SchemaPlus.setCacheEnabled()</code> causes
<code class="language-plaintext highlighter-rouge">UnsupportedOperationException</code> when using <code class="language-plaintext 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>]
Use a custom checker for code style rules that Checkstyle cannot express</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1032">CALCITE-1032</a>]
Verify javadoc of private methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1015">CALCITE-1015</a>]
<code class="language-plaintext highlighter-rouge">OFFSET 0</code> causes <code class="language-plaintext highlighter-rouge">AssertionError</code> (Zhen Wang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1024">CALCITE-1024</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">.oq</code> Quidem files to <code class="language-plaintext highlighter-rouge">.iq</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-980">CALCITE-980</a>]
Fix <code class="language-plaintext highlighter-rouge">AND</code> and <code class="language-plaintext highlighter-rouge">OR</code> implementation in <code class="language-plaintext highlighter-rouge">Enumerable</code> convention</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-459">CALCITE-459</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">Closeable</code> with <code class="language-plaintext 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>]
In <code class="language-plaintext highlighter-rouge">VolcanoPlanner</code>, populate <code class="language-plaintext highlighter-rouge">RelOptRuleCall.nodeInputs</code> for operands of type
“any”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-966">CALCITE-966</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> now clears <code class="language-plaintext highlighter-rouge">ruleNames</code> in order to avoid rule name
conflicting error</li>
<li>Factor user-defined function tests from <code class="language-plaintext highlighter-rouge">JdbcTest</code> to <code class="language-plaintext highlighter-rouge">UdfTest</code>, and classes
into <code class="language-plaintext highlighter-rouge">Smalls</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-974">CALCITE-974</a>]
Exception while validating <code class="language-plaintext 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="language-plaintext highlighter-rouge">timezone</code> connection property to <code class="language-plaintext highlighter-rouge">timeZone</code>
</li>
</ul>
<h4 id="site-1-6-0">Web site and documentation</h4>
<ul>
<li>Avatica
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1033">CALCITE-1033</a>]
Introduce Avatica protobuf documentation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1029">CALCITE-1029</a>]
Add “purpose” descriptions to Avatica JSON docs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-984">CALCITE-984</a>]
Massive cleanup of Avatica JSON docs</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-861">CALCITE-861</a>]
Be explicit that <code class="language-plaintext highlighter-rouge">mvn test</code> needs to be invoked</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-997">CALCITE-997</a>]
Document keywords</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-979">CALCITE-979</a>]
Broken links in web site</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-961">CALCITE-961</a>]
Web site: Add downloads and Apache navigation links</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-960">CALCITE-960</a>]
Download links for pgp, md5, <code class="language-plaintext highlighter-rouge">KEYS</code> files, and direct from mirrors</li>
<li>Remove embedded date-stamps from javadoc; add javadoc for test classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-965">CALCITE-965</a>]
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>
<p>Our first release as a top-level Apache project!</p>
<p>Avatica has undergone major improvements,
including a new RPC layer that uses
<a href="https://developers.google.com/protocol-buffers/">protocol buffers</a>,
support for DML statements, better support for bind variables and
unique identifiers for connections and statements.</p>
<p>There are lots of improvements to planner rules, and the logic
that replaces relational expressions with equivalent materializations.</p>
<p>We continue to find more uses for
<a href="/docs/algebra.html">RelBuilder</a>.
We now recommend that you use <code class="language-plaintext highlighter-rouge">RelBuilder</code> whenever you create
relational expressions within a planner rule; the rule can then be
re-used to create different sub-classes of relational expression, and
the builder will perform simple optimizations automatically.</p>
<p>Using <code class="language-plaintext highlighter-rouge">RelBuilder</code> we built Piglet,
a subset of the classic Hadoop language
<a href="https://pig.apache.org/">Pig</a>.
Pig is particularly interesting because it makes heavy use of nested
multi-sets. You can follow this example to implement your own query
language, and immediately taking advantage of Calcite’s back-ends and
optimizer rules. It’s all just algebra, after all!</p>
<h4 id="new-features-1-5-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-911">CALCITE-911</a>]
Add a variant of <code class="language-plaintext highlighter-rouge">CalciteSchema</code> that does not cache sub-objects</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-845">CALCITE-845</a>]
Derive <code class="language-plaintext highlighter-rouge">SUM</code>’s return type by a customizable policy (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-916">CALCITE-916</a>]
Support table function that implements <code class="language-plaintext highlighter-rouge">ScannableTable</code>
<ul>
<li>Example table function that generates mazes and their solutions</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-941">CALCITE-941</a>]
Named, optional and <code class="language-plaintext highlighter-rouge">DEFAULT</code> arguments to function calls;
support named arguments when calling table functions and table macros</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-910">CALCITE-910</a>]
Improve handling of <code class="language-plaintext highlighter-rouge">ARRAY</code>, <code class="language-plaintext highlighter-rouge">MULTISET</code>, <code class="language-plaintext highlighter-rouge">STRUCT</code> types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-879">CALCITE-879</a>]
<code class="language-plaintext highlighter-rouge">COLLECT</code> aggregate function</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-546">CALCITE-546</a>]
Allow table, column and field called ‘*’</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-893">CALCITE-893</a>]
Theta join in JDBC adapter</li>
<li>Linq4j: Implement <code class="language-plaintext highlighter-rouge">EnumerableDefaults</code> methods (MiNG)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-823">CALCITE-823</a>]
Add <code class="language-plaintext 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="language-plaintext 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>]
Add original SQL string as a field in the parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-819">CALCITE-819</a>]
Add <code class="language-plaintext highlighter-rouge">RelRoot</code>, a contract for the result of a relational expression</li>
</ul>
<h4 id="avatica-1-5-0">Avatica features and bug-fixes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-951">CALCITE-951</a>]
Print the server-side stack in the local exception (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-936">CALCITE-936</a>]
Make HttpServer configurable (Navis Ryu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-903">CALCITE-903</a>]
Enable Avatica client to recover from missing server-side state (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-921">CALCITE-921</a>]
Fix incorrectness when calling <code class="language-plaintext highlighter-rouge">getString()</code> on binary data (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-913">CALCITE-913</a>]
Construct proper <code class="language-plaintext highlighter-rouge">ColumnMetaData</code> for arrays (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-871">CALCITE-871</a>]
In <code class="language-plaintext highlighter-rouge">JdbcMeta</code>, register each statement using an id from a generator (Bruno
Dumon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-645">CALCITE-645</a>]
Implement <code class="language-plaintext highlighter-rouge">AvaticaSqlException</code> to pass server-side exception information to
clients (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-912">CALCITE-912</a>]
Add Avatica <code class="language-plaintext highlighter-rouge">OpenConnectionRequest</code> (Bruno Dumon)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-919">CALCITE-919</a>]
Avoid <code class="language-plaintext highlighter-rouge">setScale</code> on <code class="language-plaintext highlighter-rouge">BigDecimal</code> when scale is 0 (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-927">CALCITE-927</a>]
Call finagle for all calls that return ResultSetResponses (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-705">CALCITE-705</a>]
DML in Avatica, and split <code class="language-plaintext highlighter-rouge">Execute</code> out from <code class="language-plaintext highlighter-rouge">Fetch</code> request (Yeong Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-914">CALCITE-914</a>]
Add <code class="language-plaintext highlighter-rouge">JsonSubType</code> for <code class="language-plaintext highlighter-rouge">ExecuteResponse</code>, and fix JSON docs (Josh Elser)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-905">CALCITE-905</a>]
<code class="language-plaintext highlighter-rouge">getTables</code> returns empty result in <code class="language-plaintext highlighter-rouge">JdbcMeta</code> (Jan Van Besien)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-906">CALCITE-906</a>]
Avatica <code class="language-plaintext highlighter-rouge">JdbcMeta</code> statement IDs are not unique</li>
<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="language-plaintext highlighter-rouge">AvaticaConnection.getAutoCommit</code> throws <code class="language-plaintext 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>
<h4 id="materializations-1-5-0">Materializations</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-952">CALCITE-952</a>]
Organize applicable materializations in reversed topological order (Maryann
Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-890">CALCITE-890</a>]
Register all combinations of materialization substitutions (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-891">CALCITE-891</a>]
When substituting materializations, match <code class="language-plaintext highlighter-rouge">TableScan</code> without <code class="language-plaintext highlighter-rouge">Project</code>
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-890">CALCITE-890</a>]
Register all combinations of materialization substitutions (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-925">CALCITE-925</a>]
Match materialized views when predicates contain strings and ranges (Amogh
Margoor)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-793">CALCITE-793</a>]
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="language-plaintext highlighter-rouge">ArrayTable</code>
</li>
</ul>
<h4 id="planner-rules-1-5-0">Planner rules</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-953">CALCITE-953</a>]
Improve <code class="language-plaintext highlighter-rouge">RelMdPredicates</code> to deal with <code class="language-plaintext highlighter-rouge">RexLiteral</code> (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-939">CALCITE-939</a>]
Variant of <code class="language-plaintext highlighter-rouge">SortUnionTransposeRule</code> for order-preserving <code class="language-plaintext highlighter-rouge">Union</code>
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-931">CALCITE-931</a>]
Wrong collation trait in <code class="language-plaintext highlighter-rouge">SortJoinTransposeRule</code> for right joins
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-938">CALCITE-938</a>]
More accurate rowCount for <code class="language-plaintext highlighter-rouge">Aggregate</code> applied to already unique keys
(Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-935">CALCITE-935</a>]
Improve how <code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> handles duplicate constraints (Pengcheng
Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-922">CALCITE-922</a>]
Extract value of an <code class="language-plaintext highlighter-rouge">INTERVAL</code> literal (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-889">CALCITE-889</a>]
Implement <code class="language-plaintext highlighter-rouge">SortUnionTransposeRule</code> (Pengcheng Xiong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-909">CALCITE-909</a>]
Make <code class="language-plaintext 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="language-plaintext highlighter-rouge">Project</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-895">CALCITE-895</a>]
Simplify “(<code class="language-plaintext highlighter-rouge">CASE</code><code class="language-plaintext highlighter-rouge">END</code>) = constant” inside <code class="language-plaintext highlighter-rouge">AND</code> or <code class="language-plaintext 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="language-plaintext highlighter-rouge">SortJoinTransposeRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-876">CALCITE-876</a>]
After pushing <code class="language-plaintext highlighter-rouge">LogicalProject</code> past <code class="language-plaintext highlighter-rouge">LogicalWindow</code>, adjust references to
constants properly (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-844">CALCITE-844</a>]
Push <code class="language-plaintext highlighter-rouge">Project</code> through <code class="language-plaintext highlighter-rouge">Window</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-841">CALCITE-841</a>]
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="language-plaintext highlighter-rouge">Aggregate</code> with <code class="language-plaintext highlighter-rouge">Filter</code> through <code class="language-plaintext highlighter-rouge">Union(all)</code>
</li>
</ul>
<h4 id="rel-builder-1-5-0">RelBuilder and Piglet</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-933">CALCITE-933</a>]
<code class="language-plaintext highlighter-rouge">RelBuilder.scan()</code> now gives a nice exception if the table does not exist
(Andy Grove)</li>
<li>Fix Piglet <code class="language-plaintext highlighter-rouge">DUMP</code> applied to multisets and structs</li>
<li>Multisets and <code class="language-plaintext highlighter-rouge">COLLECT</code> in Piglet</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-785">CALCITE-785</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">RelNode</code>
</li>
<li>In RelBuilder, build expressions by table alias</li>
</ul>
<h4 id="fixes-1-5-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-948">CALCITE-948</a>]
Indicator columns not preserved by <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-926">CALCITE-926</a>]
Rules fail to match because of missing link to parent equivalence set
(Maryann Xue)</li>
<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="language-plaintext highlighter-rouge">RelFieldTrimmer</code> is applied to <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">LEFT JOIN</code> to <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">createProject</code> in <code class="language-plaintext highlighter-rouge">RelOptUtil</code> should uniquify field names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-792">CALCITE-792</a>]
Obsolete <code class="language-plaintext highlighter-rouge">RelNode.isKey</code> and <code class="language-plaintext 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>
<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="language-plaintext highlighter-rouge">IN</code> sub-query (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-897">CALCITE-897</a>]
Enable debugging using “-Dcalcite.debug”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-885">CALCITE-885</a>]
Add Oracle test environment</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-888">CALCITE-888</a>]
Overlay window loses <code class="language-plaintext highlighter-rouge">PARTITION BY</code> list (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-886">CALCITE-886</a>]
System functions in <code class="language-plaintext highlighter-rouge">GROUP BY</code> clause</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-860">CALCITE-860</a>]
Correct LICENSE file for generated web site</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-882">CALCITE-882</a>]
Allow web site to be deployed not as the root directory of the web server
(Josh Elser)</li>
<li>Upgrade parent POM to apache-17</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>]
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="language-plaintext highlighter-rouge">Stack</code> with <code class="language-plaintext highlighter-rouge">ArrayDeque</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-874">CALCITE-874</a>]
<code class="language-plaintext highlighter-rouge">ReflectiveRelMetadataProvider</code> is not thread-safe</li>
<li>Add <code class="language-plaintext highlighter-rouge">LogicalWindow.create()</code>
</li>
<li>Add <code class="language-plaintext 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="language-plaintext highlighter-rouge">NullPointerException</code> in <code class="language-plaintext highlighter-rouge">JdbcSchema</code>
<ul>
<li>Add table types used by Oracle and DB2</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-862">CALCITE-862</a>]
<code class="language-plaintext highlighter-rouge">JdbcSchema</code> gives <code class="language-plaintext highlighter-rouge">NullPointerException</code> on non-standard column type (Marc
Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-847">CALCITE-847</a>]
<code class="language-plaintext highlighter-rouge">AVG</code> window function in <code class="language-plaintext highlighter-rouge">GROUP BY</code> gives <code class="language-plaintext highlighter-rouge">AssertionError</code> (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-827">CALCITE-827</a>]
Calcite incorrectly permutes columns of <code class="language-plaintext highlighter-rouge">OVER</code> query (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-809">CALCITE-809</a>]
<code class="language-plaintext highlighter-rouge">TableScan</code> does not support large/infinite scans (Jesse Yates)</li>
<li>Lazily create exception only when it needs to be thrown (Marc Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-812">CALCITE-812</a>]
Make JSON reader and writer use properly quoted key names (Marc
Prud’hommeaux)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-820">CALCITE-820</a>]
Validate that window functions have <code class="language-plaintext highlighter-rouge">OVER</code> clause (Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-824">CALCITE-824</a>]
Type inference when converting <code class="language-plaintext 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>
<p>In addition to a large number of bug-fixes and minor enhancements,
this release includes improvements to lattices and materialized views,
and adds a builder API so that you can easily create relational
algebra expressions.</p>
<h4 id="new-features-1-4-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-748">CALCITE-748</a>]
Add <code class="language-plaintext highlighter-rouge">RelBuilder</code>, builder for expressions in relational algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-758">CALCITE-758</a>]
Use more than one lattice in the same query (Rajat Venkatesh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-761">CALCITE-761</a>]
Pre-populated materializations (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-786">CALCITE-786</a>]
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="language-plaintext highlighter-rouge">COUNT</code> using <code class="language-plaintext highlighter-rouge">GROUPING SETS</code>
</li>
<li>Add various <code class="language-plaintext highlighter-rouge">BitSet</code> and <code class="language-plaintext highlighter-rouge">ImmutableBitSet</code> utilities</li>
</ul>
<h4 id="site-1-4-0">Web site updates</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-810">CALCITE-810</a>]
Add committers’ organizations to the web site</li>
<li>Add news item (XLDB best lighting talk), and some talks</li>
<li>Fix javadoc links</li>
<li>Add license notice for web site</li>
<li>Wrap file header in HTML comments</li>
<li>How to release</li>
<li>Move disclaimer out of every page’s footer and into home page and downloads
page</li>
<li>For web site files, add license headers where possible, apache-rat
exclusions otherwise</li>
<li>Calcite DOAP</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-355">CALCITE-355</a>]
Web site</li>
</ul>
<h4 id="fixes-1-4-0">Bug-fixes, API changes and minor enhancements</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-741">CALCITE-741</a>]
Ensure that the source release’s <code class="language-plaintext highlighter-rouge">DEPENDENCIES</code> file includes all module
dependencies</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-743">CALCITE-743</a>]
Ensure only a single source assembly is executed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-850">CALCITE-850</a>]
Remove push down expressions from <code class="language-plaintext highlighter-rouge">FilterJoinRule</code> and create a new rule
for it</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-834">CALCITE-834</a>]
<code class="language-plaintext highlighter-rouge">StackOverflowError</code> getting predicates from the metadata provider</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-833">CALCITE-833</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">LogicalAggregate</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-822">CALCITE-822</a>]
Revert incorrect <code class="language-plaintext 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="language-plaintext highlighter-rouge">ProjectFactory</code> in <code class="language-plaintext highlighter-rouge">AggregateJoinTranposeRule</code> and <code class="language-plaintext highlighter-rouge">FilterJoinRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-821">CALCITE-821</a>]
<code class="language-plaintext highlighter-rouge">Frameworks</code> gives NPE when <code class="language-plaintext highlighter-rouge">FrameworkConfig</code> has no default schema</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-811">CALCITE-811</a>]
Extend <code class="language-plaintext highlighter-rouge">JoinProjectTransposeRule</code> with option to support outer joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-805">CALCITE-805</a>]
Add support for using an alternative grammar specification for left and
right curly braces. Additionally, add support for including addition token
manager declarations</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-803">CALCITE-803</a>]
Add <code class="language-plaintext highlighter-rouge">MYSQL_ANSI</code> Lexing policy</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-717">CALCITE-717</a>]
Compare BINARY and VARBINARY on unsigned byte values (Low Chin Wei)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-814">CALCITE-814</a>]
<code class="language-plaintext highlighter-rouge">RexBuilder</code> reverses precision and scale of <code class="language-plaintext highlighter-rouge">DECIMAL</code> literal</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-813">CALCITE-813</a>]
Upgrade <code class="language-plaintext highlighter-rouge">updateCount</code>, <code class="language-plaintext highlighter-rouge">maxRows</code> from int to long</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-714">CALCITE-714</a>]
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="language-plaintext highlighter-rouge">RelBuilder.avg</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-806">CALCITE-806</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">ProjectMergeRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-791">CALCITE-791</a>]
Optimize <code class="language-plaintext 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="language-plaintext highlighter-rouge">Project</code> using monotonicity (Milinda Pathirage)</li>
<li>Change the argument types of <code class="language-plaintext highlighter-rouge">SqlOperator.getMonotonicity</code> to allow it to be
used for <code class="language-plaintext highlighter-rouge">RexNode</code> as well as <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-787">CALCITE-787</a>]
Star table wrongly assigned to materialized view (Amogh Margoor)</li>
<li>Remove duplicate resources from XML test reference files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-795">CALCITE-795</a>]
Loss of precision when sending a decimal number via the remote JSON
service (Lukáš Lalinský)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-774">CALCITE-774</a>]
When <code class="language-plaintext 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="language-plaintext highlighter-rouge">HAVING count(*) &gt; 1</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-801">CALCITE-801</a>]
<code class="language-plaintext highlighter-rouge">NullPointerException</code> using <code class="language-plaintext 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="language-plaintext highlighter-rouge">MetaImpl.MetaCatalog</code> should expose <code class="language-plaintext highlighter-rouge">TABLE_CAT</code> instead of
<code class="language-plaintext 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="language-plaintext highlighter-rouge">RelBuilder</code>, calling <code class="language-plaintext highlighter-rouge">sort</code> then <code class="language-plaintext highlighter-rouge">limit</code> has same effect as calling
<code class="language-plaintext highlighter-rouge">sortLimit</code>
</li>
<li>Add <code class="language-plaintext highlighter-rouge">Ord.reverse</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-788">CALCITE-788</a>]
Allow <code class="language-plaintext 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>]
<code class="language-plaintext highlighter-rouge">BigDecimal</code> underflow (Li Yang)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-763">CALCITE-763</a>]
Missing translation from <code class="language-plaintext highlighter-rouge">Sort</code> to <code class="language-plaintext highlighter-rouge">MutableSort</code> (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-770">CALCITE-770</a>]
Ignore window aggregates and ranking functions when finding aggregate
functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-765">CALCITE-765</a>]
Set <code class="language-plaintext highlighter-rouge">Content-Type</code> from the RPC server to <code class="language-plaintext highlighter-rouge">application/json</code> (Lukáš Lalinský)</li>
<li>Fix Windows line-endings in <code class="language-plaintext highlighter-rouge">RelBuilderTest</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-727">CALCITE-727</a>]
Constant folding involving <code class="language-plaintext highlighter-rouge">CASE</code> and <code class="language-plaintext 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
materialized views</li>
<li>Test case and workaround for
[<a href="https://issues.apache.org/jira/browse/CALCITE-760">CALCITE-760</a>]
<code class="language-plaintext highlighter-rouge">Aggregate</code> recommender blows up if row count estimate is too high</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-753">CALCITE-753</a>]
<code class="language-plaintext highlighter-rouge">Aggregate</code> operators may derive row types with duplicate column names</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-457">CALCITE-457</a>]
Push condition of non-ansi join into join operator</li>
<li>Change jsonRequest encoding to UTF-8 (Guitao Ding)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-757">CALCITE-757</a>]
Fix expansion of view of another view (Venki Korukanti)</li>
<li>Fix coverity warnings</li>
<li>Remove deprecated <code class="language-plaintext highlighter-rouge">SqlTypeName</code> methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-754">CALCITE-754</a>]
Validator error when resolving <code class="language-plaintext highlighter-rouge">OVER</code> clause of <code class="language-plaintext highlighter-rouge">JOIN</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-429">CALCITE-429</a>]
Cardinality provider for use by lattice algorithm</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-740">CALCITE-740</a>]
Redundant <code class="language-plaintext highlighter-rouge">WHERE</code> clause causes wrong result in MongoDB adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-665">CALCITE-665</a>]
<code class="language-plaintext highlighter-rouge">ClassCastException</code> in MongoDB adapter</li>
<li>Separate <code class="language-plaintext highlighter-rouge">TableFactory</code> from suggested table name, so one <code class="language-plaintext highlighter-rouge">TableFactory</code> can be
used for several tables</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-749">CALCITE-749</a>]
Add <code class="language-plaintext highlighter-rouge">MaterializationService.TableFactory</code> (Rajat Venkatesh)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-718">CALCITE-718</a>]
Enable fetch to work for <code class="language-plaintext highlighter-rouge">Statement.execute()</code> for Avatica (Xavier Leong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-712">CALCITE-712</a>]
Obey <code class="language-plaintext highlighter-rouge">setMaxRows</code> for statement execute (Xavier Leong)</li>
<li>Add <code class="language-plaintext highlighter-rouge">LoggingLocalJsonService</code>, to make it easier to test that JDBC requests
cause the right RPCs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-708">CALCITE-708</a>]
Implement <code class="language-plaintext highlighter-rouge">DatabaseMetaData.getTypeInfo</code> (Xavier Leong)</li>
<li>Enable Travis CI on new-master branch and bug-fix branches named
“NNN-description”</li>
<li>Clean up</li>
<li>Upgrade tpcds</li>
<li>Make <code class="language-plaintext highlighter-rouge">JdbcTest.testVersion</code> more permissive, so that <code class="language-plaintext highlighter-rouge">version.major</code> and
<code class="language-plaintext highlighter-rouge">version.minor</code> can be set just before a release, rather than just after as at
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>
<p>Mainly bug-fixes, but this release adds support for
<a href="https://issues.apache.org/jira/browse/CALCITE-505">modifiable views</a>
and
<a href="https://issues.apache.org/jira/browse/CALCITE-704">filtered aggregate functions</a>
and various improvements to Avatica.</p>
<h4 id="new-features-1-3-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-505">CALCITE-505</a>]
Support modifiable view</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-704">CALCITE-704</a>]
<code class="language-plaintext highlighter-rouge">FILTER</code> clause for aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-522">CALCITE-522</a>]
In remote JDBC driver, transmit static database properties as a map</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-661">CALCITE-661</a>]
Remote fetch in Calcite JDBC driver</li>
<li>Support Date, Time, Timestamp parameters</li>
</ul>
<h4 id="api-1-3-0">API changes</h4>
<ul>
<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="language-plaintext 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="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">SemiJoin</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-674">CALCITE-674</a>]
Add a <code class="language-plaintext highlighter-rouge">SWAP_OUTER</code> static instance to <code class="language-plaintext highlighter-rouge">JoinCommuteRule</code> (Maryann Xue)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-735">CALCITE-735</a>]
<code class="language-plaintext highlighter-rouge">Primitive.DOUBLE.min</code> should be large and negative</li>
</ul>
<h4 id="fixes-1-3-0">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-688">CALCITE-688</a>]
<code class="language-plaintext highlighter-rouge">splitCondition</code> does not behave correctly when one side of the condition
references columns from different inputs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-259">CALCITE-259</a>]
Using sub-queries in <code class="language-plaintext highlighter-rouge">CASE</code> statement against JDBC tables generates invalid
Oracle SQL (Yeong Wei)</li>
<li>In sample code in README.md, rename optiq to calcite (Ethan)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-720">CALCITE-720</a>]
<code class="language-plaintext highlighter-rouge">VolcanoPlanner.ambitious</code> comment doc is inconsistent (Santiago M. Mola)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-729">CALCITE-729</a>]
<code class="language-plaintext highlighter-rouge">IndexOutOfBoundsException</code> in <code class="language-plaintext highlighter-rouge">ROLLUP</code> query on JDBC data source</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-733">CALCITE-733</a>]
Multiple distinct-<code class="language-plaintext 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="language-plaintext highlighter-rouge">ClassCastException</code> in table from <code class="language-plaintext 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>]
Document lattices</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-515">CALCITE-515</a>]
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="language-plaintext highlighter-rouge">SELECT</code> or <code class="language-plaintext highlighter-rouge">HAVING</code> clause gives
<code class="language-plaintext highlighter-rouge">AssertionError</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-694">CALCITE-694</a>]
Scan <code class="language-plaintext highlighter-rouge">HAVING</code> clause for sub-queries and <code class="language-plaintext highlighter-rouge">IN</code>-lists (Hsuan-Yi Chu)</li>
<li>Upgrade hydromatic-resource-maven-plugin</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-710">CALCITE-710</a>]
Identical conditions in the <code class="language-plaintext highlighter-rouge">WHERE</code> clause cause <code class="language-plaintext highlighter-rouge">AssertionError</code> (Sean
Hsuan-Yi Chu)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-695">CALCITE-695</a>]
Do not add <code class="language-plaintext highlighter-rouge">SINGLE_VALUE</code> aggregate function to a sub-query that will never
return more than one row (Hsuan-Yi Chu)</li>
<li>Add tests for scalar sub-queries, including test cases for
[<a href="https://issues.apache.org/jira/browse/CALCITE-709">CALCITE-709</a>]
Errors with <code class="language-plaintext highlighter-rouge">LIMIT</code> inside scalar sub-query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-702">CALCITE-702</a>]
Add validator test for monotonic expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-699">CALCITE-699</a>]
In Avatica, synchronize access to Calendar</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-700">CALCITE-700</a>]
Pass time zone into tests</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-698">CALCITE-698</a>]
For <code class="language-plaintext highlighter-rouge">GROUP BY ()</code>, <code class="language-plaintext highlighter-rouge">areColumnsUnique()</code> should return true for any key</li>
<li>Disable tests that fail under JDK 1.7 due to
[<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>]</li>
<li>Add “getting started” to HOWTO</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-692">CALCITE-692</a>]
Add back sqlline as a dependency</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-677">CALCITE-677</a>]
<code class="language-plaintext highlighter-rouge">RemoteDriverTest.testTypeHandling</code> fails east of Greenwich</li>
<li>Disable test for
[<a href="https://issues.apache.org/jira/browse/CALCITE-687">CALCITE-687</a>]
Make <code class="language-plaintext highlighter-rouge">RemoteDriverTest.testStatementLifecycle</code> thread-safe</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-686">CALCITE-686</a>]
<code class="language-plaintext highlighter-rouge">SqlNode.unparse</code> produces invalid SQL</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-507">CALCITE-507</a>]
Update HOWTO.md with running integration tests</li>
<li>Add H2 integration test</li>
<li>Add PostgreSQL integration test</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-590">CALCITE-590</a>]
Update MongoDB test suite to calcite-test-dataset</li>
<li>Add <code class="language-plaintext highlighter-rouge">CalciteAssert.assertArrayEqual</code> for more user-friendly asserts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-585">CALCITE-585</a>]
Avatica JDBC methods should throw <code class="language-plaintext highlighter-rouge">SQLFeatureNotSupportedException</code> (Ng Jiunn
Jye)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-671">CALCITE-671</a>]
<code class="language-plaintext highlighter-rouge">ByteString</code> does not deserialize properly as a <code class="language-plaintext highlighter-rouge">FetchRequest</code> parameter value</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-676">CALCITE-676</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext highlighter-rouge">GROUPING SETS</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-678">CALCITE-678</a>]
<code class="language-plaintext highlighter-rouge">SemiJoinRule</code> mixes up fields when <code class="language-plaintext 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>
<p>A short release, less than a month after 1.1.</p>
<p>There have been many changes to Avatica, hugely improving its coverage of the
JDBC API and overall robustness. A new provider, <code class="language-plaintext highlighter-rouge">JdbcMeta</code>, allows
you to remote an existing JDBC driver.</p>
<p>[<a href="https://issues.apache.org/jira/browse/CALCITE-606">CALCITE-606</a>]
improves how the planner propagates traits such as collation and
distribution among relational expressions.</p>
<p>[<a href="https://issues.apache.org/jira/browse/CALCITE-613">CALCITE-613</a>]
and [<a href="https://issues.apache.org/jira/browse/CALCITE-307">CALCITE-307</a>]
improve implicit and explicit conversions in SQL.</p>
<h4 id="new-features-1-2-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-366">CALCITE-366</a>]
Support Aggregate push down in bushy joins (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-613">CALCITE-613</a>]
Implicitly convert character values in comparisons</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-307">CALCITE-307</a>]
Implement <code class="language-plaintext highlighter-rouge">CAST</code> between date-time types</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-634">CALCITE-634</a>]
Allow <code class="language-plaintext highlighter-rouge">ORDER BY</code> aggregate function in <code class="language-plaintext highlighter-rouge">SELECT DISTINCT</code>, provided that it
occurs in <code class="language-plaintext highlighter-rouge">SELECT</code> clause (Sean Hsuan-Yi Chu)</li>
<li>In linq4j, implement <code class="language-plaintext highlighter-rouge">firstOrDefault</code>, <code class="language-plaintext highlighter-rouge">single</code>, and <code class="language-plaintext highlighter-rouge">singleOrDefault</code> methods
(Daniel Cooper)</li>
<li>JDBC adapter
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-631">CALCITE-631</a>]
Push theta joins down to JDBC adapter (Ng Jiunn Jye)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-657">CALCITE-657</a>]
<code class="language-plaintext highlighter-rouge">NullPointerException</code> when executing <code class="language-plaintext highlighter-rouge">JdbcAggregate.implement</code>
method (Yuri Au Yong)</li>
</ul>
</li>
<li>Metadata
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-659">CALCITE-659</a>]
Missing types in <code class="language-plaintext highlighter-rouge">averageTypeValueSize</code> method in <code class="language-plaintext highlighter-rouge">RelMdSize</code>
(Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-650">CALCITE-650</a>]
Add metadata for average size of a tuple in <code class="language-plaintext highlighter-rouge">SemiJoin</code> (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-649">CALCITE-649</a>]
Extend <code class="language-plaintext highlighter-rouge">splitCondition</code> method in <code class="language-plaintext highlighter-rouge">RelOptUtil</code> to handle multiple
joins on the same key (Jesus Camacho Rodriguez)</li>
</ul>
</li>
</ul>
<h4 id="avatica-1-2-0">Avatica features and bug-fixes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-670">CALCITE-670</a>]
<code class="language-plaintext highlighter-rouge">AvaticaPreparedStatement</code> should support <code class="language-plaintext highlighter-rouge">execute()</code> and
<code class="language-plaintext highlighter-rouge">executeUpdate()</code> (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-641">CALCITE-641</a>]
Implement logging throughout Avatica server (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-646">CALCITE-646</a>]
<code class="language-plaintext highlighter-rouge">AvaticaStatement.execute</code> method broken over remote JDBC (Yeong Wei
and Julian Hyde)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-660">CALCITE-660</a>]
Improve Avatica date support</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-655">CALCITE-655</a>]
Implement <code class="language-plaintext highlighter-rouge">ConnectionSync</code> RPC (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-654">CALCITE-654</a>]
Tighten up <code class="language-plaintext highlighter-rouge">AvaticaStatement.execute</code> semantics (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-658">CALCITE-658</a>]
Cleanup dependency usage (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-652">CALCITE-652</a>]
Move server pieces of <code class="language-plaintext highlighter-rouge">avatica</code> into <code class="language-plaintext highlighter-rouge">avatica-server</code> (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-651">CALCITE-651</a>]
In <code class="language-plaintext highlighter-rouge">JdbcMeta</code>, convert property definitions to an enum (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-640">CALCITE-640</a>]
Avatica server should expire stale connections/statements (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-639">CALCITE-639</a>]
Open up permissions on avatica server components (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-637">CALCITE-637</a>]
Implement Avatica <code class="language-plaintext highlighter-rouge">CloseConnection</code> RPC (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-636">CALCITE-636</a>]
Connection isolation for Avatica clients (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-626">CALCITE-626</a>]
Implement <code class="language-plaintext highlighter-rouge">CloseStatement</code> RPC (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-630">CALCITE-630</a>]
Flesh out <code class="language-plaintext highlighter-rouge">AvaticaParameter.setObject</code> (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-627">CALCITE-627</a>]
Add Avatica support for <code class="language-plaintext highlighter-rouge">getTableTypes</code>, <code class="language-plaintext highlighter-rouge">getColumns</code> (Xavier FH Leong)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-618">CALCITE-618</a>]
Add Avatica support for <code class="language-plaintext highlighter-rouge">getTables</code> (Julian Hyde and Nick Dimiduk)</li>
</ul>
<h4 id="api-1-2-0">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-617">CALCITE-617</a>]
Check at initialization time in <code class="language-plaintext highlighter-rouge">CachingInvocationHandler</code> that MD provider
is not null (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-638">CALCITE-638</a>]
SQL standard <code class="language-plaintext highlighter-rouge">REAL</code> is 4 bytes, <code class="language-plaintext highlighter-rouge">FLOAT</code> is 8 bytes</li>
</ul>
<h4 id="fixes-1-2-0">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-672">CALCITE-672</a>]
SQL <code class="language-plaintext highlighter-rouge">ANY</code> type should be nullable (Jinfeng Ni)</li>
<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="language-plaintext highlighter-rouge">NullPointerException</code> in <code class="language-plaintext 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="language-plaintext highlighter-rouge">ORDER BY</code> clause is used with <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-644">CALCITE-644</a>]
Increase check style line limit to 100 chars (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-648">CALCITE-648</a>]
Update <code class="language-plaintext highlighter-rouge">ProjectMergeRule</code> description for new naming convention (Jinfeng Ni)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-625">CALCITE-625</a>]
<code class="language-plaintext highlighter-rouge">README.md</code> linking to the wrong page of <code class="language-plaintext highlighter-rouge">optiq-csv</code> (hongbin ma)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-632">CALCITE-632</a>]
Sort order returned by <code class="language-plaintext highlighter-rouge">SUPERCLASS_COMPARATOR</code> in
<code class="language-plaintext 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="language-plaintext 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>]
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="language-plaintext 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="language-plaintext highlighter-rouge">IN</code> clause in <code class="language-plaintext highlighter-rouge">CASE</code> in <code class="language-plaintext highlighter-rouge">GROUP BY</code> gives <code class="language-plaintext 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>
<p>This Calcite release makes it possible to exploit physical properties
of relational expressions to produce more efficient plans, introducing
collation and distribution as traits, <code class="language-plaintext highlighter-rouge">Exchange</code> relational operator,
and several new forms of metadata.</p>
<p>We add experimental support for streaming SQL.</p>
<p>This release drops support for JDK 1.6; Calcite now requires 1.7 or
later.</p>
<p>We have introduced static <code class="language-plaintext highlighter-rouge">create</code> methods for many sub-classes of
<code class="language-plaintext highlighter-rouge">RelNode</code>. We strongly suggest that you use these rather than
calling constructors directly.</p>
<h4 id="new-features-1-1-0">New features</h4>
<ul>
<li>SQL
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-602">CALCITE-602</a>]
Streaming queries (experimental)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-588">CALCITE-588</a>]
Allow <code class="language-plaintext highlighter-rouge">TableMacro</code> to consume maps and collections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-583">CALCITE-583</a>]
Operator <code class="language-plaintext highlighter-rouge">||</code> mishandles <code class="language-plaintext highlighter-rouge">ANY</code> type (Sean Hsuan-Yi Chu)</li>
</ul>
</li>
<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="language-plaintext highlighter-rouge">ProjectableFilterableTable</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-600">CALCITE-600</a>]
Use <code class="language-plaintext highlighter-rouge">SetOpFactory</code> in rules containing <code class="language-plaintext highlighter-rouge">Union</code> operator (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-603">CALCITE-603</a>]
Metadata providers for size, memory, parallelism
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-607">CALCITE-607</a>]
Change visibility of constructor in metadata providers for size,
memory, parallelism (Jesus Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-608">CALCITE-608</a>]
Exception is thrown when <code class="language-plaintext highlighter-rouge">RelMdDistribution</code> for <code class="language-plaintext highlighter-rouge">Project</code>
operator is called (Jesus Camacho Rodriguez)</li>
</ul>
</li>
</ul>
</li>
<li>Collation and distribution as traits
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-88">CALCITE-88</a>]
Add collation as a trait and a kind of <code class="language-plaintext highlighter-rouge">RelNode</code> metadata</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>]
<code class="language-plaintext highlighter-rouge">ArrayIndexOutOfBoundsException</code> when deducing collation (Aman Sinha)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-581">CALCITE-581</a>]
Add <code class="language-plaintext highlighter-rouge">LogicalSort</code> relational expression, and make <code class="language-plaintext highlighter-rouge">Sort</code> abstract</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-526">CALCITE-526</a>]
Add <code class="language-plaintext highlighter-rouge">EnumerableMergeJoin</code>, which exploits sorted inputs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-71">CALCITE-71</a>]
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="language-plaintext highlighter-rouge">RelCollation</code> trait and <code class="language-plaintext highlighter-rouge">AbstractRelNode.getCollationList</code> consistent</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-254">CALCITE-254</a>]
Propagate <code class="language-plaintext highlighter-rouge">RelCollation</code> on aliased columns in <code class="language-plaintext highlighter-rouge">JoinRule</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-569">CALCITE-569</a>]
<code class="language-plaintext highlighter-rouge">ArrayIndexOutOfBoundsException</code> when deducing collation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-594">CALCITE-594</a>]
Add <code class="language-plaintext highlighter-rouge">RelDistribution</code> trait and <code class="language-plaintext highlighter-rouge">Exchange</code> relational expression</li>
</ul>
</li>
</ul>
<h4 id="api-1-1-0">API changes</h4>
<ul>
<li>Many sub-classes of <code class="language-plaintext highlighter-rouge">RelNode</code> now have a static <code class="language-plaintext highlighter-rouge">create</code> method
which automatically sets up traits such as collation and
distribution. The constructors are not marked deprecated, but we
strongly suggest that you use the <code class="language-plaintext highlighter-rouge">create</code> method if it exists.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-591">CALCITE-591</a>]
Drop support for Java 1.6 (and JDBC 4.0)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-587">CALCITE-587</a>]
Upgrade <code class="language-plaintext highlighter-rouge">jetty-server</code> to 9.2.7.v20150116 and port avatica-server <code class="language-plaintext highlighter-rouge">HttpServer</code>
(Trevor Hartman)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-577">CALCITE-577</a>]
Revert temporary API changes introduced in
[<a href="https://issues.apache.org/jira/browse/CALCITE-575">CALCITE-575</a>]</li>
<li>Add means to create <code class="language-plaintext highlighter-rouge">Context</code> instances by wrapping objects and by chaining
contexts</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-599">CALCITE-599</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">RelOptUtil.createProject</code> and <code class="language-plaintext highlighter-rouge">createRename</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-572">CALCITE-572</a>]
Remove <code class="language-plaintext highlighter-rouge">Project.flags</code> (methods are deprecated, to be removed before 2.0)</li>
</ul>
<h4 id="fixes-1-1-0">Bug-fixes and internal changes</h4>
<ul>
<li>Remove the <code class="language-plaintext highlighter-rouge">LICENSE</code> file of calcite-example-csv (the former
optiq-csv) and move its history into main history</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-615">CALCITE-615</a>]
AvaticaParameter should be Jackson serializable (Nick Dimiduk)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-612">CALCITE-612</a>]
Update AvaticaStatement to handle cancelled queries (Parth Chandra)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-605">CALCITE-605</a>]
Reduce dependency on third-party maven repositories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-611">CALCITE-611</a>]
Method <code class="language-plaintext highlighter-rouge">setAggChildKeys</code> should take into account indicator columns of
<code class="language-plaintext 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="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> requires planner to have an <code class="language-plaintext highlighter-rouge">Executor</code>
</li>
<li>Refactor <code class="language-plaintext 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="language-plaintext highlighter-rouge">Frameworks</code> should expand identifiers (Jinfeng Ni)</li>
<li>Australian time-zones changed in <code class="language-plaintext 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="language-plaintext highlighter-rouge">Integer</code> column throws <code class="language-plaintext 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="language-plaintext 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>
<p>Calcite’s first major release.</p>
<p>Since the previous release we have re-organized the into the <code class="language-plaintext highlighter-rouge">org.apache.calcite</code>
namespace. To make migration of your code easier, we have described the
<a href="https://issues.apache.org/jira/secure/attachment/12681620/mapping.txt">mapping from old to new class names</a>
as an attachment to
[<a href="https://issues.apache.org/jira/browse/CALCITE-296">CALCITE-296</a>].</p>
<p>The release adds SQL support for <code class="language-plaintext highlighter-rouge">GROUPING SETS</code>, <code class="language-plaintext highlighter-rouge">EXTEND</code>, <code class="language-plaintext highlighter-rouge">UPSERT</code> and sequences;
a remote JDBC driver;
improvements to the planner engine and built-in planner rules;
improvements to the algorithms that implement the relational algebra,
including an interpreter that can evaluate queries without compilation;
and fixes about 30 bugs.</p>
<h4 id="new-features-1-0-0">New features</h4>
<ul>
<li>SQL
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-494">CALCITE-494</a>]
Support <code class="language-plaintext highlighter-rouge">NEXT</code>/<code class="language-plaintext highlighter-rouge">CURRENT VALUE FOR</code> syntax for using sequences</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-492">CALCITE-492</a>]
Support <code class="language-plaintext highlighter-rouge">UPSERT</code> statement in parser</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-493">CALCITE-493</a>]
Add <code class="language-plaintext highlighter-rouge">EXTEND</code> clause, for defining columns and their types at query/DML time</li>
<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="language-plaintext 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="language-plaintext highlighter-rouge">LATERAL</code> expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-282">CALCITE-282</a>]
Add <code class="language-plaintext highlighter-rouge">{fn QUARTER(date)}</code> function (Benoy Antony)</li>
<li>Grouping sets
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-370">CALCITE-370</a>]
Support <code class="language-plaintext highlighter-rouge">GROUPING SETS</code>, <code class="language-plaintext highlighter-rouge">CUBE</code>, <code class="language-plaintext highlighter-rouge">ROLLUP</code> in SQL and algebra</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-512">CALCITE-512</a>]
Add <code class="language-plaintext highlighter-rouge">GROUP_ID</code>,<code class="language-plaintext highlighter-rouge">GROUPING_ID</code>, <code class="language-plaintext highlighter-rouge">GROUPING</code> functions</li>
</ul>
</li>
</ul>
</li>
<li>Planner rule improvements
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-92">CALCITE-92</a>]
Optimize away <code class="language-plaintext highlighter-rouge">Project</code> that merely renames fields</li>
<li>Detect and merge duplicate predicates <code class="language-plaintext highlighter-rouge">AND(x, y, x)</code> to <code class="language-plaintext 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="language-plaintext 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>
<li>Grouping sets
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-542">CALCITE-542</a>]
Support for <code class="language-plaintext highlighter-rouge">Aggregate</code> with grouping sets in <code class="language-plaintext highlighter-rouge">RelMdColumnOrigins</code> (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-533">CALCITE-533</a>]
Support for grouping sets in <code class="language-plaintext highlighter-rouge">FilterAggregateTransposeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-532">CALCITE-532</a>]
Support for grouping sets in <code class="language-plaintext highlighter-rouge">AggregateFilterTransposeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-513">CALCITE-513</a>]
Support for grouping sets in <code class="language-plaintext highlighter-rouge">AggregateProjectMergeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-510">CALCITE-510</a>]
Support for grouping sets in <code class="language-plaintext highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> (Jesus
Camacho Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-502">CALCITE-502</a>]
Support for grouping sets in <code class="language-plaintext highlighter-rouge">AggregateUnionTransposeRule</code> (Jesus Camacho
Rodriguez)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-503">CALCITE-503</a>]
Tests to check rules on <code class="language-plaintext highlighter-rouge">Aggregate</code> operator without grouping sets (Jesus
Camacho Rodriguez)</li>
</ul>
</li>
</ul>
</li>
<li>Algorithms
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-451">CALCITE-451</a>]
Implement theta join, inner and outer, in enumerable convention</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-489">CALCITE-489</a>]
Update <code class="language-plaintext highlighter-rouge">Correlate</code> mechanics and implement <code class="language-plaintext highlighter-rouge">EnumerableCorrelate</code> (aka nested
loops join)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-544">CALCITE-544</a>]
Implement <code class="language-plaintext highlighter-rouge">Union</code> in interpreter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-562">CALCITE-562</a>]
Implement inner <code class="language-plaintext highlighter-rouge">Join</code> in interpreter and improve handling of scalar expressions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-543">CALCITE-543</a>]
Implement <code class="language-plaintext highlighter-rouge">Aggregate</code> (including <code class="language-plaintext highlighter-rouge">GROUPING SETS</code>) in interpreter (Jacques
Nadeau)</li>
<li>In progress towards
[<a href="https://issues.apache.org/jira/browse/CALCITE-558">CALCITE-558</a>]
add <code class="language-plaintext highlighter-rouge">BINDABLE</code> convention (but <code class="language-plaintext highlighter-rouge">ENUMERABLE</code> is still the default), and add
<code class="language-plaintext highlighter-rouge">ArrayBindable</code> and <code class="language-plaintext highlighter-rouge">Scalar</code> interfaces</li>
</ul>
</li>
<li>Remote driver
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-93">CALCITE-93</a>]
Calcite RPC server</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-94">CALCITE-94</a>]
Remote JDBC driver</li>
<li>Make <code class="language-plaintext highlighter-rouge">JsonHandler</code> and <code class="language-plaintext highlighter-rouge">JsonService</code> thread-safe</li>
</ul>
</li>
</ul>
<h4 id="api-1-0-0">API changes</h4>
<ul>
<li>The great code re-org
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-296">CALCITE-296</a>]
Re-organize package structure</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-419">CALCITE-419</a>]
Naming convention for planner rules</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-306">CALCITE-306</a>]
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="language-plaintext highlighter-rouge">ImmutableBitSet</code> and replace uses of <code class="language-plaintext highlighter-rouge">BitSet</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-479">CALCITE-479</a>]
Migrate <code class="language-plaintext highlighter-rouge">RelNode.getChildExps</code> to <code class="language-plaintext highlighter-rouge">RelNode.accept(RexShuttle)</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-527">CALCITE-527</a>]
Drop <code class="language-plaintext highlighter-rouge">rowType</code> field and constructor/copy argument of <code class="language-plaintext highlighter-rouge">Calc</code>
</li>
</ul>
</li>
<li>Add linq4j and example-csv modules
<ul>
<li>Remove unused packages in linq4j, and fix checkstyle issues in linq4j and csv</li>
<li>Add calcite-linq4j and calcite-example-csv as POM sub-modules</li>
<li>Import ‘optiq-csv’ project as ‘example/csv/’, and add Apache headers</li>
<li>Import ‘linq4j’ project, and add Apache headers</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-478">CALCITE-478</a>]
Move CSV tutorial (Siva Narayanan)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-464">CALCITE-464</a>]
Make parser accept configurable max length for SQL identifier</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-465">CALCITE-465</a>]
Remove <code class="language-plaintext highlighter-rouge">OneRow</code> and <code class="language-plaintext highlighter-rouge">Empty</code> relational expressions; <code class="language-plaintext highlighter-rouge">Values</code> will suffice</li>
</ul>
<h4 id="fixes-1-0-0">Bug-fixes and internal changes</h4>
<ul>
<li>Build improvements
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-541">CALCITE-541</a>]
Update maven-source-plugin to 2.4 to get speedup in jdk 1.8</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-537">CALCITE-537</a>]
Skip overwrite of <code class="language-plaintext highlighter-rouge">NOTICE</code>, <code class="language-plaintext highlighter-rouge">DEPENDENCIES</code>, and <code class="language-plaintext highlighter-rouge">LICENSE</code> files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-538">CALCITE-538</a>]
Generate <code class="language-plaintext 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="language-plaintext 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="language-plaintext highlighter-rouge">git.properties</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-536">CALCITE-536</a>]
Add <code class="language-plaintext highlighter-rouge">@PackageMarker</code> to <code class="language-plaintext highlighter-rouge">package-info.java</code> so maven-compiler skips
compilation when the sources are unchanged</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-535">CALCITE-535</a>]
Support skip overwrite in hydromatic-resource</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-582">CALCITE-582</a>]
<code class="language-plaintext highlighter-rouge">EnumerableTableScan</code> broken when table has single column</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-575">CALCITE-575</a>]
Variant of <code class="language-plaintext highlighter-rouge">ProjectRemoveRule</code> that considers a project trivial only if its
field names are identical (John Pullokkaran)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-571">CALCITE-571</a>]
<code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> tries to reduce <code class="language-plaintext highlighter-rouge">SemiJoin</code> condition to non-equi
condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-568">CALCITE-568</a>]
Upgrade to a version of <code class="language-plaintext highlighter-rouge">pentaho-aggdesigner</code> that does not pull in
<code class="language-plaintext highlighter-rouge">servlet-api</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-567">CALCITE-567</a>]
Make <code class="language-plaintext highlighter-rouge">quidem</code> dependency have scope “test”</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-570">CALCITE-570</a>]
<code class="language-plaintext highlighter-rouge">ReduceExpressionsRule</code> throws “duplicate key” exception</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-561">CALCITE-561</a>]
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="language-plaintext 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>]
Teach <code class="language-plaintext highlighter-rouge">CalciteAssert</code> to respect multiple settings</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-516">CALCITE-516</a>]
<code class="language-plaintext highlighter-rouge">GROUP BY</code> on a <code class="language-plaintext highlighter-rouge">CASE</code> expression containing <code class="language-plaintext highlighter-rouge">IN</code> predicate fails (Aman Sinha)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-552">CALCITE-552</a>]
Upgrade tpcds (which depends on an old version of guava)</li>
<li>Copy identifier when fully-qualifying, so column aliases have the right case</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-548">CALCITE-548</a>]
Extend <code class="language-plaintext highlighter-rouge">induce</code> method to return <code class="language-plaintext highlighter-rouge">CUBE</code> and <code class="language-plaintext highlighter-rouge">ROLLUP</code> (Jesus Camacho Rodriguez)
<ul>
<li>Simplify <code class="language-plaintext highlighter-rouge">Group.induce</code> by assuming that group sets are sorted</li>
</ul>
</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-212">CALCITE-212</a>]
Join condition with <code class="language-plaintext 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>
<li>Add more unit tests (Jinfeng Ni)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-448">CALCITE-448</a>]
<code class="language-plaintext highlighter-rouge">FilterIntoJoinRule</code> creates filters containing invalid <code class="language-plaintext highlighter-rouge">RexInputRef</code>
</li>
<li>When registering a <code class="language-plaintext highlighter-rouge">RelNode</code>, be tolerant if it is equivalent to a <code class="language-plaintext highlighter-rouge">RelNode</code>
with different traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-547">CALCITE-547</a>]
Set nullability while inferring return type of <code class="language-plaintext highlighter-rouge">item(any,...)</code> operator</li>
<li>In Travis CI, enable containers, and cache <code class="language-plaintext highlighter-rouge">.m2</code> directory</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-534">CALCITE-534</a>]
Missing implementation of <code class="language-plaintext highlighter-rouge">ResultSetMetaData.getColumnClassName</code> (Knut
Forkalsrud)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-506">CALCITE-506</a>]
Update <code class="language-plaintext highlighter-rouge">EnumerableRelImplementor.stash</code> so it is suitable for all kinds of
classes</li>
<li>Merge join algorithm for <code class="language-plaintext highlighter-rouge">Enumerable</code>s</li>
<li>Efficient <code class="language-plaintext highlighter-rouge">Enumerable</code> over random-access list</li>
<li>Add a test that calls all functions with arguments of all types that they
claim to accept</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-511">CALCITE-511</a>]
<code class="language-plaintext highlighter-rouge">copy</code> method in <code class="language-plaintext highlighter-rouge">LogicalAggregate</code> not copying the indicator value properly</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="language-plaintext highlighter-rouge">RelMdColumnUniqueness</code> uses <code class="language-plaintext highlighter-rouge">ImmutableBitSet.Builder</code> twice, gets
<code class="language-plaintext highlighter-rouge">NullPointerException</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-488">CALCITE-488</a>]
<code class="language-plaintext highlighter-rouge">Enumerable&lt;Holder&gt;</code> does not work if where <code class="language-plaintext highlighter-rouge">Holder</code> is a custom class
with a single field; Calcite tries to treat it as <code class="language-plaintext highlighter-rouge">SCALAR</code> due to premature
<code class="language-plaintext 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="language-plaintext highlighter-rouge">ResultSet.next()</code> is called after <code class="language-plaintext highlighter-rouge">close()</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-403">CALCITE-403</a>]
<code class="language-plaintext highlighter-rouge">Enumerable</code> gives <code class="language-plaintext highlighter-rouge">NullPointerException</code> with <code class="language-plaintext highlighter-rouge">NOT</code> on nullable expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-469">CALCITE-469</a>]
Update example/csv README.md instructions</li>
<li>Document <code class="language-plaintext highlighter-rouge">WITH</code>, <code class="language-plaintext highlighter-rouge">LATERAL</code>, <code class="language-plaintext highlighter-rouge">GROUPING SETS</code>, <code class="language-plaintext highlighter-rouge">CUBE</code>, <code class="language-plaintext highlighter-rouge">ROLLUP</code>;
add descriptions for all built-in functions and operators</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-470">CALCITE-470</a>]
Print warning when column type hint is not understood;
Update <code class="language-plaintext highlighter-rouge">EMPS.deptno</code> column Integer → int</li>
<li>Fix <code class="language-plaintext highlighter-rouge">Linq4j.product</code>; the cartesian product of 0 attributes is one row of 0
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="language-plaintext 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>
<li>Add examples of scannable and filterable tables, matching
[<a href="https://issues.apache.org/jira/browse/CALCITE-436">CALCITE-436</a>]
Simpler SPI to query Table</li>
<li>Fix <code class="language-plaintext highlighter-rouge">JdbcTest.testVersion</code> now that version is 1.0</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>
<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
have an existing application, it’s worth upgrading to this first,
before you move on to 1.0.</p>
<h4 id="new-features-0-9-2">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-436">CALCITE-436</a>]
Simpler SPI to query <code class="language-plaintext highlighter-rouge">Table</code>
</li>
</ul>
<h4 id="api-0-9-2">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-447">CALCITE-447</a>]
Change semi-join rules to make use of factories</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-442">CALCITE-442</a>
Add <code class="language-plaintext highlighter-rouge">RelOptRuleOperand</code> constructor that takes a predicate</li>
</ul>
<h4 id="fixes-0-9-2">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-397">CALCITE-397</a>]
<code class="language-plaintext highlighter-rouge">SELECT DISTINCT *</code> on reflective schema gives <code class="language-plaintext highlighter-rouge">ClassCastException</code> at runtime</li>
<li>Various lattice improvements.</li>
<li>sqlline: Looking for class-path in inconsistent locations.</li>
<li>Re-order test suite, so that fast tests are run first.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-444">CALCITE-444</a>]
Filters wrongly pushed into full outer join</li>
<li>Make it more convenient to unit test <code class="language-plaintext highlighter-rouge">RelMetadataQuery</code>, and add some more
tests for
[<a href="https://issues.apache.org/jira/browse/CALCITE-443">CALCITE-443</a>]</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-443">CALCITE-443</a>]
<code class="language-plaintext highlighter-rouge">getPredicates</code> from a Union is not correct</li>
<li>Update references to web sites, git repositories, jira, mailing lists,
travis CI now that [INFRA-8413] is fixed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-434">CALCITE-435</a>]
<code class="language-plaintext highlighter-rouge">FilterAggregateTransposeRule</code> loses conditions that cannot be pushed</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-435">CALCITE-435</a>]
<code class="language-plaintext highlighter-rouge">LoptOptimizeJoinRule</code> incorrectly re-orders outer joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-439">CALCITE-439</a>]
<code class="language-plaintext 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="language-plaintext highlighter-rouge">SemiJoinRel</code>
</li>
<li>Add test case for <code class="language-plaintext highlighter-rouge">LIKE ... ESCAPE</code>.</li>
<li>HOWTO: Modify release instructions.</li>
<li>Update <code class="language-plaintext highlighter-rouge">DiffRepository</code> documentation.</li>
<li>Add tests for windowed aggregates without <code class="language-plaintext 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>
<p>This is the first release as Calcite. (The project was previously called Optiq.)</p>
<h4 id="new-features-0-9-1">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-430">CALCITE-430</a>]
Rename project from Optiq to Calcite</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-426">CALCITE-426</a>]
Pool JDBC data sources, to make it easier to pool connections</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-416">CALCITE-416</a>]
Execute logical <code class="language-plaintext highlighter-rouge">RelNode</code>s using an interpreter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-376">CALCITE-376</a>]
Move <code class="language-plaintext highlighter-rouge">SqlRun</code> into its own artifact,
<a href="https://github.com/julianhyde/quidem">Quidem</a>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-269">CALCITE-269</a>]
MongoDB result sets larger than 16MB</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-373">CALCITE-373</a>]
<code class="language-plaintext highlighter-rouge">NULL</code> values in <code class="language-plaintext highlighter-rouge">NOT IN</code> sub-queries</li>
<li>SQL functions:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-422">CALCITE-422</a>]
Add <code class="language-plaintext highlighter-rouge">REGR_SXX</code> and <code class="language-plaintext highlighter-rouge">REGR_SYY</code> regression functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-421">CALCITE-421</a>]
Add <code class="language-plaintext highlighter-rouge">COVAR_POP</code> and <code class="language-plaintext highlighter-rouge">COVAR_SAMP</code> aggregate functions</li>
</ul>
</li>
<li>Planner rules:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-425">CALCITE-425</a>]
Add <code class="language-plaintext highlighter-rouge">FilterAggregateTransposeRule</code>, that pushes a filter through an
aggregate</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-399">CALCITE-399</a>]
Factorize common <code class="language-plaintext highlighter-rouge">AND</code> factors out of <code class="language-plaintext highlighter-rouge">OR</code> predicates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-404">CALCITE-404</a>]
<code class="language-plaintext highlighter-rouge">MergeProjectRule</code> should not construct <code class="language-plaintext highlighter-rouge">RexProgram</code>s for simple mappings</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-394">CALCITE-394</a>]
Add <code class="language-plaintext highlighter-rouge">RexUtil.toCnf()</code>, to convert expressions to conjunctive normal form
(CNF)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-389">CALCITE-389</a>]
<code class="language-plaintext highlighter-rouge">MergeFilterRule</code> should flatten <code class="language-plaintext highlighter-rouge">AND</code> condition</li>
</ul>
</li>
<li>Lattices:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-428">CALCITE-428</a>]
Use optimization algorithm to suggest which tiles of a lattice to
materialize</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-410">CALCITE-410</a>]
Allow lattice tiles to satisfy a query by rolling up</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-406">CALCITE-406</a>]
Add tile and measure elements to lattice model element</li>
<li>Now, a lattice can materialize an aggregate-join and use it in a subsequent
query.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-402">CALCITE-402</a>]
Lattice should create materializations on demand</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-344">CALCITE-344</a>]
Lattice data structure</li>
</ul>
</li>
<li>Field trimmer:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-408">CALCITE-408</a>]
Make <code class="language-plaintext highlighter-rouge">FieldTrimmer</code> work with <code class="language-plaintext highlighter-rouge">RelNode</code> base classes</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-388">CALCITE-388</a>]
Handle semi-joins in field trimmer</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-395">CALCITE-395</a>]
Make <code class="language-plaintext highlighter-rouge">FieldTrimmer.trimFields(SetOp)</code> generate <code class="language-plaintext highlighter-rouge">ProjectRel</code> instead of
<code class="language-plaintext 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>
</ul>
</li>
</ul>
<h4 id="api-0-9-1">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-413">CALCITE-413</a>]
Add <code class="language-plaintext highlighter-rouge">RelDataTypeSystem</code> plugin, allowing different max precision of a
<code class="language-plaintext highlighter-rouge">DECIMAL</code>
</li>
<li>In <code class="language-plaintext highlighter-rouge">Planner</code>, query de-correlation no longer requires state in a
<code class="language-plaintext highlighter-rouge">SqlToRelConverter</code>.</li>
<li>Factories:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-392">CALCITE-392</a>]
<code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code> should use factory to create new rel nodes</li>
<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="language-plaintext highlighter-rouge">CalcRel.createProject</code> methods to <code class="language-plaintext 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="language-plaintext highlighter-rouge">JoinFactory.createJoin()</code>; add <code class="language-plaintext highlighter-rouge">SemiJoinFactory</code>
</li>
</ul>
</li>
</ul>
<h4 id="fixes-0-9-1">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-386">CALCITE-386</a>]
Fix NOTICE</li>
<li>Add tests inspired by Derby bugs.</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="language-plaintext highlighter-rouge">RemoveDistinctAggregateRule</code>,
<code class="language-plaintext 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="language-plaintext highlighter-rouge">sqlline</code> shell script</li>
<li>Bad package name in <code class="language-plaintext highlighter-rouge">package-info.java</code> was causing errors in Eclipse.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-412">CALCITE-412</a>]
<code class="language-plaintext highlighter-rouge">RelFieldTrimmer</code>: when trimming <code class="language-plaintext highlighter-rouge">SortRel</code>, the collation and trait set don’t
match</li>
<li>Add test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-411">CALCITE-411</a>]
Duplicate column aliases</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-407">CALCITE-407</a>]
<code class="language-plaintext highlighter-rouge">RemoveTrivialProjectRule</code> drops child node’s traits</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-409">CALCITE-409</a>]
<code class="language-plaintext highlighter-rouge">PushFilterPastProjectRule</code> should not push filters past windowed aggregates</li>
<li>Fix tests on Windows.</li>
<li>Don’t load <code class="language-plaintext highlighter-rouge">FoodMartQuerySet</code> unless we have to. It’s big.</li>
<li>Enable connection pooling in test suite.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-384">CALCITE-384</a>]
Add <code class="language-plaintext highlighter-rouge">apache-</code> prefix to tarball and directory within tarball</li>
<li>Freeze hive fmpp &gt; freemarker plugin dependency.</li>
<li>Upgrade Janino</li>
<li>Removed hardcoded foodmart schema information</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-387">CALCITE-387</a>]
CompileException when cast TRUE to nullable boolean</li>
<li>Temporary fix for
[<a href="https://issues.apache.org/jira/browse/CALCITE-390">CALCITE-390</a>]
Transitive inference (<code class="language-plaintext highlighter-rouge">RelMdPredicates</code>) doesn’t handle semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-385">CALCITE-385</a>]
Change comment style for Java headers</li>
<li>Disable test that is inconistent between JDK 1.7 and 1.8.</li>
<li>Fix <code class="language-plaintext highlighter-rouge">git-commit-id-plugin</code> error when running in Travis-CI.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-381">CALCITE-381</a>]
Remove plugin versions from the <code class="language-plaintext highlighter-rouge">&lt;plugins&gt;</code> tag in root pom</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-383">CALCITE-383</a>]
Each jar should have a <code class="language-plaintext highlighter-rouge">git.properties</code> file describing its exact version</li>
<li>Fix <code class="language-plaintext highlighter-rouge">mvn site</code> on JDK 1.8 and enable in Travis-CI.</li>
<li>Status icon based on master branch, not whichever branch happened to build
most recently.</li>
<li>HOWTO:
<ul>
<li>Document how to build from git, and how to get jars from maven repo.</li>
<li>Optiq web site</li>
<li>Template emails for Apache votes</li>
<li>Update JIRA cases following release</li>
<li>Instructions for making and verifying a release</li>
</ul>
</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>
<p>This is the first release under the Apache incubator process.</p>
<h4 id="new-features-0-9-0">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-371">CALCITE-371</a>]
Implement <code class="language-plaintext highlighter-rouge">JOIN</code> whose <code class="language-plaintext highlighter-rouge">ON</code> clause contains mixed equi and theta</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-369">CALCITE-369</a>]
Add <code class="language-plaintext highlighter-rouge">EnumerableSemiJoinRel</code>, implementation of semi-join in enumerable
convention</li>
<li>Add class <code class="language-plaintext highlighter-rouge">Strong</code>, for detecting null-rejecting predicates.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-368">CALCITE-368</a>]
Add SemiJoinRule, planner rule to convert project-join-aggregate into semi-join</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-367">CALCITE-367</a>]
<code class="language-plaintext highlighter-rouge">PushFilterPastJoinRule</code> should strengthen join type</li>
<li>Add <code class="language-plaintext highlighter-rouge">EquiJoinRel</code>, base class for joins known to be equi-joins.</li>
<li>Implement <code class="language-plaintext highlighter-rouge">CAST(&lt;string&gt; AS &lt;datetime&gt;)</code> and
<code class="language-plaintext highlighter-rouge">&lt;datetime&gt; + &lt;interval&gt;</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-360">CALCITE-360</a>]
Introduce a rule to infer predicates from equi-join conditions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-349">CALCITE-349</a>]
Add heuristic join-optimizer that can generate bushy joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-346">CALCITE-346</a>]
Add commutative join rule</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-347">CALCITE-347</a>]
In <code class="language-plaintext highlighter-rouge">SqlRun</code>, add <code class="language-plaintext highlighter-rouge">!plan</code> command</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-314">CALCITE-314</a>]
Allow simple UDFs based on methods</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-327">CALCITE-327</a>]
Rules should use base class to find rule match &amp; use factory for object
creation</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-316">CALCITE-316</a>]
In <code class="language-plaintext highlighter-rouge">SqlRun</code>, match output regardless of order if <code class="language-plaintext 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="language-plaintext highlighter-rouge">COUNT(DISTINCT x, y, ...)</code>
</li>
</ul>
<h4 id="api-0-9-0">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-343">CALCITE-343</a>]
RelDecorrelator should build its own mappings, not inherit from SqlToRelConverter</li>
<li>Remove deprecated methods.</li>
<li>Convert <code class="language-plaintext highlighter-rouge">Hook</code> to use Guava <code class="language-plaintext highlighter-rouge">Function</code> (was linq4j <code class="language-plaintext highlighter-rouge">Function1</code>).</li>
<li>Add fluent method <code class="language-plaintext highlighter-rouge">withHook</code>, to more easily add hooks in tests.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-321">CALCITE-321</a>]
Add support for overriding implementation of <code class="language-plaintext highlighter-rouge">CompoundIdentifier</code> in
<code class="language-plaintext highlighter-rouge">SqlParser</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-322">CALCITE-322</a>]
Add support for <code class="language-plaintext highlighter-rouge">SqlExplain</code>, <code class="language-plaintext highlighter-rouge">SqlOrderBy</code> and <code class="language-plaintext highlighter-rouge">SqlWith</code> to support
<code class="language-plaintext highlighter-rouge">SqlShuttle</code> use.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-323">CALCITE-323</a>]
Override <code class="language-plaintext highlighter-rouge">SqlUnresolvedFunction.inferReturnType()</code> to return <code class="language-plaintext highlighter-rouge">ANY</code> type
so framework implementors can support late bound function implementations.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-324">CALCITE-324</a>]
Add <code class="language-plaintext highlighter-rouge">ViewExpander</code> for <code class="language-plaintext highlighter-rouge">Planner</code> in <code class="language-plaintext highlighter-rouge">Frameworks</code>. Expose additional
properties of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Context</code> and <code class="language-plaintext highlighter-rouge">FrameworkConfig</code>
</li>
</ul>
<h4 id="fixes-0-9-0">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-380">CALCITE-380</a>]
Downgrade to Guava 11.0.2</li>
<li>Move several .md files into new ‘doc’ directory, to keep the root directory simple.</li>
<li>Add DISCLAIMER</li>
<li>Update history and HOWTO</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-377">CALCITE-377</a>]
UnregisteredDriver should catch, log and re-throw NoClassDefFoundError</li>
<li>Inherit maven-release-plugin from Apache POM.</li>
<li>Test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-373">CALCITE-373</a>]
NOT IN and NULL values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-372">CALCITE-372</a>]
Change <code class="language-plaintext highlighter-rouge">LoptOptimizeJoinRule</code> &amp; <code class="language-plaintext highlighter-rouge">PushFilterPast</code>* rules to use factory</li>
<li>Upgrade <code class="language-plaintext highlighter-rouge">maven-checkstyle-plugin</code>.</li>
<li>Add class <code class="language-plaintext highlighter-rouge">Holder</code>, a mutable slot that can contain one object.</li>
<li>Remove the 2-minute wait at the top of the hour for tests of
<code class="language-plaintext highlighter-rouge">CURRENT_TIME</code>, etc.</li>
<li>Tune <code class="language-plaintext highlighter-rouge">ImmutableIntList</code>’s iterators.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-364">CALCITE-364</a>]
Validator rejects valid <code class="language-plaintext highlighter-rouge">WITH ... ORDER BY</code> query</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-363">CALCITE-363</a>]
Use <code class="language-plaintext highlighter-rouge">dependencyManagement</code> and <code class="language-plaintext highlighter-rouge">pluginManagement</code> in POM files</li>
<li>Add <code class="language-plaintext highlighter-rouge">FilterFactory</code>.</li>
<li>Add <code class="language-plaintext highlighter-rouge">README</code> file, incubation disclaimers, and how-to build and running tests.</li>
<li>Add <code class="language-plaintext highlighter-rouge">KEYS</code> and start how-to for making snapshots and releases.</li>
<li>Capital case component names; inherit license info from Apache parent POM.</li>
<li>Only run <code class="language-plaintext highlighter-rouge">apache-rat</code> and <code class="language-plaintext highlighter-rouge">git-commit-id-plugin</code> in “release” maven profile.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-348">CALCITE-348</a>]
Add Apache RAT as maven plugin</li>
<li>Change license headers from “Julian Hyde” to “ASF”; add headers where missing.</li>
<li>Fix build breakage on JDK 1.6 due to missing method <code class="language-plaintext highlighter-rouge">BitSet.previousClearBit</code>.</li>
<li>Refactor test infrastructure to allow testing against heuristic bushy-join
optimizer.</li>
<li>Add methods and tests for BitSets, and re-organize tests.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-354">CALCITE-354</a>]
Change maven groupId to “org.apache.optiq”</li>
<li>Specify return type when calling <code class="language-plaintext highlighter-rouge">RexBuilder.makeCall</code>, if possible.</li>
<li>Eliminate duplicate conditions in <code class="language-plaintext highlighter-rouge">RexProgramBuilder.addCondition</code>, not
<code class="language-plaintext highlighter-rouge">RexBuilder.makeCall</code> as previously.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-345">CALCITE-345</a>]
<code class="language-plaintext highlighter-rouge">AssertionError</code> in <code class="language-plaintext highlighter-rouge">RexToLixTranslator</code> comparing to date literal</li>
<li>Restore <code class="language-plaintext highlighter-rouge">PushFilterPastJoinRule</code> to <code class="language-plaintext highlighter-rouge">RelDecorrelator</code>; interim pending
[<a href="https://issues.apache.org/jira/browse/CALCITE-343">CALCITE-343</a>]
fix.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-340">CALCITE-340</a>]
Fix bug in <code class="language-plaintext highlighter-rouge">SqlToRelConverter</code> when push expressions in join conditions into
<code class="language-plaintext highlighter-rouge">ProjectRel</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-313">CALCITE-313</a>]
Query decorrelation fails</li>
<li>While unifying a <code class="language-plaintext highlighter-rouge">RelNode</code> tree with a materialized view expression,
switch representation to <code class="language-plaintext highlighter-rouge">MutableRel</code>s.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-305">CALCITE-305</a>]
Unit test failure on release candidates</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-325">CALCITE-325</a>]
Use Java list instead of Guava list to avoid null checks in case of
<code class="language-plaintext highlighter-rouge">SqlTypeExplicitPrecedenceList</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-326">CALCITE-326</a>]
Fix <code class="language-plaintext highlighter-rouge">RelOptUtil</code> <code class="language-plaintext highlighter-rouge">ANY</code> type check.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-303">CALCITE-303</a>]
Migrate issue URLs</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-331">CALCITE-331</a>]
Precision/scale compatibility checks should always succeed for <code class="language-plaintext highlighter-rouge">ANY</code> type</li>
<li>In <code class="language-plaintext highlighter-rouge">SqlRun</code>, allow <code class="language-plaintext highlighter-rouge">!plan</code> after <code class="language-plaintext 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="language-plaintext highlighter-rouge">SqlRun</code>
</li>
<li>Fix a bug where composite <code class="language-plaintext 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>
<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="language-plaintext highlighter-rouge">COUNT(not-null-expression)</code> to <code class="language-plaintext 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>]
Use heuristic rule to plan queries with large numbers of joins</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-283">CALCITE-283</a>]
Add TPC-DS data generator</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-294">CALCITE-294</a>]
Implement DENSE_RANK windowed aggregate function</li>
<li>SqlRun utility
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-290">CALCITE-290</a>]
Add <code class="language-plaintext highlighter-rouge">SqlRun</code>, an idempotent utility for running SQL test scripts</li>
<li>Add “!skip” command to SqlRun.</li>
<li>Add MySQL formatting mode to SqlRun.</li>
</ul>
</li>
</ul>
<h4 id="api-0-8">API changes</h4>
<ul>
<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="language-plaintext highlighter-rouge">Program</code> interface, a planner phase more general than current <code class="language-plaintext 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.
<ul>
<li>Add <code class="language-plaintext highlighter-rouge">IS_NOT_TRUE</code> and <code class="language-plaintext highlighter-rouge">IS_NOT_FALSE</code> <code class="language-plaintext highlighter-rouge">SqlKind</code> enums.</li>
<li>Add <code class="language-plaintext highlighter-rouge">SqlKind.IS_NOT_NULL</code> enum value, and use where possible,
including for <code class="language-plaintext highlighter-rouge">IS_NOT_UNKNOWN</code> operator.</li>
</ul>
</li>
</ul>
<h4 id="fixes-0-8">Bug-fixes and internal changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-312">CALCITE-312</a>]
Trim non-required fields before <code class="language-plaintext 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="language-plaintext highlighter-rouge">WITH ... ORDER BY</code>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-309">CALCITE-309</a>]
<code class="language-plaintext highlighter-rouge">WITH ... ORDER BY</code> query gives <code class="language-plaintext highlighter-rouge">AssertionError</code>
</li>
<li>Enable <code class="language-plaintext highlighter-rouge">MultiJoinRel</code> and some other planner rule tests.</li>
<li>Add <code class="language-plaintext highlighter-rouge">ImmutableNullableList</code> and <code class="language-plaintext highlighter-rouge">UnmodifiableArrayList</code>,
and remove calls to <code class="language-plaintext highlighter-rouge">Arrays.asList</code>.</li>
<li>Add method <code class="language-plaintext highlighter-rouge">IntPair.zip</code>.</li>
<li>Reimplement regular and windowed aggregates</li>
<li>Switch from github to Apache JIRA for issues tracking.
<ul>
<li>In release history, update issue URLs from github to Apache JIRA</li>
</ul>
</li>
<li>The Apache mailing list is now the official mailing list. Add presentations.</li>
<li>Add test for overloaded UDF.</li>
<li>Add tests for <code class="language-plaintext highlighter-rouge">NOT IN</code> where sub-query returns NULL values.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-288">CALCITE-288</a>]
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="language-plaintext 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="language-plaintext highlighter-rouge">ORDER BY</code>
</li>
<li>Test case for
[&lt;a href=“https://issues.apache.org/jira/browse/CALCITE-285”&gt;CALCITE-285&lt;/a&gt;].</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-281">CALCITE-281</a>]
<code class="language-plaintext highlighter-rouge">EXTRACT</code> function’s SQL return type is <code class="language-plaintext highlighter-rouge">BIGINT</code> but implemented as Java <code class="language-plaintext 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>
<h4 id="new-features-0-7">New features</h4>
<ul>
<li>Implement table functions.</li>
<li>Arrays and multi-sets:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-267">CALCITE-267</a>]
Improve support for ARRAY data type</li>
<li>Better type information for JDBC Array; nested array now possible.</li>
<li>Implement <code class="language-plaintext highlighter-rouge">JOIN LATERAL</code> and <code class="language-plaintext highlighter-rouge">JOIN UNNEST</code>.</li>
<li>Implement the <code class="language-plaintext highlighter-rouge">UNNEST</code> relational operator, and various improvements
to <code class="language-plaintext highlighter-rouge">ARRAY</code> and <code class="language-plaintext highlighter-rouge">MULTISET</code> data types.</li>
<li>Represent <code class="language-plaintext highlighter-rouge">ARRAY</code> columns as Java lists.</li>
<li>Implement <code class="language-plaintext highlighter-rouge">CARDINALITY(ARRAY)</code> SQL operator.</li>
</ul>
</li>
<li>Implement scalar sub-query in <code class="language-plaintext highlighter-rouge">SELECT</code> clause.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-273">CALCITE-273</a>]
Support column alias in WITH queries (common table expressions)</li>
<li>Windowed aggregates:
<ul>
<li>Aggregate over constants, e.g. <code class="language-plaintext highlighter-rouge">SUM(1) OVER (ROWS 10 PRECEDING)</code>;</li>
<li>
<code class="language-plaintext highlighter-rouge">UNBOUNDED PRECEDING</code> window range;</li>
<li>Windowed aggregates computed over primitive scalars.</li>
</ul>
</li>
<li>Fix return type inference for aggregate calls. If the <code class="language-plaintext highlighter-rouge">GROUP BY</code> clause is
empty, <code class="language-plaintext highlighter-rouge">SUM</code> may return null.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-37">CALCITE-37</a>]
Document JSON model file format (as <a href="https://github.com/apache/calcite/blob/main/site/_docs/model.md">model.md</a>).</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-238">CALCITE-238</a>]
Add adapter that generates TPC-H data</li>
<li>Improve exception message in <code class="language-plaintext highlighter-rouge">AvaticaConnection</code>; add
<code class="language-plaintext highlighter-rouge">ExceptionMessageTest</code>.</li>
<li>Implement micro-benchmarks via
<a href="https://openjdk.java.net/projects/code-tools/jmh/">JMH</a>.</li>
</ul>
<h4 id="api-0-7">API changes</h4>
<ul>
<li>Provide an option to create root schema without the “metadata” schema.</li>
<li>Schema SPI:
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-175">CALCITE-175</a>]
Modify Schema SPI to allow caching</li>
<li>Get sub-schemas defined by a Schema SPI, and cache their <code class="language-plaintext highlighter-rouge">OptiqSchema</code>
wrappers. (Tobi Vollebregt and Julian Hyde)</li>
</ul>
</li>
<li>SqlAdvisor callable from client via JDBC.</li>
</ul>
<h4 id="fixes-0-7">Bug-fixes and internal changes</h4>
<ul>
<li>Add Apache incubator proposal.</li>
<li>Rename RELEASE.md to HISTORY.md.</li>
<li>Upgrade maven-release-plugin.</li>
<li>Upgrade to linq4j-0.3.</li>
<li>Code generation improvements:</li>
<li>Move code-generation optimizer to linq4j;</li>
<li>Improve translation of strict functions;</li>
<li>Mark most methods in <code class="language-plaintext highlighter-rouge">SqlFunctions</code> as <code class="language-plaintext highlighter-rouge">@Deterministic</code>;</li>
<li>Support <code class="language-plaintext highlighter-rouge">static final</code> constants generated by linq4j.</li>
<li>Avoid excessive box and unbox of primitives when using <code class="language-plaintext highlighter-rouge">Object[]</code> storage.</li>
<li>In JDBC result set, avoid row computation on each accessor call.</li>
<li>Test composite join conditions in various flavors of outer join.</li>
<li>Use <code class="language-plaintext highlighter-rouge">fromTrait</code> of the just previously converted <code class="language-plaintext highlighter-rouge">RelNode</code> instead
of the original <code class="language-plaintext highlighter-rouge">RelNode</code>.</li>
<li>Disable a MongoDB test, pending
[<a href="https://issues.apache.org/jira/browse/CALCITE-270">CALCITE-270</a>].</li>
<li>Hush warnings from <code class="language-plaintext 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="language-plaintext highlighter-rouge">SplunkAdapterTest</code> now uses the same Foodmart database as <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-205">CALCITE-205</a>]
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>
<h4 id="new-features-0-6">New features</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-214">CALCITE-214</a>]
Modify Frameworks to allow Schema to be re-used
Obsoletes <code class="language-plaintext highlighter-rouge">name</code> field of <code class="language-plaintext highlighter-rouge">ReflectiveSchema</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-237">CALCITE-237</a>]
Allow user-defined aggregate functions (UDAs) to be defined in a model</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-227">CALCITE-227</a>]
Extend <code class="language-plaintext highlighter-rouge">EXTRACT</code> function to support <code class="language-plaintext highlighter-rouge">DATE</code>, <code class="language-plaintext highlighter-rouge">TIME</code> and <code class="language-plaintext highlighter-rouge">TIMESTAMP</code> values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-222">CALCITE-222</a>]
User-defined table macros</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-179">CALCITE-179</a>]
Optiq on Windows
<ul>
<li>Add <code class="language-plaintext highlighter-rouge">sqlline.bat</code> and fix issues running <code class="language-plaintext highlighter-rouge">sqlline</code> under Cygwin.</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-195">CALCITE-195</a>]
Push aggregation into MongoDB adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-193">CALCITE-193</a>]
Implement OFFSET and LIMIT in MongoDB adapter</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-164">CALCITE-164</a>]
Improve query performance of optiq over MongoDB</li>
<li>Add Phoenix (HBase) SQL dialect (Bruno Dumon)</li>
</ul>
<h4 id="api-0-6">API changes</h4>
<ul>
<li>Obsolete <code class="language-plaintext highlighter-rouge">RexImpTable.AggregateImplementor</code> and rename <code class="language-plaintext highlighter-rouge">AggImplementor2</code>.
(<strong>This is a breaking change</strong>.)</li>
<li>Convert <code class="language-plaintext highlighter-rouge">CombinedParser.jj</code> into freemarker template to allow
custom parser implementations. (Venki Korukanti)</li>
<li>Extend <code class="language-plaintext highlighter-rouge">Planner</code> to pass a custom <code class="language-plaintext highlighter-rouge">ConvertletTable</code> and custom SQL parser.</li>
<li>In <code class="language-plaintext highlighter-rouge">Frameworks</code>, add a way to specify list of <code class="language-plaintext highlighter-rouge">TraitDef</code>s that will be used
by planner. (Jinfeng Ni)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-198">CALCITE-198</a>]
Use <code class="language-plaintext highlighter-rouge">RexExecutor</code> to evaluate projections and filters</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-219">CALCITE-219</a>]
Parse <code class="language-plaintext highlighter-rouge">ALTER scope SET option = value</code> statement</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-215">CALCITE-215</a>]
A Schema should not have to remember its name and parent
(<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-180">CALCITE-180</a>]
Common base class for TableFunction, ScalarFunction
(<strong>This is a breaking change</strong>.)</li>
<li>Add methods for dealing with symbols; deprecate
<code class="language-plaintext highlighter-rouge">SqlLiteral.booleanValue(SqlNode)</code>, <code class="language-plaintext highlighter-rouge">SqlLiteral.symbolValue(SqlNode)</code>.</li>
<li>Add <code class="language-plaintext highlighter-rouge">RelOptPlanner.clear()</code>; now it is safe to call <code class="language-plaintext highlighter-rouge">transform</code> twice.
(Jinfeng Ni)</li>
<li>Remove APIs deprecated for 0.5.</li>
<li>Move around some operator classes and singletons.</li>
</ul>
<h4 id="fixes-0-6">Bug-fixes and internal changes</h4>
<ul>
<li>Upgrade to linq4j-0.2.</li>
<li>
<code class="language-plaintext highlighter-rouge">FETCH</code> and <code class="language-plaintext 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>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-191">CALCITE-191</a>]
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="language-plaintext highlighter-rouge">RelOptTableImpl.create</code> always expects <code class="language-plaintext highlighter-rouge">QueryableTable</code> type in
<code class="language-plaintext 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
don’t conflict with those in non-test packages.</li>
<li>Add <code class="language-plaintext highlighter-rouge">Pair.adjacents(Iterable)</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-199">CALCITE-199</a>]
Various <code class="language-plaintext highlighter-rouge">ANY</code> type conditions aren’t correctly being considered
(Jacques Nadeau)</li>
<li>Add files to <code class="language-plaintext highlighter-rouge">.gitignore</code> that shouldn’t be checked in when using
Eclipse. (Jacques Nadeau)</li>
<li>Add class <code class="language-plaintext highlighter-rouge">ControlFlowException</code>, and make it base class of
existing control-flow exception classes.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-232">CALCITE-232</a>]
Sum and avg of empty set should be null as per SQL specification</li>
<li>Add <code class="language-plaintext highlighter-rouge">SqlUnresolvedFunction</code>, to improve how return type of
user-defined functions is resolved. (Vladimir Sitnikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-228">CALCITE-228</a>]
Error while compiling generated Java code when using UDF in expression</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-226">CALCITE-226</a>]
User-defined functions should work without explicit schema prefix</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-229">CALCITE-229</a>]
Join between different JDBC schemas not implementable</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-230">CALCITE-230</a>]
RemoveSortRule derives trait set from sort, should derive it from sort’s child</li>
<li>Test view and sub-query with <code class="language-plaintext highlighter-rouge">ORDER BY</code> and <code class="language-plaintext highlighter-rouge">LIMIT</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-223">CALCITE-223</a>]
Add <code class="language-plaintext highlighter-rouge">NOTICE</code> and <code class="language-plaintext highlighter-rouge">LICENSE</code> files in all generated JAR files</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-209">CALCITE-209</a>]
Consistent strategy for line-endings in tests
Convert uses of <code class="language-plaintext 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="language-plaintext highlighter-rouge">Lex.MYSQL</code>
</li>
<li>Add tests that a query with aggregate expressions in the <code class="language-plaintext highlighter-rouge">SELECT</code>
clause is considered an aggregate query, even if there is no <code class="language-plaintext highlighter-rouge">GROUP BY</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-216">CALCITE-216</a>]
Inconsistent use of provided operator table causes inability to
add aggregate functions</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-200">CALCITE-200</a>]
Javadoc generation fails under JDK 1.8</li>
<li>Add class <code class="language-plaintext highlighter-rouge">XmlOutput</code> (based on <code class="language-plaintext highlighter-rouge">org.eigenbase.xom.XMLOutput</code>) and remove
dependency on eigenbase-xom.</li>
<li>Performance: Don’t create stack-trace for exceptions used for control-flow.
(Vladimir Sitnikov)</li>
<li>Performance: Tune <code class="language-plaintext highlighter-rouge">RexProgramBuilder</code> by using <code class="language-plaintext highlighter-rouge">Pair</code> rather than <code class="language-plaintext highlighter-rouge">String</code> as
expression key. (Vladimir Sitnikov)</li>
<li>Fix NPE using TRIM function with JDBC. (Bruno Dumon)</li>
<li>Add dependency on
<a href="https://github.com/julianhyde/hydromatic-resource">hydromatic-resource-maven-plugin</a>
and obsolete our copy of the resource framework.</li>
<li>Fix race condition in <code class="language-plaintext highlighter-rouge">SpaceList</code>.</li>
<li>In planner, use <code class="language-plaintext highlighter-rouge">RelTrait.subsumes</code> rather than <code class="language-plaintext highlighter-rouge">equals</code> in an assert.
(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>
<h4 id="new-features-0-5">New features</h4>
<ul>
<li>Allow <code class="language-plaintext highlighter-rouge">quoting</code>, <code class="language-plaintext highlighter-rouge">quotedCasing</code>, <code class="language-plaintext highlighter-rouge">unquotedCasing</code>, and <code class="language-plaintext highlighter-rouge">caseSensitive</code>
properties to be specified explicitly (Vladimir Sitnikov)</li>
<li>Recognize more kinds of materializations, including filter-on-project (where
project contains expressions) and some kinds of aggregation.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-128">CALCITE-128</a>]
Support <code class="language-plaintext highlighter-rouge">WITH</code> queries (common table expressions)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-53">CALCITE-53</a>]
Allow <code class="language-plaintext highlighter-rouge">WHEN</code> clause in simple <code class="language-plaintext highlighter-rouge">CASE</code> expression to have multiple values</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-156">CALCITE-156</a>]
Optiq should recognize ‘SYSTEM TABLE’, ‘JOIN’, ‘INDEX’ as table types</li>
<li>Support querying ARRAY columns from JDBC source. (Gabriel Reid)</li>
</ul>
<h4 id="api-0-5">API changes</h4>
<ul>
<li>Add
<code class="language-plaintext highlighter-rouge">ProjectRelBase.copy(RelTraitSet, RelNode, List&lt;RexNode&gt;, RelDataType)</code>
and make <code class="language-plaintext highlighter-rouge">ProjectRelBase.copy(RelTraitSet, RelNode)</code> final.
(<strong>This is a breaking change</strong> for sub-classes of <code class="language-plaintext highlighter-rouge">ProjectRelBase</code>.)</li>
<li>Change <code class="language-plaintext highlighter-rouge">RexBuilder.makeRangeReference</code> parameter type.</li>
<li>
<code class="language-plaintext highlighter-rouge">RexBuilder.makeInputRef</code> replaces <code class="language-plaintext 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>]
Create a new kind of <code class="language-plaintext highlighter-rouge">SqlCall</code> that keeps operands in fields, not an operands
array
<ul>
<li>Very widely used parse tree nodes with complex operands, including
<code class="language-plaintext highlighter-rouge">SqlSelect</code>, <code class="language-plaintext highlighter-rouge">SqlJoin</code>, <code class="language-plaintext highlighter-rouge">SqlInsert</code>, and a new node type <code class="language-plaintext highlighter-rouge">SqlOrderBy</code>, are
now sub-classes of <code class="language-plaintext highlighter-rouge">SqlCall</code> but not <code class="language-plaintext highlighter-rouge">SqlBasicCall</code>.</li>
<li>(<strong>This is a breaking change</strong> to code that assumes that, say,
<code class="language-plaintext highlighter-rouge">SqlSelect</code> has an <code class="language-plaintext highlighter-rouge">operands</code> field.)</li>
</ul>
</li>
<li>Convert all enum constants to upper-case.
(<strong>This is a breaking change</strong>.)</li>
</ul>
<h4 id="fixes-0-5">Bug-fixes and internal changes</h4>
<ul>
<li>Generate optiq-core-VERSION-tests.jar not parent-VERSION-tests.jar.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-176">CALCITE-176</a>]
ORDER BY expression doesn’t work with SELECT *</li>
<li>Fix VARCHAR casts sent to hsqldb source (Bruno Dumon)</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="language-plaintext highlighter-rouge">Casing.UNCHANGED</code>
</li>
<li>
<code class="language-plaintext highlighter-rouge">DATE.getLimit</code> now returns <code class="language-plaintext highlighter-rouge">Calendar</code> in GMT time zone (Vladimir Sitnikov)</li>
<li>Set <code class="language-plaintext 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
(Vladimir Sitnikov)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-174">CALCITE-174</a>]
Move hsqldb to test scope</li>
<li>Add unit tests for <code class="language-plaintext highlighter-rouge">RexExecutorImpl</code>.</li>
<li>Correct JSON model examples in Javadoc comments. (Karel Vervaeke)</li>
<li>Move test reference logs from <code class="language-plaintext highlighter-rouge">src/test/java</code> to <code class="language-plaintext highlighter-rouge">src/test/resources</code>
(reduces the number of ‘untracked files’ reported by git)</li>
<li>Tune <code class="language-plaintext highlighter-rouge">Util.SpaceList</code>, fix race condition, and move into new utility class
<code class="language-plaintext highlighter-rouge">Spaces</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-163">CALCITE-163</a>]
Equi-join warning</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-157">CALCITE-157</a>]
Handle <code class="language-plaintext highlighter-rouge">SQLFeatureNotSupported</code> when calling <code class="language-plaintext highlighter-rouge">setQueryTimeout</code>
(Karel Vervaeke)</li>
<li>Fix Optiq on Windows. (All tests and checkstyle checks pass.)</li>
<li>In checkstyle, support Windows-style file separator, otherwise build fails in
Windows due to suppressions not used. (Vladimir Sitnikov)</li>
<li>Enable MongoDB tests when <code class="language-plaintext highlighter-rouge">-Dcalcite.test.mongodb=true</code>.</li>
<li>Cleanup cache exception-handling and an assert.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-153">CALCITE-153</a>]
Error using MongoDB adapter: Failed to set setXIncludeAware(true)</li>
<li>Disable spark engine unless Spark libraries are on the class path and
<code class="language-plaintext highlighter-rouge">spark=true</code> is specified in the connect string.</li>
<li>Fix path to <code class="language-plaintext highlighter-rouge">mongo-zips-model.json</code> in HOWTO. (Mariano Luna)</li>
<li>Fix bug deriving the type of a join-key.</li>
<li>Fix the value of <code class="language-plaintext highlighter-rouge">ONE_MINUS_EPSILON</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-158">CALCITE-158</a>]
Optiq fails when call <code class="language-plaintext highlighter-rouge">Planner.transform()</code> multiple times, each with
different ruleset</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-148">CALCITE-148</a>]
Less verbose description of collation. Also, optimize <code class="language-plaintext highlighter-rouge">RelTraitSet</code> creation
and amortize <code class="language-plaintext highlighter-rouge">RelTraitSet.toString()</code>.</li>
<li>Add generics to SQL parser.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-145">CALCITE-145</a>]
Unexpected upper-casing of keywords when using java lexer</li>
<li>Remove duplicate <code class="language-plaintext highlighter-rouge">maven-source-plugin</code>.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-141">CALCITE-141</a>]
Downgrade to guava-11.0.2. (This is necessary for Hadoop compatibility.
Later versions of Guava can also be used.)</li>
<li>Upgrade to spark-0.9.0. (Because this version of spark is available from
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>
<h4 id="api-0-4-18">API and functionality changes</h4>
<ul>
<li>Configurable lexical policy
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-33">CALCITE-33</a>]
SQL parser should allow different identifier quoting</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-34">CALCITE-34</a>]
Policy for case-sensitivity of identifiers should be configurable</li>
<li>New connect-string parameter “lex”, with allowable values
“ORACLE”, “MYSQL”, “SQL_SERVER”, “JAVA” sets policy to be like those
databases, in terms of quote string, whether quoted and unquoted
identifiers are converted to upper/lower case, and whether
identifiers are matched case-sensitively. “JAVA” is case-sensitive,
even for unquoted identifiers. It should be possible
for each connection to have its own settings for these. Objects
shared between sessions (views, materialized views) might
require more work.</li>
<li>Added various internals to make it easy for developers to do the
right thing. When you need to look up a schema, table or
column/field name, you should use a catalog reader, and it will
apply the right case-sensitivity policy.</li>
<li>Enable optiq consumer to utilize different lexical settings in
Frameworks/Planner. (Jacques Nadeau)</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-135">CALCITE-115</a>]
Add a PARSE_TREE hook point with SqlNode parameter</li>
<li>Change planner rules to use <code class="language-plaintext highlighter-rouge">ProjectFactory</code> for creating
projects. (John Pullokkaran)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-131">CALCITE-131</a>]
Add interfaces for metadata (statistics)
(<strong>This is a breaking change</strong>.)</li>
<li>Update Avatica to allow <code class="language-plaintext highlighter-rouge">Cursor</code> &amp; <code class="language-plaintext highlighter-rouge">Accessor</code> implementations to throw
<code class="language-plaintext highlighter-rouge">SQLException</code>. (Jacques Nadeau)</li>
<li>Separate cost model (<code class="language-plaintext highlighter-rouge">RelOptCostFactory</code>) from planner. Allow
<code class="language-plaintext highlighter-rouge">VolcanoPlanner</code> to be sub-classed with different cost factory.
<ul>
<li>Remove references to VolcanoCost from RelSubset, so clients can
use a different <code class="language-plaintext highlighter-rouge">RelOptCost</code>. (Harish Butani)</li>
<li>Make <code class="language-plaintext highlighter-rouge">VolcanoCost</code> immutable.</li>
</ul>
</li>
<li>Break <code class="language-plaintext highlighter-rouge">SqlTypeStrategies</code> into <code class="language-plaintext highlighter-rouge">OperandTypes</code>, <code class="language-plaintext highlighter-rouge">ReturnTypes</code> and
<code class="language-plaintext highlighter-rouge">InferTypes</code>, and rename its static members to upper-case, per
checkstyle. (<strong>This is a breaking change</strong>.)</li>
<li>Add a mechanism for defining configuration parameters and have them
appear in the responses to <code class="language-plaintext highlighter-rouge">AvaticaDatabaseMetaData</code> methods.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-113">CALCITE-113</a>]
User-defined scalar functions</li>
<li>Add rules to short-cut a query if <code class="language-plaintext highlighter-rouge">LIMIT 0</code> is present. Also remove
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="language-plaintext 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>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-61">CALCITE-16</a>]
Upgrade to janino-2.7</li>
<li>Upgrade to guava-15.0 (guava-14.0.1 still allowed), sqlline-1.1.7,
maven-surefire-plugin-2.16, linq4j-0.1.13.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-136">CALCITE-136</a>]
Support Hive dialect</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-138">CALCITE-138</a>]
SqlDataTypeSpec.clone handles collection types wrong</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-137">CALCITE-137</a>]
If a subset is created that is subsumed by an existing subset, its
‘best’ is not assigned
<ul>
<li>If best rel in a Volcano subset doesn’t have metadata, see if
other rels have metadata.</li>
</ul>
</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-127">CALCITE-127</a>]
EnumerableCalcRel can’t support 3+ AND conditions (Harish Butani)</li>
<li>Fix push-down of datetime literals to JDBC data sources.</li>
<li>Add <code class="language-plaintext highlighter-rouge">Util.startsWith(List, List)</code> and <code class="language-plaintext highlighter-rouge">Util.hashCode(double)</code>.</li>
<li>Add maven-checkstyle-plugin, enable in “verify” phase, and fix exceptions.</li>
<li>Fix <code class="language-plaintext highlighter-rouge">SqlValidator</code> to rely on <code class="language-plaintext highlighter-rouge">RelDataType</code> to do field name matching. Fix
<code class="language-plaintext highlighter-rouge">RelDataTypeImpl</code> to correctly use the case sensitive flag rather than
ignoring it.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-119">CALCITE-119</a>]
Comparing Java type long with SQL type INTEGER gives wrong answer</li>
<li>Enable multi-threaded testing, and fix race conditions.
<ul>
<li>Two of the race conditions involved involving trait caches. The
other was indeterminacy in type system when precision was not
specified but had a default; now we canonize TIME to TIME(0), for
instance.</li>
</ul>
</li>
<li>Convert files to <code class="language-plaintext highlighter-rouge">us-ascii</code>.</li>
<li>Work around
[<a href="https://jira.codehaus.org/browse/JANINO-169">JANINO-169</a>].</li>
<li>Refactor SQL validator testing infrastructure so SQL parser is
configurable.</li>
<li>Add <code class="language-plaintext highlighter-rouge">optiq-mat-plugin</code> to README.</li>
<li>Fix the check for duplicate subsets in a rule match.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-112">CALCITE-112</a>]
Java boolean column should be treated as SQL boolean</li>
<li>Fix escaped unicode characters above 0x8000. Add tests for unicode
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>
<h4 id="fixes-0-4-17">API changes</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-106">CALCITE-106</a>]
Make <code class="language-plaintext highlighter-rouge">Schema</code> and <code class="language-plaintext highlighter-rouge">Table</code> SPIs simpler to implement, and make them
re-usable across connections
(<strong>This is a breaking change</strong>.)</li>
<li>Make it easier to define sub-classes of rule operands. The new class
<code class="language-plaintext highlighter-rouge">RelOptRuleOperandChildren</code> contains the children of an operand and
the policy for dealing with them. Existing rules now use the new
methods to construct operands: <code class="language-plaintext highlighter-rouge">operand()</code>, <code class="language-plaintext highlighter-rouge">leaf()</code>, <code class="language-plaintext highlighter-rouge">any()</code>, <code class="language-plaintext highlighter-rouge">none()</code>,
<code class="language-plaintext highlighter-rouge">unordered()</code>. The previous methods are now deprecated and will be
removed before 0.4.18. (<strong>This is a breaking change</strong>.)</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-101">CALCITE-101</a>]
Enable phased access to the Optiq engine</li>
<li>List-handling methods in <code class="language-plaintext highlighter-rouge">Util</code>: add methods <code class="language-plaintext highlighter-rouge">skipLast</code>, <code class="language-plaintext highlighter-rouge">last</code>, <code class="language-plaintext highlighter-rouge">skip</code>;
remove <code class="language-plaintext highlighter-rouge">subList</code>, <code class="language-plaintext highlighter-rouge">butLast</code>.</li>
<li>Convert <code class="language-plaintext highlighter-rouge">SqlIdentifier.names</code> from <code class="language-plaintext highlighter-rouge">String[]</code> to <code class="language-plaintext highlighter-rouge">ImmutableList&lt;String&gt;</code>.</li>
<li>Rename <code class="language-plaintext highlighter-rouge">OptiqAssert.assertThat()</code> to <code class="language-plaintext highlighter-rouge">that()</code>, to avoid clash with junit’s
<code class="language-plaintext highlighter-rouge">Assert.assertThat()</code>.</li>
<li>Usability improvements for <code class="language-plaintext highlighter-rouge">RelDataTypeFactory.FieldInfoBuilder</code>. It
now has a type-factory, so you can just call <code class="language-plaintext highlighter-rouge">build()</code>.</li>
<li>Rework <code class="language-plaintext highlighter-rouge">HepProgramBuilder</code> into a fluent API.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-105">CALCITE-105</a>]
Externalize RelNode to and from JSON</li>
</ul>
<h4 id="tuning-0-4-17">Tuning</h4>
<ul>
<li>If <code class="language-plaintext highlighter-rouge">EnumerableAggregateRel</code> has no aggregate functions, generate a
call to <code class="language-plaintext highlighter-rouge">Enumerable.distinct()</code>, thereby saving the effort of
building trivial accumulators.</li>
<li>Default rule set now does not introduce <code class="language-plaintext highlighter-rouge">CalcRel</code> until a later phase
of planning. This reduces the number of trivial projects and calcs
created, merged, and elimated.</li>
<li>Reduce the amount of time spent creating record types that
already exist.</li>
<li>More efficient implementation of <code class="language-plaintext highlighter-rouge">Util.isDistinct</code> for small lists.</li>
<li>When an internal record has 0 fields, rather than generating a
synthetic class and lots of instances that are all the same, use the
new <code class="language-plaintext highlighter-rouge">Unit</code> class, which is a singleton.</li>
<li>To take advantage of asymmetric hash join added recently in linq4j,
tweak cost of <code class="language-plaintext highlighter-rouge">EnumerableJoinRel</code> so that join is cheaper if the
larger input is on the left, and more expensive if it is a cartesian
product.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-70">CALCITE-70</a>]
Joins seem to be very expensive in memory</li>
<li>Make planning process more efficient by not sorting the list of
matched rules each cycle. It is sorted if tracing is enabled;
otherwise we scan to find the most important element. For this list,
replace <code class="language-plaintext highlighter-rouge">LinkedList</code> with <code class="language-plaintext highlighter-rouge">ChunkList</code>, which has an O(1) remove and add,
a fast O(n) get, and fast scan.</li>
</ul>
<h4 id="other-0-4-17">Other</h4>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-87">CALCITE-87</a>]
Constant folding
<ul>
<li>Rules for constant-expression reduction, and to simplify/eliminate
<code class="language-plaintext highlighter-rouge">VALUES</code> operator.</li>
</ul>
</li>
<li>Graph algorithms: Implement breadth-first iterator and cycle-detector.</li>
<li>Fix bug in planner which occurred when two <code class="language-plaintext highlighter-rouge">RelNode</code>s have identical
digest but different row-type.</li>
<li>Fix link to optiq-csv tutorial.</li>
<li>Fix bugs in <code class="language-plaintext highlighter-rouge">RemoveTrivialProjectRule.strip</code>, <code class="language-plaintext highlighter-rouge">JdbcProjectRel.implement</code>
and <code class="language-plaintext highlighter-rouge">SortRel.computeSelfCost</code>.</li>
<li>Reformat code, and remove <code class="language-plaintext highlighter-rouge">@author</code> tags.</li>
<li>Upgrade to eigenbase-xom-1.3.4, eigenbase-properties-1.1.4,
eigenbase-resgen-1.3.6.</li>
<li>Upgrade to linq4j-0.1.12.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-97">CALCITE-97</a>]
Correlated EXISTS</li>
<li>Fix a bug in <code class="language-plaintext highlighter-rouge">VolcanoCost</code>.</li>
<li>Add class <code class="language-plaintext highlighter-rouge">FoodMartQuerySet</code>, that contains the 6,700 foodmart queries.</li>
<li>Fix factory class names in <code class="language-plaintext 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>
<li>Allow <code class="language-plaintext highlighter-rouge">CloneSchema</code> to be specified in terms of url, driver, user,
password; not just dataSource.</li>
<li>Wrap internal error in <code class="language-plaintext 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>
<ul>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-69">CALCITE-69</a>]
Can’t join on string columns and other problems with expressions in the join
condition</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-74">CALCITE-74</a>]
JOIN … USING fails in 3-way join with UnsupportedOperationException.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-65">CALCITE-65</a>]
Fix issues in the JDBC driver, and in particular to DatabaseMetaData methods,
to make Squirrel-SQL run better.</li>
<li>Fix JDBC column, table, schema names for when the table is not in a schema of
depth 1.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-85">CALCITE-85</a>]
Adding a table to the root schema causes breakage in OptiqPrepareImpl</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-84">CALCITE-84</a>]
Extract Optiq’s JDBC driver as a new JDBC driver framework, Avatica.
Other projects can use this to implement a JDBC driver by implementing
just a few methods. If you wish to use Optiq’s JDBC driver, you will
now need to include optiq-avatica.jar in addition to optiq-core.jar.
Avatica does not depend on anything besides the standard Java library.</li>
<li>Support for parameters in PreparedStatement.</li>
<li>First steps in recognizing complex materializations. Internally we introduce a
concept called a “star table”, virtual table composed of real tables joined
together via many-to-one relationships. The queries that define
materializations and end-user queries are canonized in terms of star tables.
Matching (not done yet) will then be a matter of looking for sort, groupBy,
project. It is not yet possible to define a star in an Optiq model file.</li>
<li>Add section to <a href="https://github.com/apache/calcite/blob/main/site/_docs/howto.md">HOWTO</a>
on implementing adapters.</li>
<li>Fix data type conversions when creating a clone table in memory.</li>
<li>Fix how strings are escaped in JsonBuilder.</li>
<li>Test suite now depends on an embedded hsqldb database, so you can run
<code>mvn test</code> right after pulling from git. You can instead use a
MySQL database if you specify ‘-Dcalcite.test.db=mysql’, but you need to
manually populate it.</li>
<li>Fix a planner issue which occurs when the left and right children of join are
the same relational expression, caused by a self-join query.</li>
<li>[<a href="https://issues.apache.org/jira/browse/CALCITE-76">CALCITE-76</a>]
Precedence of the item operator, <code>map[index]</code>; remove the space
before ‘[’ when converting parse tree to string.</li>
<li>Allow <code>CAST(expression AS ANY)</code>, and fix an issue with the ANY type
and NULL values.</li>
<li>Handle null timestamps and dates coming out of JDBC adapter.</li>
<li>Add <code>jdbcDriver</code> attribute to JDBC schema in model, for drivers
that do not auto-register.</li>
<li>Allow join rules to match any subclass of JoinRelBase.</li>
<li>Push projects, filters and sorts down to MongoDB. (Fixes
[<a href="https://issues.apache.org/jira/browse/CALCITE-57">CALCITE-57</a>],
[<a href="https://issues.apache.org/jira/browse/CALCITE-60">CALCITE-60</a>] and
[<a href="https://issues.apache.org/jira/browse/CALCITE-72">CALCITE-72</a>].)</li>
<li>Add instructions for loading FoodMart data set into MongoDB, and how to enable
tracing.</li>
<li>Now runs on JDK 1.8 (still runs on JDK 1.6 and JDK 1.7).</li>
<li>Upgrade to junit-4.11 (avoiding the dodgy junit-4.1.12).</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>
<ul>
<li>Lots of good stuff that this margin is too small to contain. See
<a href="https://github.com/apache/calcite/blob/main/site/_docs/reference.md">SQL language reference</a> and
<a href="https://github.com/apache/calcite/blob/main/site/_docs/model.md">JSON model reference</a>.</li>
</ul>
<h1 id="optiq-csv-release-history">Optiq-csv release history</h1>
<p>Optiq-csv-0.3 was the last independent release of optiq-csv. From
calcite-0.9.2 onwards, the code was included as the
calcite-example-csv module.</p>
<ul>
<li>Upgrade to calcite-0.9.1</li>
<li>Support gzip-compressed CSV and JSON files (recognized by ‘.gz’ suffix)</li>
<li>Cleanup, and fix minor timezone issue in a test</li>
<li>Support for date types (date, time, timestamp) (Martijn van den Broek)</li>
<li>Upgrade to optiq-0.8, optiq-avatica-0.8, linq4j-0.4</li>
<li>Add support for JSON files (recognized by ‘.json’ suffix)</li>
<li>Upgrade maven-release-plugin to version 2.4.2</li>
<li>Upgrade to optiq-0.6, linq4j-0.2</li>
<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>
<ul>
<li>Upgrade to optiq-0.5</li>
<li>Add workaround to
[<a href="https://github.com/jline/jline2/issues/62">JLINE2-62</a>]
to <code class="language-plaintext highlighter-rouge">sqlline.bat</code> (windows) and <code class="language-plaintext highlighter-rouge">sqlline</code> (windows using cygwin)</li>
<li>Fix classpath construction: <code class="language-plaintext highlighter-rouge">sqlline.bat</code> copies dependencies to
<code class="language-plaintext highlighter-rouge">target/dependencies</code>; <code class="language-plaintext highlighter-rouge">sqlline</code> constructs <code class="language-plaintext 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>
<ul>
<li>Add test case for
[<a href="https://issues.apache.org/jira/browse/CALCITE-112">CALCITE-112</a>]</li>
<li>Add <code class="language-plaintext highlighter-rouge">sqlline.bat</code>, Windows SQL shell (based on fix for
[<a href="https://issues.apache.org/jira/browse/DRILL-338">DRILL-338</a>])</li>
<li>Upgrade to optiq-0.4.18, sqlline-1.1.7</li>
<li>Return a single object for single-col enumerator (Gabriel Reid)</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>
<ul>
<li>Add release notes and history</li>
<li>Enable maven-release-plugin</li>
<li>Upgrade to optiq-0.4.17, linq4j-0.1.12, sqlline-1.1.6</li>
<li>Upgrade tutorial for new Schema and Table SPIs</li>
<li>Fixes for optiq SPI changes in
[<a href="https://issues.apache.org/jira/browse/CALCITE-106">CALCITE-106</a>]</li>
<li>Enable oraclejdk8 in Travis CI</li>
<li>Fix bug where non-existent directory would give NPE; instead print warning</li>
<li>Add an example of a planner rule</li>
<li>Add <code class="language-plaintext highlighter-rouge">CsvTableFactory</code>, an example of a custom table</li>
<li>Add a view to tutorial</li>
<li>Split into scenario with a “simple” schema that generates tables
(<code class="language-plaintext highlighter-rouge">CsvTable</code>) that just execute and a “smart” schema that generates
tables (<code class="language-plaintext highlighter-rouge">CsvSmartTable</code>) that undergo optimization</li>
<li>Make <code class="language-plaintext highlighter-rouge">CsvEnumerator</code> a top-level class</li>
<li>Implement the algorithms to sniff names and types from the first
row, and to return an enumerator of all rows</li>
<li>Read column types from header of CSV file</li>
</ul>
<h1 id="linq4j-release-history">Linq4j release history</h1>
<p>Linq4j-0.4 was the last independent release of linq4j. From
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>
<ul>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/27">#27</a>,
“Incorrectly inlines non-final variable”.</li>
<li>Maven build process now deploys web site.</li>
<li>Implement <code class="language-plaintext highlighter-rouge">Enumerable</code> methods: <code class="language-plaintext highlighter-rouge">any</code>, <code class="language-plaintext highlighter-rouge">all</code>,
<code class="language-plaintext highlighter-rouge">contains</code> with <code class="language-plaintext highlighter-rouge">EqualityComparer</code>, <code class="language-plaintext highlighter-rouge">first</code>, <code class="language-plaintext 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>
<ul>
<li>Move optimizer visitor from optiq to linq4j; add
<code class="language-plaintext highlighter-rouge">ExpressionType.modifiesLvalue</code> to avoid invalid inlining.</li>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/17">#17</a>,
“Assign constant expressions to ‘static final’ members”;
add <code class="language-plaintext highlighter-rouge">@Deterministic</code> annotation to help deduce which expressions are
constant.</li>
<li>Multi-pass optimization: some of the variables might be avoided and
inlined after the first pass.</li>
<li>Various other peephole optimizations: <code class="language-plaintext highlighter-rouge">Boolean.valueOf(const)</code>,
‘not’ expressions (<code class="language-plaintext highlighter-rouge">!const</code>, <code class="language-plaintext highlighter-rouge">!!a</code>, <code class="language-plaintext highlighter-rouge">!(a==b)</code>, <code class="language-plaintext highlighter-rouge">!(a!=b)</code>, <code class="language-plaintext highlighter-rouge">!(a&gt;b)</code>,
etc.),
‘?’ expressions coming from <code class="language-plaintext highlighter-rouge">CASE</code> (<code class="language-plaintext highlighter-rouge">a ? booleanConstant : b</code> and <code class="language-plaintext highlighter-rouge">a
? b : booleanConstant</code>).</li>
<li>Implement left, right and full outer join.</li>
<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>
<ul>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/8">#8</a>,
“Javadoc generation fails under JDK 1.8”.</li>
<li>Fix <a href="https://github.com/julianhyde/linq4j/issues/15">#15</a>,
<code class="language-plaintext highlighter-rouge">Expressions.ifThenElse</code> does not work”.</li>
<li>Use <code class="language-plaintext highlighter-rouge">HashMap</code> for searching of declarations to reuse; consider both
<code class="language-plaintext highlighter-rouge">optimizing</code> and <code class="language-plaintext highlighter-rouge">optimize</code> flags when reusing.</li>
<li>Implement <code class="language-plaintext highlighter-rouge">equals</code> and <code class="language-plaintext highlighter-rouge">hashCode</code> for expressions. Hash codes for
complex expressions are cached into a field of the expression.</li>
<li>Add example, <code class="language-plaintext highlighter-rouge">com.example.Linq4jExample</code>.</li>
<li>Fix optimizing away parameter declarations in assignment target.</li>
<li>Support Windows path names in checkstyle-suppresions.</li>
<li>Support <code class="language-plaintext highlighter-rouge">Statement.toString</code> via <code class="language-plaintext highlighter-rouge">ExpressionWriter</code>.</li>
<li>Use <code class="language-plaintext highlighter-rouge">AtomicInteger</code> for naming of <code class="language-plaintext highlighter-rouge">ParameterExpression</code>s to avoid
conflicts in multithreaded usage</li>
<li>Cleanup: use <code class="language-plaintext highlighter-rouge">Functions.adapt</code> rather than <code class="language-plaintext highlighter-rouge">new AbstractList</code>
</li>
<li>Add <code class="language-plaintext highlighter-rouge">NOTICE</code> and <code class="language-plaintext highlighter-rouge">LICENSE</code> files in generated JAR file.</li>
<li>Optimize <code class="language-plaintext 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>
<ul>
<li>Remove spurious “null” generated when converting expression to string.</li>
<li>Allow a field declaration to not have an initializer.</li>
<li>Add <code class="language-plaintext highlighter-rouge">Primitive.defaultValue</code>.</li>
<li>Enable <code class="language-plaintext 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>
<ul>
<li>Add release notes.</li>
<li>Fix implementation of <code class="language-plaintext highlighter-rouge">Enumerable.asEnumerable</code> in
<code class="language-plaintext highlighter-rouge">DefaultQueryable</code> (inherited by most classes that implement
<code class="language-plaintext 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>
<ul>
<li>Initial commit</li>
</ul>
<div class="section-nav">
<div class="left align-right">
<a href="/docs/howto.html" class="prev">Previous</a>
</div>
<div class="right align-left">
<a href="/docs/powered_by.html" class="next">Next</a>
</div>
</div>
<div class="clear"></div>
</article>
</div>
<div class="unit one-fifth hide-on-mobiles">
<aside>
<h4>Overview</h4>
<ul>
<li class=""><a href="/docs/index.html">Background</a></li>
<li class=""><a href="/docs/tutorial.html">Tutorial</a></li>
<li class=""><a href="/docs/algebra.html">Algebra</a></li>
</ul>
<h4>Advanced</h4>
<ul>
<li class=""><a href="/docs/adapter.html">Adapters</a></li>
<li class=""><a href="/docs/spatial.html">Spatial</a></li>
<li class=""><a href="/docs/stream.html">Streaming</a></li>
<li class=""><a href="/docs/materialized_views.html">Materialized Views</a></li>
<li class=""><a href="/docs/lattice.html">Lattices</a></li>
</ul>
<h4>Avatica</h4>
<ul>
<li class=""><a href="/docs/avatica_overview.html">Overview</a></li>
<li class=""><a href="/docs/avatica_roadmap.html">Roadmap</a></li>
<li class=""><a href="/docs/avatica_json_reference.html">JSON Reference</a></li>
<li class=""><a href="/docs/avatica_protobuf_reference.html">Protobuf Reference</a></li>
</ul>
<h4>Reference</h4>
<ul>
<li class=""><a href="/docs/reference.html">SQL language</a></li>
<li class=""><a href="/docs/model.html">JSON/YAML models</a></li>
<li class=""><a href="/docs/howto.html">HOWTO</a></li>
</ul>
<h4>Meta</h4>
<ul>
<li class="current"><a href="/docs/history.html">History</a></li>
<li class=""><a href="/docs/powered_by.html">Powered by Calcite</a></li>
<li class=""><a href="/javadocAggregate">API</a></li>
</ul>
</aside>
</div>
<div class="clear"></div>
</div>
</section>
<footer role="contentinfo">
<div id="poweredby">
<a href="http://www.apache.org/">
<span class="sr-only">Apache</span>
<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 © 2023
<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
trademarks of the Apache Software Foundation.
</p>
<p>
<a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a>
</p>
</div>
</footer>
<script>
var anchorForId = function (id) {
var anchor = document.createElement("a");
anchor.className = "header-link";
anchor.href = "#" + id;
anchor.innerHTML = "<span class=\"sr-only\">Permalink</span><i class=\"fa fa-link\"></i>";
anchor.title = "Permalink";
return anchor;
};
var linkifyAnchors = function (level, containingElement) {
var headers = containingElement.getElementsByTagName("h" + level);
for (var h = 0; h < headers.length; h++) {
var header = headers[h];
if (typeof header.id !== "undefined" && header.id !== "") {
header.appendChild(anchorForId(header.id));
}
}
};
document.onreadystatechange = function () {
if (this.readyState === "complete") {
var contentBlock = document.getElementsByClassName("docs")[0] || document.getElementsByClassName("news")[0];
if (!contentBlock) {
return;
}
for (var level = 1; level <= 6; level++) {
linkifyAnchors(level, contentBlock);
}
}
};
</script>
</body>
</html>