<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Releases</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">
  <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="current">
    <a href="/news/">News</a>
  </li>
  <li class="">
    <a href="/docs/">Docs</a>
  </li>
</ul>

    </nav>
  </div>
</header>


    <section class="news">
    <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 blog…</option>
    <option value="/news/">Home</option>
    <optgroup label="v1.x">
            <option value="/news/2019/09/11/release-1.21.0/">Release 1.21.0</option>
      <option value="/news/2019/06/24/release-1.20.0/">Release 1.20.0</option>
      <option value="/news/2019/03/25/release-1.19.0/">Release 1.19.0</option>
      <option value="/news/2018/12/21/release-1.18.0/">Release 1.18.0</option>
      <option value="/news/2018/07/20/release-1.17.0/">Release 1.17.0</option>
      <option value="/news/2018/03/19/release-1.16.0/">Release 1.16.0</option>
      <option value="/news/2017/12/11/release-1.15.0/">Release 1.15.0</option>
      <option value="/news/2017/10/02/release-1.14.0/">Release 1.14.0</option>
      <option value="/news/2017/06/26/release-1.13.0/">Release 1.13.0</option>
      <option value="/news/2017/03/31/new-avatica-repository/">New Avatica Repository</option>
      <option value="/news/2017/03/24/release-1.12.0/">Release 1.12.0</option>
      <option value="/news/2017/01/09/release-1.11.0/">Release 1.11.0</option>
      <option value="/news/2016/10/12/release-1.10.0/">Release 1.10.0</option>
      <option value="/news/2016/09/22/release-1.9.0/">Release 1.9.0</option>
      <option value="/news/2016/06/13/release-1.8.0/">Release 1.8.0</option>
      <option value="/news/2016/03/22/cassandra-adapter/">Cassandra Adapter</option>
      <option value="/news/2016/03/22/release-1.7.0/">Release 1.7.0</option>
      <option value="/news/2016/02/17/streaming-sql-talk/">Streaming SQL in Samza</option>
      <option value="/news/2016/02/17/elser-pmc/">Calcite appoints Josh Elser to PMC</option>
      <option value="/news/2016/01/22/release-1.6.0/">Release 1.6.0</option>
      <option value="/news/2015/11/10/release-1.5.0/">Release 1.5.0</option>
      <option value="/news/2015/11/08/new-committers/">Calcite adds 2 committers</option>
      <option value="/news/2015/10/22/calcite-graduates/">Calcite Graduates</option>
      <option value="/news/2015/09/02/release-1.4.0-incubating/">Release 1.4.0 Incubating</option>
      <option value="/news/2015/07/31/xldb-best-lightning-talk/">XLDB 2015 best lightning talk</option>
      <option value="/news/2015/06/05/algebra-builder/">Algebra builder</option>
      <option value="/news/2015/05/30/release-1.3.0-incubating/">Release 1.3.0 Incubating</option>
      <option value="/news/2015/04/24/new-committers/">Calcite adds 5 committers</option>
      <option value="/news/2015/04/07/release-1.2.0-incubating/">Release 1.2.0 Incubating</option>
      <option value="/news/2015/03/13/release-1.1.0-incubating/">Release 1.1.0 Incubating</option>
      <option value="/news/2015/01/31/release-1.0.0-incubating/">Release 1.0.0 Incubating</option>
      <option value="/news/2014/11/05/release-0.9.2-incubating/">Release 0.9.2 Incubating</option>
      <option value="/news/2014/10/02/release-0.9.1-incubating/">Release 0.9.1 Incubating</option>
      <option value="/news/2014/08/19/release-0.9.0-incubating/">Release 0.9.0 Incubating</option>
      <option value="/news/2014/06/27/release-0.8.0-incubating/">Release 0.8.0 Incubating</option>

    </optgroup>
  </select>
</div>


      <div class="unit four-fifths">
        


  
<article>
  <h2>
    <a href="/news/2019/09/11/release-1.21.0/">
      Release 1.21.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      11 Sep 2019
    </span>
    
    
    
    <a href="http://github.com/zabetak" class="post-author">
      <img src="http://github.com/zabetak.png"
           class="avatar" alt="zabetak avatar"
           width="24" height="24">
      zabetak
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-21-0">Apache Calcite release 1.21.0</a>.</p>

<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="highlighter-rouge">MATCH_RECOGNIZE</code> in the
<code class="highlighter-rouge">Enumerable</code> convention
(<a href="https://issues.apache.org/jira/browse/CALCITE-1935">CALCITE-1935</a>);</li>
  <li>supports correlated <code class="highlighter-rouge">ANY</code>/<code class="highlighter-rouge">SOME</code>/<code class="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="highlighter-rouge">ROW</code>, <code class="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="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>See the <a href="/docs/history.html#v1-21-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2019/06/24/release-1.20.0/">
      Release 1.20.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      24 Jun 2019
    </span>
    
    
    
    <a href="https://michael.mior.ca/" class="post-author">
      <img src="http://github.com/michaelmior.png"
           class="avatar" alt="mmior avatar"
           width="24" height="24">
      mmior
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-20-0">Apache Calcite release 1.20.0</a>.</p>

<p>This release comes three months after 1.19.0. It includes more than 130 resolved issues, comprising of a few new features as well as general improvements and bug-fixes.
It includes support for anti-joins, recursive queries, new functions, a new adapter, and many more bug fixes and improvements.</p>

    
    <p>See the <a href="/docs/history.html#v1-20-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2019/03/25/release-1.19.0/">
      Release 1.19.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      25 Mar 2019
    </span>
    
    
    
    <a href="http://github.com/risdenk" class="post-author">
      <img src="http://github.com/risdenk.png"
           class="avatar" alt="krisden avatar"
           width="24" height="24">
      krisden
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-19-0">Apache Calcite release 1.19.0</a>.</p>

<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>See the <a href="/docs/history.html#v1-19-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2018/12/21/release-1.18.0/">
      Release 1.18.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      21 Dec 2018
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-18-0">Apache Calcite release 1.18.0</a>.</p>

<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>,
<a href="https://issues.apache.org/jira/browse/CALCITE-2402">linear regression functions</a>,
and 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>See the <a href="/docs/history.html#v1-18-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2018/07/20/release-1.17.0/">
      Release 1.17.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      20 Jul 2018
    </span>
    
    
    
    <a href="http://github.com/vvysotskyi" class="post-author">
      <img src="http://github.com/vvysotskyi.png"
           class="avatar" alt="volodymyr avatar"
           width="24" height="24">
      volodymyr
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-17-0">Apache Calcite release 1.17.0</a>.</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>

<ul>
  <li>Implemented <a href="https://issues.apache.org/jira/browse/CALCITE-2280">Babel SQL parser</a>
that accepts all SQL dialects.</li>
  <li>Allowed <a href="https://issues.apache.org/jira/browse/CALCITE-2261">JDK 8 language level</a> for core module.</li>
  <li>Calcite has been upgraded to use <a href="https://issues.apache.org/jira/browse/CALCITE-2365">Avatica 1.12.0</a></li>
</ul>

    
    <p>See the <a href="/docs/history.html#v1-17-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2018/03/19/release-1.16.0/">
      Release 1.16.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      19 Mar 2018
    </span>
    
    
    
    <a href="http://github.com/jcamachor" class="post-author">
      <img src="http://github.com/jcamachor.png"
           class="avatar" alt="jcamacho avatar"
           width="24" height="24">
      jcamacho
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-16-0">Apache Calcite release 1.16.0</a>.</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>

    
    <p>See the <a href="/docs/history.html#v1-16-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2017/12/11/release-1.15.0/">
      Release 1.15.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      11 Dec 2017
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-15-0">Apache Calcite release 1.15.0</a>.
In this release, three months after 1.14.0, 50 issues are fixed by 22
contributors. Among more modest improvements and bug-fixes, 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 7</a>.</p>

    
    <p>See the <a href="/docs/history.html#v1-15-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2017/10/02/release-1.14.0/">
      Release 1.14.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      02 Oct 2017
    </span>
    
    
    
    <a href="https://michael.mior.ca/" class="post-author">
      <img src="http://github.com/michaelmior.png"
           class="avatar" alt="mmior avatar"
           width="24" height="24">
      mmior
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-14-0">Apache Calcite release 1.14.0</a>.</p>

<p>This release comes three months after 1.13.0. It includes 68 resolved issues with many improvements and bug fixes.
This release brings some big new features.
The <code class="highlighter-rouge">GEOMETRY</code> data type was added along with 35 associated functions as the start of support for Simple Feature Access.
There are also two new adapters.</p>

<p>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="highlighter-rouge">ThetaSketch</code> and <code class="highlighter-rouge">HyperUnique</code> support has also been added to the Druid adapter.
Several minor improvements are added as well including improved <code class="highlighter-rouge">MATCH_RECOGNIZE</code> support, quantified comparison predicates, and <code class="highlighter-rouge">ARRAY</code> and <code class="highlighter-rouge">MULTISET</code> support for UDFs.</p>

    
    <p>See the <a href="/docs/history.html#v1-14-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2017/06/26/release-1.13.0/">
      Release 1.13.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      26 Jun 2017
    </span>
    
    
    
    <a href="http://github.com/jcamachor" class="post-author">
      <img src="http://github.com/jcamachor.png"
           class="avatar" alt="jcamacho avatar"
           width="24" height="24">
      jcamacho
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-13-0">Apache Calcite release 1.13.0</a>.</p>

<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="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>See the <a href="/docs/history.html#v1-13-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2017/03/24/release-1.12.0/">
      Release 1.12.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      24 Mar 2017
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-12-0">Apache Calcite release 1.12.0</a>.</p>

<p>In 2½ months,
<a href="/docs/history.html#v1-12-0">29 contributors have resolved 95 issues</a>.
Here are some of the highlights.</p>

<p>Calcite now supports JDK 9 and Guava 21.0. (It continues to run on
JDK 7 and 8, and on versions of Guava as early as 14.0.1. The default
version of Guava remains 19.0, due to the Cassandra adapter’s
dependencies, and the fact that Guava 21.0 requires JDK 8 or later.)</p>

<p>There are two new adapters:</p>

<ul>
  <li>The <a href="https://issues.apache.org/jira/browse/CALCITE-884">File adapter</a>
can read files of various formats (such as CSV, JSON, zipped files,
and HTML) over various protocols (including file and HTTP). If
reading HTML files, it can extract data from nested <code class="highlighter-rouge">&lt;TABLE&gt;</code>
elements.</li>
  <li>The <a href="https://issues.apache.org/jira/browse/CALCITE-1598">Pig adapter</a>
provides a SQL interface to <a href="http://pig.apache.org/">Apache Pig</a>.</li>
</ul>

<p>And there are continuing improvements in performance and stability of
the Druid adapter. (The Druid project now
<a href="https://github.com/druid-io/druid/pull/3682">embeds Calcite to provide SQL support</a>,
and there has been cross-fertilization between the projects.)</p>

<p>To err is human, as the saying goes. If you mis-type the name of a
schema, table or column in a SQL statement, Calcite now
<a href="https://issues.apache.org/jira/browse/CALCITE-1549">helps you correct it</a>.
The error message indicates whether it was whether it was the schema,
table or column that was not found; if the mistake was just due to an
upper- or lower-case letter, it suggests the correct name.</p>

<p>New SQL syntax and functions:</p>

<ul>
  <li><code class="highlighter-rouge">HOP</code>, <code class="highlighter-rouge">TUMBLE</code> and <code class="highlighter-rouge">SESSION</code> functions in the <code class="highlighter-rouge">GROUP BY</code> clause
allow you to aggregate over window types (especially useful for
streaming queries);</li>
  <li>Experimental support for the <code class="highlighter-rouge">MATCH_RECOGNIZE</code> clause for
Complex-Event Processing (CEP);</li>
  <li>New <code class="highlighter-rouge">YEAR</code>, <code class="highlighter-rouge">MONTH</code>, <code class="highlighter-rouge">WEEK</code>, <code class="highlighter-rouge">DAYOFYEAR</code>, <code class="highlighter-rouge">DAYOFMONTH</code>, <code class="highlighter-rouge">DAYOFWEEK</code>,
<code class="highlighter-rouge">HOUR</code>, <code class="highlighter-rouge">MINUTE</code>, <code class="highlighter-rouge">SECOND</code>, <code class="highlighter-rouge">DATABASE</code>, <code class="highlighter-rouge">IFNULL</code>, and <code class="highlighter-rouge">USER</code>
functions to comply with the ODBC/JDBC standard. Also, <code class="highlighter-rouge">EXTRACT</code> now
allows the corresponding time-unit arguments.</li>
</ul>

    
    <p>See the <a href="/docs/history.html#v1-12-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2017/01/09/release-1.11.0/">
      Release 1.11.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      09 Jan 2017
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-11-0">Apache Calcite release 1.11.0</a>.</p>

<p>Nearly three months after the previous release, there is a
<a href="/docs/history.html#v1-11-0">long list of improvements and bug-fixes</a>,
many of them making planner rules smarter. The following are some of
the more important ones.</p>

<p>Several adapters have improvements:</p>

<ul>
  <li>The JDBC adapter can now push down DML (<code class="highlighter-rouge">INSERT</code>, <code class="highlighter-rouge">UPDATE</code>, <code class="highlighter-rouge">DELETE</code>),
windowed aggregates (<code class="highlighter-rouge">OVER</code>), <code class="highlighter-rouge">IS NULL</code> and <code class="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="highlighter-rouge">CROSS APPLY</code> and <code class="highlighter-rouge">OUTER APPLY</code>;</li>
  <li><code class="highlighter-rouge">MINUS</code> as a synonym for <code class="highlighter-rouge">EXCEPT</code>;</li>
  <li>an <code class="highlighter-rouge">AS JSON</code> option for the <code class="highlighter-rouge">EXPLAIN</code> command;</li>
  <li>compound identifiers in the target list of <code class="highlighter-rouge">INSERT</code>, allowing you to
insert into individual fields of record-valued columns (or column
families if you are using the Apache Phoenix adapter).</li>
</ul>

<p>A variety of new and extended built-in functions: <code class="highlighter-rouge">CONVERT</code>, <code class="highlighter-rouge">LTRIM</code>,
<code class="highlighter-rouge">RTRIM</code>, 3-parameter <code class="highlighter-rouge">LOCATE</code> and <code class="highlighter-rouge">POSITION</code>, <code class="highlighter-rouge">RAND</code>, <code class="highlighter-rouge">RAND_INTEGER</code>,
and <code class="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="highlighter-rouge">SubqueryConverter</code> becomes <code class="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="highlighter-rouge">Shuttle</code> to <code class="highlighter-rouge">Visitor</code>, and create a new class <code class="highlighter-rouge">Visitor&lt;R&gt;</code>).
See the cases for more details.</p>

    
    <p>See the <a href="/docs/history.html#v1-11-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2016/10/12/release-1.10.0/">
      Release 1.10.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      12 Oct 2016
    </span>
    
    
    
    <a href="http://github.com/jcamachor" class="post-author">
      <img src="http://github.com/jcamachor.png"
           class="avatar" alt="jcamacho avatar"
           width="24" height="24">
      jcamacho
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-10-0">Apache Calcite release 1.10.0</a>.</p>

<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>See the <a href="/docs/history.html#v1-10-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2016/09/22/release-1.9.0/">
      Release 1.9.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      22 Sep 2016
    </span>
    
    
    
    <a href="http://github.com/jcamachor" class="post-author">
      <img src="http://github.com/jcamachor.png"
           class="avatar" alt="jcamacho avatar"
           width="24" height="24">
      jcamacho
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-9-0">Apache Calcite release 1.9.0</a>.</p>

<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="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="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="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>See the <a href="/docs/history.html#v1-9-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2016/06/13/release-1.8.0/">
      Release 1.8.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      13 Jun 2016
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>The <a href="">Apache Calcite PMC</a>
is pleased to announce
<a href="/docs/history.html#v1-8-0">Apache Calcite release 1.8.0</a>.</p>

<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="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.</p>

<p>We also added support for
<a href="https://issues.apache.org/jira/browse/CALCITE-1120">SELECT without FROM</a>
(equivalent to the <code class="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, as usual, there are a couple of dozen bug-fixes and enhancements to
planner rules and APIs.</p>

    
    <p>See the <a href="/docs/history.html#v1-8-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2016/03/22/release-1.7.0/">
      Release 1.7.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      22 Mar 2016
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Apache Calcite 1.7.0 is the first 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/cassandra.html">adapter</a> for
<a href="http://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="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="highlighter-rouge">DECODE</code>, <code class="highlighter-rouge">NVL</code>, <code class="highlighter-rouge">LTRIM</code>, <code class="highlighter-rouge">RTRIM</code>, <code class="highlighter-rouge">GREATEST</code> and <code class="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="highlighter-rouge">java.util.logging</code>)
with <a href="http://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="highlighter-rouge">FINE</code>,
<code class="highlighter-rouge">FINER</code>, and <code class="highlighter-rouge">FINEST</code>, specifically. To deal with this, <code class="highlighter-rouge">FINE</code> was mapped
to SLF4J’s <code class="highlighter-rouge">DEBUG</code> level, while <code class="highlighter-rouge">FINER</code> and <code class="highlighter-rouge">FINEST</code> were mapped to SLF4J’s <code class="highlighter-rouge">TRACE</code>.</p>

    
    <p>See the <a href="/docs/history.html#v1-7-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2016/01/22/release-1.6.0/">
      Release 1.6.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      22 Jan 2016
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<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="highlighter-rouge">EXISTS</code>, <code class="highlighter-rouge">IN</code> and scalar) as
<a href="/apidocs/org/apache/calcite/rex/RexSubQuery.html">RexSubQuery</a>,
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
<a href="/apidocs/org/apache/calcite/tools/RelBuilder.html">RelBuilder</a>)
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="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="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>See the <a href="/docs/history.html#v1-6-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2015/11/10/release-1.5.0/">
      Release 1.5.0
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      10 Nov 2015
    </span>
    
    
    
    <a href="http://github.com/jcamachor" class="post-author">
      <img src="http://github.com/jcamachor.png"
           class="avatar" alt="jcamacho avatar"
           width="24" height="24">
      jcamacho
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>This is our first release as a top-level Apache project! Thanks to everyone who has contributed to it.</p>

<p>In addition to a large number of bug fixes and minor enhancements, this release includes major improvements to Avatica, planner rules, and RelBuilder.</p>

<p>Further, we built Piglet, a subset of the classic Hadoop language Pig. 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.</p>

    
    <p>See the <a href="/docs/history.html#v1-5-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2015/09/02/release-1.4.0-incubating/">
      Release 1.4.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      02 Sep 2015
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>In addition to a large number of bug fixes and minor enhancements,
this release includes improvements to
<a href="https://issues.apache.org/jira/browse/CALCITE-758">lattices</a> and
<a href="https://issues.apache.org/jira/browse/CALCITE-761">materialized views</a>,
and adds a
<a href="https://issues.apache.org/jira/browse/CALCITE-748">builder API</a>
so that you can easily create relational algebra expressions.</p>

<p>Read more about the <a href="/news/2015/06/05/algebra-builder/">builder</a>,
<a href="/docs/algebra.html">relational algebra</a>, and
<a href="/docs/lattice.html">lattices</a>.</p>

    
    <p>See the <a href="/docs/history.html#v1-4-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2015/05/30/release-1.3.0-incubating/">
      Release 1.3.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      30 May 2015
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<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>

    
    <p>See the <a href="/docs/history.html#v1-3-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2015/04/07/release-1.2.0-incubating/">
      Release 1.2.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      07 Apr 2015
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<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="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>

    
    <p>See the <a href="/docs/history.html#v1-2-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2015/03/13/release-1.1.0-incubating/">
      Release 1.1.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      13 Mar 2015
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<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="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="highlighter-rouge">create</code> methods for many sub-classes of
<code class="highlighter-rouge">RelNode</code>. We strongly suggest that you use these rather than
calling constructors directly.</p>

    
    <p>See the <a href="/docs/history.html#v1-1-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2015/01/31/release-1.0.0-incubating/">
      Release 1.0.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      31 Jan 2015
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Calcite’s first major release.</p>

<p>Since the previous release we have re-organized the into the <code class="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="highlighter-rouge">GROUPING SETS</code>, <code class="highlighter-rouge">EXTEND</code>, <code class="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>

    
    <p>See the <a href="/docs/history.html#v1-0-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2014/11/05/release-0.9.2-incubating/">
      Release 0.9.2 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      05 Nov 2014
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<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>

    
    <p>See the <a href="/docs/history.html#v0-9-2">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2014/10/02/release-0.9.1-incubating/">
      Release 0.9.1 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      02 Oct 2014
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>This is the first release as Calcite. (The project was previously called Optiq.)</p>

    
    <p>See the <a href="/docs/history.html#v0-9-1">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2014/08/19/release-0.9.0-incubating/">
      Release 0.9.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      19 Aug 2014
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>This is the first release under the Apache incubator process.</p>

    
    <p>See the <a href="/docs/history.html#v0-9-0">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>


  
<article>
  <h2>
    <a href="/news/2014/06/27/release-0.8.0-incubating/">
      Release 0.8.0 Incubating
    </a>
  </h2>
  <span class="post-category">
    <span class="label">
      release
    </span>
  </span>
  <div class="post-meta">
    <span class="post-date">
      27 Jun 2014
    </span>
    
    
    
    <a href="http://people.apache.org/~jhyde" class="post-author">
      <img src="http://github.com/julianhyde.png"
           class="avatar" alt="jhyde avatar"
           width="24" height="24">
      jhyde
    </a>
  </div>
  <div class="post-content">
    <!--

-->

<p>Several new features, including a heuristic rule to plan queries with
a large number of joins, a number of windowed aggregate functions, and
new utility, <code class="highlighter-rouge">SqlRun</code>.</p>

    
    <p>See the <a href="/docs/history.html#v0-8">release notes</a>;
      <a href="/downloads#source-releases">download</a> the release.</p>
    
  </div>
</article>



      </div>

      <div class="unit one-fifth hide-on-mobiles">
  <aside>
    <ul>
      <li class="">
        <a href="/news/">All News</a>
      </li>
      <li class="current">
        <a href="/news/releases/">Calcite Releases</a>
      </li>
    </ul>
    <h4>Recent Releases</h4>
    <ul>
      
      <li class="">
        <a href="/news/2019/09/11/release-1.21.0/">1.21.0</a>
      </li>
      
      <li class="">
        <a href="/news/2019/06/24/release-1.20.0/">1.20.0</a>
      </li>
      
      <li class="">
        <a href="/news/2019/03/25/release-1.19.0/">1.19.0</a>
      </li>
      
      <li class="">
        <a href="/news/2018/12/21/release-1.18.0/">1.18.0</a>
      </li>
      
      <li class="">
        <a href="/news/2018/07/20/release-1.17.0/">1.17.0</a>
      </li>
      
    </ul>
    <h4>Other News</h4>
    <ul>
        
        <li class="">
          <a href="/news/2017/03/31/new-avatica-repository/">New Avatica Repository</a>
        </li>
          
        <li class="">
          <a href="/news/2016/03/22/cassandra-adapter/">Cassandra Adapter</a>
        </li>
          
        <li class="">
          <a href="/news/2016/02/17/streaming-sql-talk/">Streaming SQL in Samza</a>
        </li>
          
        <li class="">
          <a href="/news/2016/02/17/elser-pmc/">Calcite appoints Josh Elser to PMC</a>
        </li>
          
        <li class="">
          <a href="/news/2015/11/08/new-committers/">Calcite adds 2 committers</a>
        </li>
          
        <li class="">
          <a href="/news/2015/10/22/calcite-graduates/">Calcite Graduates</a>
        </li>
          
        <li class="">
          <a href="/news/2015/07/31/xldb-best-lightning-talk/">XLDB 2015 best lightning talk</a>
        </li>
          
        <li class="">
          <a href="/news/2015/06/05/algebra-builder/">Algebra builder</a>
        </li>
          
        <li class="">
          <a href="/news/2015/04/24/new-committers/">Calcite adds 5 committers</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 &copy;&nbsp;2019
     <a href="https://www.apache.org/">Apache Software Foundation</a>
     under the terms of
     the <a href="https://www.apache.org/licenses/">
     Apache&nbsp;License&nbsp;v2</a>. Apache Calcite and its logo are
     trademarks of the Apache Software Foundation.</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>
