You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by fr...@apache.org on 2019/01/09 22:21:12 UTC

svn commit: r1850910 [8/25] - in /calcite/site: ./ assets/ assets/css/ community/ css/ develop/ docs/ docs/api/ docs/testapi/ downloads/ fonts/ img/ js/ news/ news/2014/ news/2014/06/ news/2014/06/27/ news/2014/06/27/release-0.8.0-incubating/ news/2014...

Added: calcite/site/docs/history.html
URL: http://svn.apache.org/viewvc/calcite/site/docs/history.html?rev=1850910&view=auto
==============================================================================
--- calcite/site/docs/history.html (added)
+++ calcite/site/docs/history.html Wed Jan  9 22:21:11 2019
@@ -0,0 +1,5530 @@
+<!DOCTYPE HTML>
+<html lang="en-US">
+<head>
+  <meta charset="UTF-8">
+  <title>History</title>
+  <meta name="viewport" content="width=device-width,initial-scale=1">
+  <meta name="generator" content="Jekyll v3.7.3">
+  <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">
+  <!--[if lt IE 9]>
+  <script src="/js/html5shiv.min.js"></script>
+  <script src="/js/respond.min.js"></script>
+  <![endif]-->
+</head>
+
+
+<body class="wrap">
+  <header role="banner">
+  <nav class="mobile-nav show-on-mobiles">
+    <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 class="grid">
+    <div class="unit one-third center-on-mobiles">
+      <h1>
+        <a href="/">
+          <span class="sr-only">Apache Calcite</span>
+          <img src="/img/logo.png" width="226" height="140" alt="Calcite Logo">
+        </a>
+      </h1>
+    </div>
+    <nav class="main-nav unit two-thirds hide-on-mobiles">
+      <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>
+
+<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="highlighter-rouge">pom.xml</code>.</p>
+
+<h4 id="new-features">New features</h4>
+
+<ul>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2662">CALCITE-2662</a>]
+In <code class="highlighter-rouge">Planner</code>, allow parsing a stream (<code class="highlighter-rouge">Reader</code>) instead of a <code class="highlighter-rouge">String</code>
+(Enrico Olivelli)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2699">CALCITE-2699</a>]
+<code class="highlighter-rouge">TIMESTAMPADD</code> function now applies to <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">TIME</code> as well as <code class="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="highlighter-rouge">CREATE</code> and <code class="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="highlighter-rouge">JSON_EXISTS</code>, <code class="highlighter-rouge">JSON_VALUE</code>, <code class="highlighter-rouge">JSON_QUERY</code>,
+<code class="highlighter-rouge">JSON_OBJECT</code>, <code class="highlighter-rouge">JSON_OBJECTAGG</code>, <code class="highlighter-rouge">JSON_ARRAY</code>, <code class="highlighter-rouge">JSON_ARRAYAGG</code>, <code class="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="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="highlighter-rouge">YEAR</code>, <code class="highlighter-rouge">SECOND</code>, <code class="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="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="highlighter-rouge">COVAR_POP</code>, <code class="highlighter-rouge">COVAR_SAMP</code>, <code class="highlighter-rouge">REGR_COUNT</code>,
+<code class="highlighter-rouge">REGR_SXX</code>, <code class="highlighter-rouge">REGR_SYY</code></li>
+  <li>SQL advisor (<code class="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="highlighter-rouge">from_clause</code> when <code class="highlighter-rouge">_suggest_</code> token is located in one of the
+<code class="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="highlighter-rouge">*</code> is present in query</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2475">CALCITE-2475</a>]
+Support <code class="highlighter-rouge">MINUS</code></li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2473">CALCITE-2473</a>]
+Support <code class="highlighter-rouge">--</code> comments</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2434">CALCITE-2434</a>]
+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="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="highlighter-rouge">Exchange</code> and <code class="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="highlighter-rouge">RelBuilder.scan</code> should expand <code class="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="highlighter-rouge">groupKey</code> method that assumes only one grouping set</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2470">CALCITE-2470</a>]
+<code class="highlighter-rouge">project</code> method should combine expressions if the underlying
+node is a <code class="highlighter-rouge">Project</code></li>
+    </ul>
+  </li>
+  <li>Elasticsearch adapter:
+    <ul>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2679">CALCITE-2679</a>]
+Implement <code class="highlighter-rouge">DISTINCT</code> and <code class="highlighter-rouge">GROUP BY</code> without aggregate functions (Siyuan Liu)</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2689">CALCITE-2689</a>]
+Allow grouping on non-textual fields like <code class="highlighter-rouge">DATE</code> and <code class="highlighter-rouge">NUMBER</code></li>
+      <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="highlighter-rouge">NOT</code> operator</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2578">CALCITE-2578</a>]
+Support <code class="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="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="highlighter-rouge">DATE</code>, <code class="highlighter-rouge">TIME</code>, <code class="highlighter-rouge">TIMESTAMP</code> fields (Sandeep Chada)</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2671">CALCITE-2671</a>]
+<code class="highlighter-rouge">GeodeFilter</code> now converts multiple <code class="highlighter-rouge">OR</code> predicates (on same attribute) into
+a single <code class="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="highlighter-rouge">BOOLEAN</code> values as strings (Andrei Sereda)</li>
+    </ul>
+  </li>
+</ul>
+
+<h4 id="bug-fixes-api-changes-and-minor-enhancements">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="highlighter-rouge">IndexOutOfBoundsException</code> when trying to infer operand type
+from <code class="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="highlighter-rouge">RexBuilder</code> gives <code class="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="highlighter-rouge">INTEGER</code> and <code class="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="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="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="highlighter-rouge">RelMetadataQuery.getTableOrigin</code> throws <code class="highlighter-rouge">IndexOutOfBoundsException</code> if
+<code class="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="highlighter-rouge">Interner</code> instead of <code class="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="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="highlighter-rouge">BETWEEN</code> and <code class="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="highlighter-rouge">RexNode</code> and its sub-classes implement <code class="highlighter-rouge">hashCode</code> and <code class="highlighter-rouge">equals</code>
+methods (Zoltan Haindrich)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2494">CALCITE-2494</a>]
+<code class="highlighter-rouge">RexFieldAccess</code> should implement <code class="highlighter-rouge">equals</code> and <code class="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="highlighter-rouge">BasicSqlType</code> immutable, and now <code class="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="highlighter-rouge">IS DISTINCT FROM</code> could lead to exceptions in <code class="highlighter-rouge">ReduceExpressionsRule</code>
+(Zoltan Haindrich)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2673">CALCITE-2673</a>]
+<code class="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="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="highlighter-rouge">RelMdTableReferences</code> should check whether references inferred from input are
+null for <code class="highlighter-rouge">Union</code>/<code class="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="highlighter-rouge">RelMdExpressionLineage</code></li>
+  <li>Fix invocation of deprecated constructor of <code class="highlighter-rouge">SqlAggFunction</code> (Hongze Zhang)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2652">CALCITE-2652</a>]
+<code class="highlighter-rouge">SqlNode</code> to SQL conversion fails if the join condition references a <code class="highlighter-rouge">BOOLEAN</code>
+column (Zoltan Haindrich)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2657">CALCITE-2657</a>]
+In <code class="highlighter-rouge">RexShuttle</code>, use <code class="highlighter-rouge">RexCall.clone</code> instead of <code class="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="highlighter-rouge">EnumerableCorrelate</code> (Ruben Quesada Lopez)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2605">CALCITE-2605</a>]
+Support left outer join via <code class="highlighter-rouge">EnumerableCorrelate</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1174">CALCITE-1174</a>]
+When generating SQL, translate <code class="highlighter-rouge">SUM0(x)</code> to <code class="highlighter-rouge">COALESCE(SUM(x), 0)</code></li>
+  <li><code class="highlighter-rouge">RelBuilder.toString()</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2617">CALCITE-2617</a>]
+Add a variant of <code class="highlighter-rouge">FilterProjectTransposeRule</code> that can push down a <code class="highlighter-rouge">Filter</code>
+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="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="highlighter-rouge">NullPointerException</code> while generating <code class="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="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="highlighter-rouge">OR</code> contains <code class="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="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="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="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="highlighter-rouge">CompoundQueryExpression</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2562">CALCITE-2562</a>]
+Remove dead code in <code class="highlighter-rouge">StandardConvertletTable#convertDatetimeMinus</code></li>
+  <li>Avoid <code class="highlighter-rouge">NullPointerException</code> when <code class="highlighter-rouge">FlatList</code> contains null elements</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2561">CALCITE-2561</a>]
+Remove dead code in <code class="highlighter-rouge">Lattice</code> constructor</li>
+  <li>Apply small refactorings to Calcite codebase (Java 5, Java 7, Java 8)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2572">CALCITE-2572</a>]
+SQL standard semantics for <code class="highlighter-rouge">SUBSTRING</code> function (Andrew Pilloud)</li>
+  <li>Remove dead code: <code class="highlighter-rouge">Compatible</code>, <code class="highlighter-rouge">CompatibleGuava11</code></li>
+  <li>Remove “Now, do something with table” from standard output when implementing
+sequences</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2444">CALCITE-2444</a>]
+Handle <code class="highlighter-rouge">IN</code> expressions when converting <code class="highlighter-rouge">SqlNode</code> to SQL (Zoltan Haindrich)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2537">CALCITE-2537</a>]
+Use litmus for <code class="highlighter-rouge">VolcanoPlanner#validate</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2546">CALCITE-2546</a>]
+Reduce precision of <code class="highlighter-rouge">Profiler</code>’s <code class="highlighter-rouge">surprise</code> and <code class="highlighter-rouge">cardinality</code> attributes to
+avoid floating point discrepancies (Alisha Prabhu)</li>
+  <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="highlighter-rouge">SqlToRelConverter</code> gives <code class="highlighter-rouge">ClassCastException</code> while handling <code class="highlighter-rouge">IN</code> inside
+<code class="highlighter-rouge">WHERE NOT CASE</code> (pengzhiwei)</li>
+  <li>Remove redundant <code class="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="highlighter-rouge">matchRecognize</code> field of <code class="highlighter-rouge">SqlSelect</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2514">CALCITE-2514</a>]
+Add <code class="highlighter-rouge">SqlIdentifier</code> conversion to <code class="highlighter-rouge">ITEM</code> operator for dynamic tables in
+<code class="highlighter-rouge">ExtendedExpander</code> (Arina Ielchiieva)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2491">CALCITE-2491</a>]
+Refactor <code class="highlighter-rouge">NameSet</code>, <code class="highlighter-rouge">NameMap</code>, and <code class="highlighter-rouge">NameMultimap</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2520">CALCITE-2520</a>]
+Make <code class="highlighter-rouge">SparkHandlerImpl#compile</code> silent by default, print code in
+<code class="highlighter-rouge">calcite.debug=true</code> mode only</li>
+  <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="highlighter-rouge">Integer.MAX_VALUE</code> (Hongze Zhang)</li>
+  <li>Support <code class="highlighter-rouge">AND</code>, <code class="highlighter-rouge">OR</code>, <code class="highlighter-rouge">COALESCE</code>, <code class="highlighter-rouge">IS [NOT] DISTINCT</code> in <code class="highlighter-rouge">RexUtil#op</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2495">CALCITE-2495</a>]
+Support encoded URLs in <code class="highlighter-rouge">org.apache.calcite.util.Source</code>, and use it for URL
+→ File conversion in tests</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2271">CALCITE-2271</a>]
+Join of two views with window aggregates produces incorrect results or throws
+<code class="highlighter-rouge">NullPointerException</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2481">CALCITE-2481</a>]
+<code class="highlighter-rouge">NameSet</code> assumes lower-case characters have greater codes, which does not hold
+for certain characters</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2480">CALCITE-2480</a>]
+<code class="highlighter-rouge">NameSet.contains</code> wrongly returns <code class="highlighter-rouge">false</code> when element in set is upper-case
+and <code class="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="highlighter-rouge">POWER</code>, <code class="highlighter-rouge">ATAN2</code> functions fail with <code class="highlighter-rouge">NoSuchMethodException</code></li>
+  <li>Typo in <code class="highlighter-rouge">HepPlanner</code> trace message (Dylan)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2416">CALCITE-2416</a>]
+<code class="highlighter-rouge">AssertionError</code> when determining monotonicity (Alina Ipatina)</li>
+  <li>Java 8: use <code class="highlighter-rouge">Map.computeIfAbsent</code> when possible</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2431">CALCITE-2431</a>]
+<code class="highlighter-rouge">SqlUtil.getAncestry</code> throws <code class="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="highlighter-rouge">RelDataTypeImpl.getFieldList</code> throws <code class="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="highlighter-rouge">SqlValidatorImpl.lookupFieldNamespace</code> throws <code class="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="highlighter-rouge">RelToSqlConverter</code> throws <code class="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="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="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="highlighter-rouge">RexSimplify</code>):
+    <ul>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2731">CALCITE-2731</a>]
+<code class="highlighter-rouge">RexProgramBuilder</code> makes unsafe simplifications to <code class="highlighter-rouge">CASE</code> expressions (Zoltan
+Haindrich)</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2730">CALCITE-2730</a>]
+<code class="highlighter-rouge">RelBuilder</code> incorrectly simplifies a <code class="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="highlighter-rouge">ReduceExpressionRule</code> may oversimplify filter conditions containing <code class="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="highlighter-rouge">CASE</code></li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2639">CALCITE-2639</a>]
+<code class="highlighter-rouge">FilterReduceExpressionsRule</code> causes <code class="highlighter-rouge">ArithmeticException</code> at execution time</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2620">CALCITE-2620</a>]
+Simplify <code class="highlighter-rouge">COALESCE(NULL, x)</code> → <code class="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="highlighter-rouge">NOT-AND-OR</code>, <code class="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="highlighter-rouge">UNKNOWN</code> value will be
+interpreted as is, or as <code class="highlighter-rouge">TRUE</code> or <code class="highlighter-rouge">FALSE</code></li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2438">CALCITE-2438</a>]
+Fix wrong results for <code class="highlighter-rouge">IS NOT FALSE(FALSE)</code> (zhiwei.pzw) (Zoltan Haindrich)</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2506">CALCITE-2506</a>]
+Simplifying <code class="highlighter-rouge">COALESCE(+ nullInt, +vInt())</code> results in
+<code class="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="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="highlighter-rouge">CASE</code> with repeated branches gives <code class="highlighter-rouge">AssertionError</code>
+(pengzhiwei)</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2590">CALCITE-2590</a>]
+Remove redundant <code class="highlighter-rouge">CAST</code> when operand has exactly the same type as it is casted to</li>
+      <li>Implement fuzzy generator for <code class="highlighter-rouge">CASE</code> expressions</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2556">CALCITE-2556</a>]
+Simplify <code class="highlighter-rouge">NOT TRUE</code> → <code class="highlighter-rouge">FALSE</code>, and <code class="highlighter-rouge">NOT FALSE</code> → <code class="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="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="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="highlighter-rouge">IS NULL(NULL)</code> to <code class="highlighter-rouge">TRUE</code> (pengzhiwei)</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2555">CALCITE-2555</a>]
+RexSimplify: Simplify <code class="highlighter-rouge">x &gt;= NULL</code> to <code class="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="highlighter-rouge">(NOT x) IS NULL</code> → <code class="highlighter-rouge">x IS NULL</code> (pengzhiwei);
+also, simplify <code class="highlighter-rouge">f(x, y) IS NULL</code> → <code class="highlighter-rouge">x IS NULL OR y IS NULL</code> if <code class="highlighter-rouge">f</code> is a
+strong operator</li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>]
+Simplify <code class="highlighter-rouge">AND(x, y, NOT(y))</code> → <code class="highlighter-rouge">AND(x, null, IS NULL(y))</code></li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2327">CALCITE-2327</a>]
+Avoid simplification of <code class="highlighter-rouge">x AND NOT(x)</code> to <code class="highlighter-rouge">FALSE</code> for nullable <code class="highlighter-rouge">x</code></li>
+      <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2505">CALCITE-2505</a>]
+<code class="highlighter-rouge">AssertionError</code> when simplifying <code class="highlighter-rouge">IS [NOT] DISTINCT</code> expressions
+(Haisheng Yuan)</li>
+    </ul>
+  </li>
+</ul>
+
+<h4 id="build-and-test-suite">Build and test suite</h4>
+
+<ul>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2678">CALCITE-2678</a>]
+<code class="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="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="highlighter-rouge">checkSimplify3</code> with <code class="highlighter-rouge">expected</code>,
+<code class="highlighter-rouge">expectedFalse</code>, <code class="highlighter-rouge">expectedTrue</code> all the same</li>
+  <li>Geode adapter tests: Removed unnecessary <code class="highlighter-rouge">try/final</code> block in <code class="highlighter-rouge">RefCountPolicy</code></li>
+  <li>Add license to <code class="highlighter-rouge">TestKtTest</code> and add <code class="highlighter-rouge">apache-rat:check</code> to Travis CI</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2112">CALCITE-2112</a>]
+Add Apache license header to <code class="highlighter-rouge">maven-wrapper.properties</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2588">CALCITE-2588</a>]
+Run Geode adapter tests with an embedded instance</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2594">CALCITE-2594</a>]
+Ensure <code class="highlighter-rouge">forbiddenapis</code> and <code class="highlighter-rouge">maven-compiler</code> use the correct JDK version</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2642">CALCITE-2642</a>]
+Checkstyle complains that <code class="highlighter-rouge">maven-wrapper.properties</code> is missing a header</li>
+  <li><code class="highlighter-rouge">commons:commons-pool2</code> is used in tests only, so use <code class="highlighter-rouge">scope=test</code> for it</li>
+  <li>Make <code class="highlighter-rouge">findbugs:jsr305</code> dependency optional</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2458">CALCITE-2458</a>]
+Add Kotlin as a test dependency</li>
+  <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="highlighter-rouge">failOnWarnings</code> to <code class="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="highlighter-rouge">CsvTest.testCsvStream</code> failing often: add <code class="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="highlighter-rouge">SqlTester.checkFails</code> (previously it was a no-op) (Hongze Zhang)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2558">CALCITE-2558</a>]
+Improve re-compilation times by skipping <code class="highlighter-rouge">parser.java</code> update on each build</li>
+  <li>Increase timeout for Cassandra daemon startup for <code class="highlighter-rouge">CassandraAdapterTest</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2412">CALCITE-2412</a>]
+Add Windows CI via AppVeyor (Sergey Nuyanzin)</li>
+  <li>Reduce <code class="highlighter-rouge">HepPlannerTest#testRuleApplyCount</code> complexity</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2523">CALCITE-2523</a>]
+Guard <code class="highlighter-rouge">PartiallyOrderedSetTest#testPosetBitsLarge</code> with
+<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2521">CALCITE-2521</a>]
+Guard <code class="highlighter-rouge">RelMetadataTest#testMetadataHandlerCacheLimit</code> with
+<code class="highlighter-rouge">CalciteAssert.ENABLE_SLOW</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
+Add <code class="highlighter-rouge">SqlValidatorDynamicTest</code> to <code class="highlighter-rouge">CalciteSuite</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2484">CALCITE-2484</a>]
+Move dynamic tests to a separate class like <code class="highlighter-rouge">SqlValidatorDynamicTest</code>, and
+avoid reuse of <code class="highlighter-rouge">MockCatalogReaderDynamic</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2522">CALCITE-2522</a>]
+Remove <code class="highlighter-rouge">e.printStackTrace()</code> from <code class="highlighter-rouge">CalciteAssert#returns</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2512">CALCITE-2512</a>]
+Move <code class="highlighter-rouge">StreamTest#ROW_GENERATOR</code> to <code class="highlighter-rouge">Table.scan().iterator</code> to make it not
+shared between threads (Sergey Nuyanzin)</li>
+  <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="highlighter-rouge">CalciteException</code>, <code class="highlighter-rouge">SqlValidatorException</code> during
+tests</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1026">CALCITE-1026</a>]
+Fix <code class="highlighter-rouge">ModelTest#testYamlFileDetection</code> when source folder has spaces</li>
+  <li><code class="highlighter-rouge">MockCatalogReader</code> is used in testing, so cache should be disabled there to
+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="highlighter-rouge">RexProgramTest</code>: replace <code class="highlighter-rouge">nullLiteral</code> → <code class="highlighter-rouge">nullInt</code>,
+<code class="highlighter-rouge">unknownLiteral</code> → <code class="highlighter-rouge">nullBool</code> for brevity</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2462">CALCITE-2462</a>]
+<code class="highlighter-rouge">RexProgramTest</code>: move “rex building” methods to base class</li>
+  <li><code class="highlighter-rouge">SqlTestFactory</code>: use lazy initialization of objects</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2435">CALCITE-2435</a>]
+Refactor <code class="highlighter-rouge">SqlTestFactory</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2428">CALCITE-2428</a>]
+Cassandra unit test fails to parse JDK version string (Andrei Sereda)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2419">CALCITE-2419</a>]
+Use embedded Cassandra for tests</li>
+</ul>
+
+<h4 id="web-site-and-documentation">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="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="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">New features</h4>
+
+<ul>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-873">CALCITE-873</a>]
+Add a planner rule, <code class="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="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="highlighter-rouge">AggregateReduceFunctionsRule</code> (Fabian Hueske)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2227">CALCITE-2227</a>]
+Standards-compliant column ordering for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2280">CALCITE-2280</a>]
+Babel SQL parser</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2286">CALCITE-2286</a>]
+Support timestamp type for Druid adapter</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2304">CALCITE-2304</a>]
+In Babel parser, allow Hive-style syntax <code class="highlighter-rouge">LEFT SEMI JOIN</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2321">CALCITE-2321</a>]
+A union of <code class="highlighter-rouge">CHAR</code> columns of different lengths can now (based on a conformance setting) yield a <code class="highlighter-rouge">VARCHAR</code> column (Hequn Cheng)</li>
+</ul>
+
+<h4 id="bug-fixes-api-changes-and-minor-enhancements-1">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="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="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="highlighter-rouge">MIN</code>/<code class="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="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="highlighter-rouge">CalciteStatement</code> should call <code class="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="highlighter-rouge">Double</code> and <code class="highlighter-rouge">BigDecimal</code> arguments (余启)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2063">CALCITE-2063</a>]
+Add JDK 10 to <code class="highlighter-rouge">.travis.yml</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2159">CALCITE-2159</a>]
+Support dynamic row type in <code class="highlighter-rouge">UNNEST</code> (Chunhui Shi)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2164">CALCITE-2164</a>]
+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="highlighter-rouge">DATE</code>/<code class="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="highlighter-rouge">RelBuilder</code> into <code class="highlighter-rouge">RelDecorrelator</code> and <code class="highlighter-rouge">RelStructuredTypeFlattener</code> (Volodymyr Vysotskyi)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2205">CALCITE-2205</a>]
+<code class="highlighter-rouge">JoinPushTransitivePredicatesRule</code> should not create <code class="highlighter-rouge">Filter</code> on top of equivalent <code class="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="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="highlighter-rouge">AggregatePullUpConstantsRule</code> while adjusting <code class="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="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="highlighter-rouge">RelBuilder</code> for <code class="highlighter-rouge">FilterRemoveIsNotDistinctFromRule</code> (Vitalii Diravka)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2247">CALCITE-2247</a>]
+Simplify <code class="highlighter-rouge">AND</code> and <code class="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="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="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="highlighter-rouge">NOT</code> condition in <code class="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="highlighter-rouge">ROW</code> value constructor in <code class="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="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="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="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="highlighter-rouge">FlatList.equals()</code> throws <code class="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="highlighter-rouge">TIMESTAMPADD</code>(<code class="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="highlighter-rouge">EXTRACT</code> function, support <code class="highlighter-rouge">MICROSECONDS</code>, <code class="highlighter-rouge">MILLISECONDS</code>, <code class="highlighter-rouge">EPOCH</code>, <code class="highlighter-rouge">ISODOW</code>, <code class="highlighter-rouge">ISOYEAR</code> and <code class="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="highlighter-rouge">TINYINT</code> and <code class="highlighter-rouge">DOUBLE</code> types</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2306">CALCITE-2306</a>]
+AssertionError in <code class="highlighter-rouge">RexLiteral.getValue3</code> with null literal of type <code class="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="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="highlighter-rouge">Filter</code> to <code class="highlighter-rouge">JDBCFilter</code> (Piotr Bojko)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2323">CALCITE-2323</a>]
+Apply “<code class="highlighter-rouge">defaultNullCollation</code>” configuration parameter when translating <code class="highlighter-rouge">ORDER BY</code> inside <code class="highlighter-rouge">OVER</code> (John Fang)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2324">CALCITE-2324</a>]
+<code class="highlighter-rouge">EXTRACT</code> function: <code class="highlighter-rouge">HOUR</code>, <code class="highlighter-rouge">MINUTE</code> and <code class="highlighter-rouge">SECOND</code> parts of a <code class="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="highlighter-rouge">(A or B) and C</code> fails for Elasticsearch adapter (Andrei Sereda)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2332">CALCITE-2332</a>]
+Wrong simplification of <code class="highlighter-rouge">FLOOR(CEIL(x))</code> to <code class="highlighter-rouge">FLOOR(x)</code></li>
+  <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="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="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="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="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="highlighter-rouge">misc.iq</code> and <code class="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="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="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="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="highlighter-rouge">date</code>/<code class="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="highlighter-rouge">commons-dbcp</code> to <code class="highlighter-rouge">commons-dbcp2</code> version 2.4.0</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2391">CALCITE-2391</a>]
+Aggregate query with <code class="highlighter-rouge">UNNEST</code> or <code class="highlighter-rouge">LATERAL</code> fails with <code class="highlighter-rouge">ClassCastException</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2392">CALCITE-2392</a>]
+Prevent columns permutation for <code class="highlighter-rouge">NATURAL JOIN</code> and <code class="highlighter-rouge">JOIN USING</code> when dynamic table is used</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2396">CALCITE-2396</a>]
+Allow <code class="highlighter-rouge">NULL</code> intervals in <code class="highlighter-rouge">TIMESTAMPADD</code> and <code class="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="highlighter-rouge">SqlSelect</code> must call into <code class="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="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="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="highlighter-rouge">SCAN</code> queries rather than <code class="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-2">New features</h4>
+
+<ul>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1265">CALCITE-1265</a>]
+In JDBC adapter, push <code class="highlighter-rouge">OFFSET</code> and <code class="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="highlighter-rouge">SCAN</code> query rather than <code class="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="bug-fixes-api-changes-and-minor-enhancements-2">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="highlighter-rouge">EXTRACT</code> with <code class="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="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="highlighter-rouge">DISTINCT</code> applied to <code class="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="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="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="highlighter-rouge">RelOptUtil.splitJoinCondition()</code> could not split condition with case after applying <code class="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="highlighter-rouge">IN</code> and <code class="highlighter-rouge">OR</code> in <code class="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="highlighter-rouge">NOT IN</code> operator and literal throws <code class="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="highlighter-rouge">JOIN</code> throws <code class="highlighter-rouge">NullPointerException</code> (Zhen Wang)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2084">CALCITE-2084</a>]
+<code class="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="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="highlighter-rouge">EXTRACT</code> gets pushed as an interval if possible</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2092">CALCITE-2092</a>]
+Allow passing custom <code class="highlighter-rouge">RelBuilder</code> into <code class="highlighter-rouge">SqlToRelConverter</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2093">CALCITE-2093</a>]
+<code class="highlighter-rouge">OsAdapterTest</code> in Calcite Plus does not respect locale (Piotr Bojko)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2094">CALCITE-2094</a>]
+Druid adapter: <code class="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="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="highlighter-rouge">OR</code> of <code class="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="highlighter-rouge">GROUP BY</code> inside <code class="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="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="highlighter-rouge">AggregateUnionAggregateRule</code> to reduce potential matching cost in <code class="highlighter-rouge">VolcanoPlanner</code> (lincoln-lil)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2105">CALCITE-2105</a>]
+<code class="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="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="highlighter-rouge">AggregateJoinTransposeRule</code> fails when process aggregateCall above <code class="highlighter-rouge">SqlSumEmptyIsZeroAggFunction</code> without groupKeys (jingzhang)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2110">CALCITE-2110</a>]
+<code class="highlighter-rouge">ArrayIndexOutOfBoundsException</code> in RexSimplify when using <code class="highlighter-rouge">ReduceExpressionsRule.JOIN_INSTANCE</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2111">CALCITE-2111</a>]
+Make HepPlanner more efficient by applying rules depth-first</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2113">CALCITE-2113</a>]
+Push column pruning to druid when Aggregate cannot be pushed (Nishant Bangarwa)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2114">CALCITE-2114</a>]
+Re-enable <code class="highlighter-rouge">DruidAggregateFilterTransposeRule</code></li>
+  <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="highlighter-rouge">TIMESTAMP</code> or <code class="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="highlighter-rouge">AggregateExpandDistinctAggregatesRule</code> should make <code class="highlighter-rouge">SUM</code> nullable if there is no <code class="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="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="highlighter-rouge">FLOOR</code> and <code class="highlighter-rouge">CEIL</code> of <code class="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="highlighter-rouge">CEIL</code>/<code class="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="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="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="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="web-site-and-documentation-1">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="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="highlighter-rouge">LIMIT</code> and <code class="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-3">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="highlighter-rouge">OFFSET</code>, <code class="highlighter-rouge">FETCH</code> and <code class="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="highlighter-rouge">ReduceExpressionRule</code> simplifies a nullable expression, allow the result
+to change type to <code class="highlighter-rouge">NOT NULL</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2058">CALCITE-2058</a>]
+Support JDK 10</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2016">CALCITE-2016</a>]
+Make item + dot operators work for array (e.g. <code class="highlighter-rouge">SELECT orders[5].color FROM t</code>
+(Shuyi Chen)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2035">CALCITE-2035</a>]
+Allow approximate aggregate functions, and add <code class="highlighter-rouge">APPROX_COUNT_DISTINCT</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1990">CALCITE-1990</a>]
+Make <code class="highlighter-rouge">RelDistribution</code> extend <code class="highlighter-rouge">RelMultipleTrait</code> (LeoWangLZ)</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-1867">CALCITE-1867</a>]
+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="highlighter-rouge">ST_X</code> and <code class="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="highlighter-rouge">DatabaseProduct</code>
+with dialect methods, and introduce a configurable <code class="highlighter-rouge">SqlDialectFactory</code>
+(Christian Beikov)</li>
+</ul>
+
+<h4 id="bug-fixes-api-changes-and-minor-enhancements-3">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="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="highlighter-rouge">JaninoRelMetadataProvider</code> loading cache might cause <code class="highlighter-rouge">OutOfMemoryError</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2069">CALCITE-2069</a>]
+<code class="highlighter-rouge">RexSimplify.removeNullabilityCast()</code> always removes cast for operand with
+<code class="highlighter-rouge">ANY</code> type (Volodymyr Vysotskyi)</li>
+  <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="highlighter-rouge">ImmutableBitSet.set(int, boolean)</code></li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2054">CALCITE-2054</a>]
+Error while validating <code class="highlighter-rouge">UPDATE</code> with dynamic parameter in <code class="highlighter-rouge">SET</code> clause (Enrico
+Olivelli)</li>
+  <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="highlighter-rouge">Aggregate</code> might check for simple grouping sets incorrectly</li>
+  <li>Add parameter to <code class="highlighter-rouge">SqlCallBinding.getOperandLiteralValue(int)</code> to specify
+desired value type</li>
+  <li>[<a href="https://issues.apache.org/jira/browse/CALCITE-2039">CALCITE-2039</a>]
+<code class="highlighter-rouge">AssertionError</code> when pushing project to <code class="highlighter-rouge">ProjectableFilterableTable</code></li>
+  <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="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="highlighter-rouge">BindableTableScan</code> to make sure <code class="highlighter-rouge">Project</code> is pushed through
+<code class="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="highlighter-rouge">LocalInterval</code> by <code class="highlighter-rouge">Interval</code> in Druid adapter</li>

[... 4390 lines stripped ...]