<!DOCTYPE HTML>
<html lang="en-US">
<head>
  <meta charset="UTF-8">
  <title>Release 1.0.0 Incubating</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="current">
    <a href="/news/">News</a>
  </li>
  <li class="">
    <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="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/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>
    Release 1.0.0 Incubating
    <a href="/news/2015/01/31/release-1.0.0-incubating/" class="permalink" title="Permalink">∞</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>

      </div>

      <div class="unit one-fifth hide-on-mobiles">
  <aside>
    <ul>
      <li class="">
        <a href="/news/">All News</a>
      </li>
      <li class="">
        <a href="/news/releases/">Calcite Releases</a>
      </li>
    </ul>
    <h4>Recent Releases</h4>
    <ul>
      
      <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>
      
      <li class="">
        <a href="/news/2018/03/19/release-1.16.0/">1.16.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>
