You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by za...@apache.org on 2020/02/06 08:59:00 UTC

[calcite-site] branch master updated: Update Gradle documentation and talks section

This is an automated email from the ASF dual-hosted git repository.

zabetak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite-site.git


The following commit(s) were added to refs/heads/master by this push:
     new 55d8eb9  Update Gradle documentation and talks section
55d8eb9 is described below

commit 55d8eb9efe61c6c02269cf0327fd2e728e2e4157
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Thu Feb 6 09:58:05 2020 +0100

    Update Gradle documentation and talks section
---
 community/index.html                               |  19 +-
 develop/index.html                                 |  15 +-
 docs/adapter.html                                  |  12 +-
 docs/algebra.html                                  |   3 +-
 docs/cassandra_adapter.html                        |   2 +-
 docs/druid_adapter.html                            |   2 +-
 docs/elasticsearch_adapter.html                    |   3 +-
 docs/file_adapter.html                             |   2 +-
 docs/geode_adapter.html                            |   2 +-
 docs/history.html                                  |   2 +-
 docs/howto.html                                    | 384 ++++++++-------------
 docs/index.html                                    |   3 +-
 docs/kafka_adapter.html                            |   2 +-
 docs/lattice.html                                  |  42 +--
 docs/materialized_views.html                       |   2 +-
 docs/model.html                                    |   2 +-
 docs/os_adapter.html                               |   2 +-
 docs/pig_adapter.html                              |   2 +-
 docs/powered_by.html                               |   2 +-
 docs/reference.html                                |   2 +-
 docs/spatial.html                                  |   2 +-
 docs/stream.html                                   |   2 +-
 docs/tutorial.html                                 |  70 ++--
 downloads/index.html                               |   2 +-
 index.html                                         |   2 +-
 .../2014/06/27/release-0.8.0-incubating/index.html |   2 +-
 .../2014/08/19/release-0.9.0-incubating/index.html |   2 +-
 .../2014/10/02/release-0.9.1-incubating/index.html |   2 +-
 .../2014/11/05/release-0.9.2-incubating/index.html |   2 +-
 .../2015/01/31/release-1.0.0-incubating/index.html |   2 +-
 .../2015/03/13/release-1.1.0-incubating/index.html |   2 +-
 .../2015/04/07/release-1.2.0-incubating/index.html |   2 +-
 news/2015/04/24/new-committers/index.html          |   2 +-
 .../2015/05/30/release-1.3.0-incubating/index.html |   2 +-
 news/2015/06/05/algebra-builder/index.html         |   2 +-
 .../2015/07/31/xldb-best-lightning-talk/index.html |   2 +-
 .../2015/09/02/release-1.4.0-incubating/index.html |   2 +-
 news/2015/10/22/calcite-graduates/index.html       |   2 +-
 news/2015/11/08/new-committers/index.html          |   2 +-
 news/2015/11/10/release-1.5.0/index.html           |   2 +-
 news/2016/01/22/release-1.6.0/index.html           |   2 +-
 news/2016/02/17/elser-pmc/index.html               |   2 +-
 news/2016/02/17/streaming-sql-talk/index.html      |   2 +-
 news/2016/03/22/cassandra-adapter/index.html       |   2 +-
 news/2016/03/22/release-1.7.0/index.html           |   2 +-
 news/2016/06/13/release-1.8.0/index.html           |   2 +-
 news/2016/09/22/release-1.9.0/index.html           |   2 +-
 news/2016/10/12/release-1.10.0/index.html          |   2 +-
 news/2017/01/09/release-1.11.0/index.html          |   2 +-
 news/2017/03/24/release-1.12.0/index.html          |   2 +-
 news/2017/03/31/new-avatica-repository/index.html  |   2 +-
 news/2017/06/26/release-1.13.0/index.html          |   2 +-
 news/2017/10/02/release-1.14.0/index.html          |   2 +-
 news/2017/12/11/release-1.15.0/index.html          |   2 +-
 news/2018/03/19/release-1.16.0/index.html          |   2 +-
 news/2018/07/20/release-1.17.0/index.html          |   2 +-
 news/2018/12/21/release-1.18.0/index.html          |   2 +-
 news/2019/03/25/release-1.19.0/index.html          |   3 +-
 news/2019/06/24/release-1.20.0/index.html          |   2 +-
 news/2019/09/11/release-1.21.0/index.html          |   2 +-
 news/index.html                                    |   3 +-
 news/releases/index.html                           |   3 +-
 62 files changed, 268 insertions(+), 392 deletions(-)

diff --git a/community/index.html b/community/index.html
index 81b91be..cf9cc06 100644
--- a/community/index.html
+++ b/community/index.html
@@ -64,14 +64,12 @@
 -->
 
 <ul id="markdown-toc">
-  <li><a href="#upcoming-talks" id="markdown-toc-upcoming-talks">Upcoming talks</a>    <ul>
-      <li><a href="#fast-federated-sql-with-apache-calcite-chris-baynes" id="markdown-toc-fast-federated-sql-with-apache-calcite-chris-baynes">Fast federated SQL with Apache Calcite (Chris Baynes)</a></li>
-    </ul>
-  </li>
+  <li><a href="#upcoming-talks" id="markdown-toc-upcoming-talks">Upcoming talks</a></li>
   <li><a href="#project-members" id="markdown-toc-project-members">Project Members</a></li>
   <li><a href="#mailing-lists" id="markdown-toc-mailing-lists">Mailing Lists</a></li>
   <li><a href="#help" id="markdown-toc-help">Help</a></li>
   <li><a href="#talks" id="markdown-toc-talks">Talks</a>    <ul>
+      <li><a href="#fast-federated-sql-with-apache-calcite" id="markdown-toc-fast-federated-sql-with-apache-calcite">Fast federated SQL with Apache Calcite</a></li>
       <li><a href="#one-sql-to-rule-them-all---an-efficient-and-syntactically-idiomatic-approach-to-management-of-streams-and-tables" id="markdown-toc-one-sql-to-rule-them-all---an-efficient-and-syntactically-idiomatic-approach-to-management-of-streams-and-tables">One SQL to Rule Them All - an Efficient and Syntactically Idiomatic Approach to Management of Streams and Tables</a></li>
       <li><a href="#apache-calcite-a-foundational-framework-for-optimized-query-processing-over-heterogeneous-data-sources" id="markdown-toc-apache-calcite-a-foundational-framework-for-optimized-query-processing-over-heterogeneous-data-sources">Apache Calcite: A Foundational Framework for Optimized Query Processing Over Heterogeneous Data Sources</a></li>
       <li><a href="#spatial-query-on-vanilla-databases" id="markdown-toc-spatial-query-on-vanilla-databases">Spatial query on vanilla databases</a></li>
@@ -86,10 +84,7 @@
 
 <h1 id="upcoming-talks">Upcoming talks</h1>
 
-<h2 id="fast-federated-sql-with-apache-calcite-chris-baynes">Fast federated SQL with Apache Calcite (Chris Baynes)</h2>
-
-<p>At <a href="https://aceu19.apachecon.com/">ApacheCon Europe 2019</a>, Berlin, Germany, October 24, 2019;
-[<a href="https://aceu19.apachecon.com/session/fast-federated-sql-apache-calcite">summary</a>].</p>
+<p>There are no upcoming talks at the moment. Stay tuned!</p>
 
 <h1 id="project-members">Project Members</h1>
 
@@ -440,6 +435,12 @@ The code is available on <a href="https://github.com/apache/calcite/tree/master"
 <p>Watch some presentations and read through some slide decks about
 Calcite, or attend one of the <a href="#upcoming-talks">upcoming talks</a>.</p>
 
+<h2 id="fast-federated-sql-with-apache-calcite">Fast federated SQL with Apache Calcite</h2>
+
+<p>At <a href="https://aceu19.apachecon.com/">ApacheCon Europe 2019</a>, Berlin, Germany, October 24, 2019;
+[<a href="https://aceu19.apachecon.com/session/fast-federated-sql-apache-calcite">summary</a>],
+[<a href="https://youtu.be/4JAOkLKrcYE">video</a>].</p>
+
 <h2 id="one-sql-to-rule-them-all---an-efficient-and-syntactically-idiomatic-approach-to-management-of-streams-and-tables">One SQL to Rule Them All - an Efficient and Syntactically Idiomatic Approach to Management of Streams and Tables</h2>
 
 <p>At <a href="https://sigmod2019.org/sigmod_industry_list">SIGMOD/PODS 2019</a>, Amsterdam, Netherlands, 2019
@@ -523,7 +524,7 @@ and <a href="https://beam-summit.firebaseapp.com/schedule/">Beam Summit Europe 2
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/develop/index.html b/develop/index.html
index 709228d..7450f80 100644
--- a/develop/index.html
+++ b/develop/index.html
@@ -87,15 +87,15 @@ user-friendly.</p>
 
 <h2 id="download-source-build-and-run-tests">Download source, build, and run tests</h2>
 
-<p>Prerequisites are git, maven (3.5.2 or later)
-and Java (JDK 8 or later, 9 preferred) on your path.</p>
+<p>Prerequisites are Git,
+and Java (JDK 8 or later, 13 preferred) on your path.</p>
 
-<p>Create a local copy of the git repository, <code class="highlighter-rouge">cd</code> to its root directory,
-then build using maven:</p>
+<p>Create a local copy of the Git repository, <code class="highlighter-rouge">cd</code> to its root directory,
+then build using Gradle:</p>
 
 <figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>git clone git://github.com/apache/calcite.git
 <span class="nv">$ </span><span class="nb">cd </span>calcite
-<span class="nv">$ </span>mvn install</code></pre></figure>
+<span class="nv">$ </span>./gradlew build</code></pre></figure>
 
 <p>The HOWTO describes how to
 <a href="/docs/howto.html#building-from-a-source-distribution">build from a source distribution</a>,
@@ -177,7 +177,7 @@ the contributor(s) involved in the discussion should:</p>
 <p>Fork the GitHub repository, and create a branch for your feature.</p>
 
 <p>Develop your feature and test cases, and make sure that
-<code class="highlighter-rouge">mvn install</code> succeeds. (Run extra tests if your change warrants it.)</p>
+<code class="highlighter-rouge">./gradlew build</code> succeeds. (Run extra tests if your change warrants it.)</p>
 
 <p>Commit your change to your branch, and use a comment that starts with
 the JIRA case number, like this:</p>
@@ -270,7 +270,6 @@ You can contribute by testing the code, helping verify a release,
 writing documentation or the web site,
 or just by answering questions on the list.</p>
 
-
       </article>
     </div>
 
@@ -287,7 +286,7 @@ or just by answering questions on the list.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/adapter.html b/docs/adapter.html
index a0fc73a..245c03d 100644
--- a/docs/adapter.html
+++ b/docs/adapter.html
@@ -322,14 +322,11 @@ Here is an example using the <code class="highlighter-rouge">sqlline</code> shel
 <span class="o">&gt;</span> <span class="k">CREATE</span> <span class="k">VIEW</span> <span class="n">v</span> <span class="k">AS</span> <span class="k">SELECT</span> <span class="o">*</span> <span class="k">FROM</span> <span class="n">t</span> <span class="k">WHERE</span> <span class="n">i</span> <span class="o">&gt;</span> <span class="mi">1</span><span class="p">;</span>
 <span class="k">No</span> <span class="k">rows</span> <span class="n">affected</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">072</span> <span class="n">seconds</span><span class="p">)</span>
 <span class="o">&gt;</span> <span class="k">SELECT</span> <span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">FROM</span> <span class="n">v</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">---------------------+
-</span>
+<span class="o">+</span><span class="c1">---------------------+</span>
 <span class="o">|</span>       <span class="n">EXPR</span><span class="err">$</span><span class="mi">0</span>        <span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+
-</span>
+<span class="o">+</span><span class="c1">---------------------+</span>
 <span class="o">|</span> <span class="mi">1</span>                   <span class="o">|</span>
-<span class="o">+</span><span class="c1">---------------------+
-</span>
+<span class="o">+</span><span class="c1">---------------------+</span>
 <span class="mi">1</span> <span class="k">row</span> <span class="n">selected</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">148</span> <span class="n">seconds</span><span class="p">)</span>
 <span class="o">&gt;</span> <span class="o">!</span><span class="n">quit</span></code></pre></figure>
 
@@ -755,7 +752,6 @@ providers and maintains a cache so that a given piece of metadata (for example
 the selectivity of the condition <code class="highlighter-rouge">x &gt; 10</code> in a particular <code class="highlighter-rouge">Filter</code> operator)
 is computed only once.</p>
 
-
           
 
 
@@ -1047,7 +1043,7 @@ is computed only once.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/algebra.html b/docs/algebra.html
index a3a1efc..3c2fa55 100644
--- a/docs/algebra.html
+++ b/docs/algebra.html
@@ -805,7 +805,6 @@ added to the stack.</p>
   </tbody>
 </table>
 
-
           
 
 
@@ -1094,7 +1093,7 @@ added to the stack.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/cassandra_adapter.html b/docs/cassandra_adapter.html
index 1e5f2b3..dfe59a5 100644
--- a/docs/cassandra_adapter.html
+++ b/docs/cassandra_adapter.html
@@ -479,7 +479,7 @@ prove useful.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/druid_adapter.html b/docs/druid_adapter.html
index ae1ce42..d421f13 100644
--- a/docs/druid_adapter.html
+++ b/docs/druid_adapter.html
@@ -653,7 +653,7 @@ and the two tables in Druid (<code class="highlighter-rouge">foodmart</code> and
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/elasticsearch_adapter.html b/docs/elasticsearch_adapter.html
index b2fd2e3..3b543b0 100644
--- a/docs/elasticsearch_adapter.html
+++ b/docs/elasticsearch_adapter.html
@@ -201,7 +201,6 @@ scroll is automatically cleared (removed) when all query resuts are consumed.</p
 we try to follow official <a href="https://www.elastic.co/support/eol">support schedule</a>.
 Also, types are not supported (this adapter only supports indices).</p>
 
-
           
 
 
@@ -519,7 +518,7 @@ Also, types are not supported (this adapter only supports indices).</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/file_adapter.html b/docs/file_adapter.html
index 485c600..296d097 100644
--- a/docs/file_adapter.html
+++ b/docs/file_adapter.html
@@ -683,7 +683,7 @@ files) and being able to form URLs dynamically to push down filters.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/geode_adapter.html b/docs/geode_adapter.html
index 45f8a1b..1e07eae 100644
--- a/docs/geode_adapter.html
+++ b/docs/geode_adapter.html
@@ -543,7 +543,7 @@ prove useful.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/history.html b/docs/history.html
index 20d96e3..1653ac6 100644
--- a/docs/history.html
+++ b/docs/history.html
@@ -6279,7 +6279,7 @@ conflicts in multithreaded usage</li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/howto.html b/docs/howto.html
index 5c53f99..fe9c36c 100644
--- a/docs/howto.html
+++ b/docs/howto.html
@@ -86,8 +86,8 @@ adapters.</p>
 
 <ul id="markdown-toc">
   <li><a href="#building-from-a-source-distribution" id="markdown-toc-building-from-a-source-distribution">Building from a source distribution</a></li>
-  <li><a href="#building-from-git" id="markdown-toc-building-from-git">Building from git</a></li>
-  <li><a href="#if-you-already-have-apache-maven" id="markdown-toc-if-you-already-have-apache-maven">If you already have Apache Maven</a></li>
+  <li><a href="#building-from-git" id="markdown-toc-building-from-git">Building from Git</a></li>
+  <li><a href="#gradle-vs-gradle-wrapper" id="markdown-toc-gradle-vs-gradle-wrapper">Gradle vs Gradle wrapper</a></li>
   <li><a href="#running-tests" id="markdown-toc-running-tests">Running tests</a></li>
   <li><a href="#running-integration-tests" id="markdown-toc-running-integration-tests">Running integration tests</a>    <ul>
       <li><a href="#vm-preparation" id="markdown-toc-vm-preparation">VM preparation</a></li>
@@ -120,13 +120,22 @@ adapters.</p>
   <li><a href="#advanced-topics-for-committers" id="markdown-toc-advanced-topics-for-committers">Advanced topics for committers</a>    <ul>
       <li><a href="#merging-pull-requests-for-calcite-committers" id="markdown-toc-merging-pull-requests-for-calcite-committers">Merging pull requests (for Calcite committers)</a></li>
       <li><a href="#set-up-pgp-signing-keys-for-calcite-committers" id="markdown-toc-set-up-pgp-signing-keys-for-calcite-committers">Set up PGP signing keys (for Calcite committers)</a></li>
-      <li><a href="#set-up-maven-repository-credentials-for-calcite-committers" id="markdown-toc-set-up-maven-repository-credentials-for-calcite-committers">Set up Maven repository credentials (for Calcite committers)</a></li>
+      <li><a href="#set-up-nexus-repository-credentials-for-calcite-committers" id="markdown-toc-set-up-nexus-repository-credentials-for-calcite-committers">Set up Nexus repository credentials (for Calcite committers)</a></li>
       <li><a href="#making-a-snapshot-for-calcite-committers" id="markdown-toc-making-a-snapshot-for-calcite-committers">Making a snapshot (for Calcite committers)</a></li>
-      <li><a href="#making-a-release-for-calcite-committers" id="markdown-toc-making-a-release-for-calcite-committers">Making a release (for Calcite committers)</a></li>
+      <li><a href="#making-a-release-candidate-for-calcite-committers" id="markdown-toc-making-a-release-candidate-for-calcite-committers">Making a release candidate (for Calcite committers)</a>        <ul>
+          <li><a href="#to-prepare-a-release-candidate-directly-in-your-environment" id="markdown-toc-to-prepare-a-release-candidate-directly-in-your-environment">To prepare a release candidate directly in your environment:</a>            <ul>
+              <li><a href="#checking-the-artifacts" id="markdown-toc-checking-the-artifacts">Checking the artifacts</a></li>
+            </ul>
+          </li>
+        </ul>
+      </li>
       <li><a href="#cleaning-up-after-a-failed-release-attempt-for-calcite-committers" id="markdown-toc-cleaning-up-after-a-failed-release-attempt-for-calcite-committers">Cleaning up after a failed release attempt (for Calcite committers)</a></li>
       <li><a href="#validate-a-release" id="markdown-toc-validate-a-release">Validate a release</a></li>
       <li><a href="#get-approval-for-a-release-via-apache-voting-process-for-calcite-committers" id="markdown-toc-get-approval-for-a-release-via-apache-voting-process-for-calcite-committers">Get approval for a release via Apache voting process (for Calcite committers)</a></li>
-      <li><a href="#publishing-a-release-for-calcite-committers" id="markdown-toc-publishing-a-release-for-calcite-committers">Publishing a release (for Calcite committers)</a></li>
+      <li><a href="#publishing-a-release-for-calcite-committers" id="markdown-toc-publishing-a-release-for-calcite-committers">Publishing a release (for Calcite committers)</a>        <ul>
+          <li><a href="#publishing-directly-in-your-environment" id="markdown-toc-publishing-directly-in-your-environment">Publishing directly in your environment:</a></li>
+        </ul>
+      </li>
       <li><a href="#publish-the-web-site" id="markdown-toc-publish-the-web-site">Publishing the web site (for Calcite committers)</a></li>
     </ul>
   </li>
@@ -134,7 +143,7 @@ adapters.</p>
 
 <h2 id="building-from-a-source-distribution">Building from a source distribution</h2>
 
-<p>Prerequisite is Java (JDK 8, 9, 10, 11, or 12) on your path.</p>
+<p>Prerequisite is Java (JDK 8, 9, 10, 11, 12, or 13) on your path.</p>
 
 <p>Unpack the source distribution <code class="highlighter-rouge">.tar.gz</code> file,
 <code class="highlighter-rouge">cd</code> to the root directory of the unpacked source,
@@ -142,15 +151,15 @@ then build using the included maven wrapper:</p>
 
 <figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span><span class="nb">tar </span>xvfz calcite-1.21.0-source.tar.gz
 <span class="nv">$ </span><span class="nb">cd </span>calcite-1.21.0
-<span class="nv">$ </span>./mvnw install</code></pre></figure>
+<span class="nv">$ </span>./gradlew build</code></pre></figure>
 
 <p><a href="#running-tests">Running tests</a> describes how to run more or fewer
 tests.</p>
 
-<h2 id="building-from-git">Building from git</h2>
+<h2 id="building-from-git">Building from Git</h2>
 
 <p>Prerequisites are git
-and Java (JDK 8, 9, 10, 11, or 12) on your path.</p>
+and Java (JDK 8, 9, 10, 11, 12, or 13) on your path.</p>
 
 <p>Create a local copy of the github repository,
 <code class="highlighter-rouge">cd</code> to its root directory,
@@ -158,38 +167,46 @@ then build using the included maven wrapper:</p>
 
 <figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>git clone git://github.com/apache/calcite.git
 <span class="nv">$ </span><span class="nb">cd </span>calcite
-<span class="nv">$ </span>./mvnw install</code></pre></figure>
+<span class="nv">$ </span>./gradlew build</code></pre></figure>
 
 <p>Calcite includes a number of machine-generated codes. By default, these are
 regenerated on every build, but this has the negative side-effect of causing
 a re-compilation of the entire project when the non-machine-generated code
-has not changed. To make sure incremental compilation still works as intended,
-provide the <code class="highlighter-rouge">skipGenerate</code> command line option with your maven command.
-If you invoke the <code class="highlighter-rouge">clean</code> lifecycle phase, you must not specify the
-<code class="highlighter-rouge">skipGenerate</code> option as it will not recompile the necessary code for the build
-to succeed.</p>
+has not changed.</p>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>mvn clean
-<span class="nv">$ </span>mvn package
-... hacks ...
-<span class="nv">$ </span>mvn package <span class="nt">-DskipGenerate</span></code></pre></figure>
+<p>Typically re-generation is called automatically when the relevant templates
+are changed, and it should work transparently.
+However if your IDE does not generate sources (e.g. <code class="highlighter-rouge">core/build/javacc/javaCCMain/org/apache/calcite/sql/parser/impl/SqlParserImpl.java</code>),
+then you can call <code class="highlighter-rouge">./gradlew generateSources</code> tasks manually.</p>
 
 <p><a href="#running-tests">Running tests</a> describes how to run more or fewer
 tests.</p>
 
-<h2 id="if-you-already-have-apache-maven">If you already have Apache Maven</h2>
+<h2 id="gradle-vs-gradle-wrapper">Gradle vs Gradle wrapper</h2>
 
-<p>If you have already installed Maven and it is on your path, then you
-can use <code class="highlighter-rouge">mvn</code> rather than <code class="highlighter-rouge">./mvnw</code> in commands. You need Maven version
-3.5.2 or later.</p>
+<p>Calcite uses Gradle wrapper to make a consistent build environment.
+In the typical case you don’t need to install Gradle manually, and
+<code class="highlighter-rouge">./gradlew</code> would download the proper version for you and verify the expected checksum.</p>
+
+<p>You can install Gradle manually, however please note that there might
+be impedance mismatch between different versions.</p>
+
+<p>For more information about Gradle, check the following links:
+<a href="https://docs.gradle.org/current/userguide/what_is_gradle.html#five_things">Gradle five things</a>;
+<a href="https://docs.gradle.org/current/userguide/intro_multi_project_builds.html">Gradle multi-project builds</a>.</p>
 
 <h2 id="running-tests">Running tests</h2>
 
 <p>The test suite will run by default when you build, unless you specify
-<code class="highlighter-rouge">-DskipTests</code>:</p>
+<code class="highlighter-rouge">-x test</code></p>
+
+<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>./gradlew assemble <span class="c"># build the artifacts</span>
+<span class="nv">$ </span>./gradlew build <span class="nt">-x</span> <span class="nb">test</span> <span class="c"># build the artifacts, verify code style, skip tests</span>
+<span class="nv">$ </span>./gradlew check <span class="c"># verify code style, execute tests</span>
+<span class="nv">$ </span>./gradlew <span class="nb">test</span> <span class="c"># execute tests</span>
+<span class="nv">$ </span>./gradlew checkstyleMain checkstyleTest <span class="c"># verify code style</span></code></pre></figure>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>./mvnw <span class="nt">-DskipTests</span> clean install
-<span class="nv">$ </span>./mvnw <span class="nb">test</span></code></pre></figure>
+<p>You can use <code class="highlighter-rouge">./gradlew assemble</code> to build the artifacts and skip all tests and verifications.</p>
 
 <p>There are other options that control which tests are run, and in what
 environment, as follows.</p>
@@ -215,6 +232,20 @@ in-memory and run tests from those benchmarks.</li>
 Splunk must be installed and running.</li>
 </ul>
 
+<p>Note: tests are executed in a forked JVM, so system properties are not passed automatically
+when running tests with Gradle.
+By default, the build script passes the following <code class="highlighter-rouge">-D...</code> properties
+(see <code class="highlighter-rouge">passProperty</code> in <code class="highlighter-rouge">build.gradle.kts</code>):</p>
+
+<ul>
+  <li><code class="highlighter-rouge">java.awt.headless</code></li>
+  <li><code class="highlighter-rouge">junit.jupiter.execution.parallel.enabled</code>, default: <code class="highlighter-rouge">true</code></li>
+  <li><code class="highlighter-rouge">junit.jupiter.execution.timeout.default</code>, default: <code class="highlighter-rouge">5 m</code></li>
+  <li><code class="highlighter-rouge">user.language</code>, default: <code class="highlighter-rouge">TR</code></li>
+  <li><code class="highlighter-rouge">user.country</code>, default: <code class="highlighter-rouge">tr</code></li>
+  <li><code class="highlighter-rouge">calcite.**</code> (to enable <code class="highlighter-rouge">calcite.test.db</code> and others above)</li>
+</ul>
+
 <h2 id="running-integration-tests">Running integration tests</h2>
 
 <p>For testing Calcite’s external adapters, a test virtual machine should be used.
@@ -255,17 +286,18 @@ The connection strings for different databases are listed in <a href="https://gi
 <p>Command line:</p>
 
 <ul>
-  <li>Executing regular unit tests (does not require external data): no change. <code class="highlighter-rouge">mvn test</code> or <code class="highlighter-rouge">mvn install</code>.</li>
-  <li>Executing all tests, for all the DBs: <code class="highlighter-rouge">mvn verify -Pit</code>. <code class="highlighter-rouge">it</code> stands for “integration-test”. <code class="highlighter-rouge">mvn install -Pit</code> works as well.</li>
-  <li>Executing just tests for external DBs, excluding unit tests: <code class="highlighter-rouge">mvn -Dtest=foo -DfailIfNoTests=false -Pit verify</code></li>
-  <li>Executing just MongoDB tests: <code class="highlighter-rouge">cd mongo; mvn verify -Pit</code></li>
+  <li>Executing regular unit tests (does not require external data): no change. <code class="highlighter-rouge">./gradlew test</code> or <code class="highlighter-rouge">./gradlew build</code>.</li>
+  <li>Executing all tests, for all the DBs: <code class="highlighter-rouge">./gradlew test integTestAll</code>.</li>
+  <li>Executing just tests for external DBs, excluding unit tests: <code class="highlighter-rouge">./gradlew integTestAll</code></li>
+  <li>Executing PostgreSQL JDBC tests: <code class="highlighter-rouge">./gradlew integTestPostgresql</code></li>
+  <li>Executing just MongoDB tests: <code class="highlighter-rouge">./gradlew :mongo:build</code></li>
 </ul>
 
 <p>From within IDE:</p>
 
 <ul>
   <li>Executing regular unit tests: no change.</li>
-  <li>Executing MongoDB tests: run <code class="highlighter-rouge">MongoAdapterIT.java</code> as usual (no additional properties are required)</li>
+  <li>Executing MongoDB tests: run <code class="highlighter-rouge">MongoAdapterTest.java</code> with <code class="highlighter-rouge">calcite.integrationTest=true</code> system property</li>
   <li>Executing MySQL tests: run <code class="highlighter-rouge">JdbcTest</code> and <code class="highlighter-rouge">JdbcAdapterTest</code> with setting <code class="highlighter-rouge">-Dcalcite.test.db=mysql</code></li>
   <li>Executing PostgreSQL tests: run <code class="highlighter-rouge">JdbcTest</code> and <code class="highlighter-rouge">JdbcAdapterTest</code> with setting <code class="highlighter-rouge">-Dcalcite.test.db=postgresql</code></li>
 </ul>
@@ -293,10 +325,10 @@ Integration tests should be named <code class="highlighter-rouge">...IT.java</co
 
 <p>Start with <a href="#building-from-a-source-distribution">building Calcite from the command line</a>.</p>
 
-<p>Go to <em>File &gt; Open…</em> and open up Calcite’s <code class="highlighter-rouge">pom.xml</code> file.
+<p>Go to <em>File &gt; Open…</em> and open up Calcite’s root <code class="highlighter-rouge">build.gradle.kts</code> file.
 When IntelliJ asks if you want to open it as a project or a file, select project.
 Also, say yes when it asks if you want a new window.
-IntelliJ’s Maven project importer should handle the rest.</p>
+IntelliJ’s Gradle project importer should handle the rest.</p>
 
 <p>There is a partially implemented IntelliJ code style configuration that you can import located <a href="https://gist.github.com/gianm/27a4e3cad99d7b9b6513b6885d3cfcc9">on GitHub</a>.
 It does not do everything needed to make Calcite’s style checker happy, but
@@ -308,18 +340,9 @@ then <em>Import Scheme &gt; IntelliJ IDEA Code Style XML</em>.</p>
 For example, navigate to the method <code class="highlighter-rouge">JdbcTest.testWinAgg</code> with
 <em>Navigate &gt; Symbol</em> and enter <code class="highlighter-rouge">testWinAgg</code>. Run <code class="highlighter-rouge">testWinAgg</code> by right-clicking and selecting <em>Run</em> (or the equivalent keyboard shortcut).</p>
 
-<p>If you encounter an error while running the <code class="highlighter-rouge">JdbcTest.testWinAgg</code> , run the following Maven command from the command line:</p>
-
-<p><code class="highlighter-rouge">$ ./mvnw -DskipTests clean install</code></p>
-
-<p>You should see <code class="highlighter-rouge">"BUILD SUCCESS"</code>.</p>
-
-<p>Once that is complete, proceed with running <code class="highlighter-rouge">JdbcTest.testWinAgg</code>.</p>
-
 <h3 id="setting-up-netbeans">Setting up NetBeans</h3>
 
-<p>From the main menu, select <em>File &gt; Open Project</em> and navigate to a name of the project (Calcite) with a small Maven icon, and choose to open.
-(See <a href="https://www.packtpub.com/mapt/book/application_development/9781785286124/2/ch02lvl1sec23/importing-an-existing-maven-project-in-netbeans">this tutorial</a> for an example of how to open a Maven project)
+<p>From the main menu, select <em>File &gt; Open Project</em> and navigate to a name of the project (Calcite) with a small Gradle icon, and choose to open.
 Wait for NetBeans to finish importing all dependencies.</p>
 
 <p>To ensure that the project is configured successfully, navigate to the method <code class="highlighter-rouge">testWinAgg</code> in <code class="highlighter-rouge">org.apache.calcite.test.JdbcTest</code>.
@@ -327,6 +350,10 @@ Right-click on the method and select to <em>Run Focused Test Method</em>.
 NetBeans will run a Maven process, and you should see in the command output window a line with
  <code class="highlighter-rouge">Running org.apache.calcite.test.JdbcTest</code> followed by <code class="highlighter-rouge">"BUILD SUCCESS"</code>.</p>
 
+<p>Note: it is not clear if NetBeans automatically generates relevant sources on project import,
+so you might need to run <code class="highlighter-rouge">./gradlew generateSources</code> before importing the project (and when you
+update template parser sources, and project version)</p>
+
 <h2 id="tracing">Tracing</h2>
 
 <p>To enable tracing, add the following flags to the java command line:</p>
@@ -346,11 +373,9 @@ You can modify the level for the rootLogger to increase verbosity or change the
 for a specific class if you so choose.</p>
 
 <figure class="highlight"><pre><code class="language-properties" data-lang="properties"><span class="c"># Change rootLogger level to WARN
-</span><span class="py">log4j.rootLogger</span><span class="p">=</span><span class="s">WARN, A1
-</span>
+</span><span class="py">log4j.rootLogger</span><span class="p">=</span><span class="s">WARN, A1</span>
 <span class="c"># Increase level to DEBUG for RelOptPlanner
-</span><span class="py">log4j.logger.org.apache.calcite.plan.RelOptPlanner</span><span class="p">=</span><span class="s">DEBUG
-</span>
+</span><span class="py">log4j.logger.org.apache.calcite.plan.RelOptPlanner</span><span class="p">=</span><span class="s">DEBUG</span>
 <span class="c"># Increase level to TRACE for HepPlanner
 </span><span class="py">log4j.logger.org.apache.calcite.plan.hep.HepPlanner</span><span class="p">=</span><span class="s">TRACE</span></code></pre></figure>
 
@@ -409,8 +434,8 @@ connecting to: <span class="nb">test</span>
 Calcite model:</p>
 
 <figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>./sqlline
-sqlline&gt; <span class="o">!</span>connect jdbc:calcite:model<span class="o">=</span>mongodb/target/test-classes/mongo-model.json admin admin
-Connecting to jdbc:calcite:model<span class="o">=</span>mongodb/target/test-classes/mongo-model.json
+sqlline&gt; <span class="o">!</span>connect jdbc:calcite:model<span class="o">=</span>mongodb/src/test/resources/mongo-model.json admin admin
+Connecting to jdbc:calcite:model<span class="o">=</span>mongodb/src/test/resources/mongo-model.json
 Connected to: Calcite <span class="o">(</span>version 1.x.x<span class="o">)</span>
 Driver: Calcite JDBC Driver <span class="o">(</span>version 1.x.x<span class="o">)</span>
 Autocommit status: <span class="nb">true
@@ -457,15 +482,13 @@ queries. It is also necessary if you intend to run the test suite, using
 <span class="kd">public</span> <span class="kd">class</span> <span class="nc">AdapterContext</span> <span class="kd">implements</span> <span class="n">CalcitePrepare</span><span class="o">.</span><span class="na">Context</span> <span class="o">{</span>
   <span class="nd">@Override</span>
   <span class="kd">public</span> <span class="n">JavaTypeFactory</span> <span class="nf">getTypeFactory</span><span class="o">()</span> <span class="o">{</span>
-    <span class="c1">// adapter implementation
-</span>
+    <span class="c1">// adapter implementation</span>
     <span class="k">return</span> <span class="n">typeFactory</span><span class="o">;</span>
   <span class="o">}</span>
 
   <span class="nd">@Override</span>
   <span class="kd">public</span> <span class="n">CalciteSchema</span> <span class="nf">getRootSchema</span><span class="o">()</span> <span class="o">{</span>
-    <span class="c1">// adapter implementation
-</span>
+    <span class="c1">// adapter implementation</span>
     <span class="k">return</span> <span class="n">rootSchema</span><span class="o">;</span>
   <span class="o">}</span>
 <span class="o">}</span></code></pre></figure>
@@ -493,8 +516,7 @@ specific implementation.</p>
     <span class="n">CalcitePrepare</span><span class="o">.</span><span class="na">PrepareResult</span><span class="o">&lt;</span><span class="n">Object</span><span class="o">&gt;</span> <span class="n">prepared</span> <span class="o">=</span>
         <span class="k">new</span> <span class="nf">CalcitePrepareImpl</span><span class="o">().</span><span class="na">prepareSql</span><span class="o">(</span><span class="n">ctx</span><span class="o">,</span> <span class="n">sql</span><span class="o">,</span> <span class="kc">null</span><span class="o">,</span> <span class="n">elementType</span><span class="o">,</span> <span class="o">-</span><span class="mi">1</span><span class="o">);</span>
     <span class="n">Object</span> <span class="n">enumerable</span> <span class="o">=</span> <span class="n">prepared</span><span class="o">.</span><span class="na">getExecutable</span><span class="o">();</span>
-    <span class="c1">// etc.
-</span>
+    <span class="c1">// etc.</span>
   <span class="o">}</span>
 <span class="o">}</span></code></pre></figure>
 
@@ -594,34 +616,45 @@ file by following instructions in the <code class="highlighter-rouge">KEYS</code
 ball because that would be
 <a href="https://issues.apache.org/jira/browse/CALCITE-1746">redundant</a>.)</p>
 
-<h2 id="set-up-maven-repository-credentials-for-calcite-committers">Set up Maven repository credentials (for Calcite committers)</h2>
+<h2 id="set-up-nexus-repository-credentials-for-calcite-committers">Set up Nexus repository credentials (for Calcite committers)</h2>
+
+<p>Gradle provides multiple ways to <a href="https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties">configure project properties</a>.
+For instance, you could update <code class="highlighter-rouge">$HOME/.gradle/gradle.properties</code>.</p>
+
+<p>Note: the build script would print the missing properties, so you can try running it and let it complain on the missing ones.</p>
+
+<p>The following options are used:</p>
+
+<figure class="highlight"><pre><code class="language-properties" data-lang="properties"><span class="py">asfCommitterId</span><span class="p">=</span>
+<span class="py">asfNexusUsername</span><span class="p">=</span>
+<span class="py">asfNexusPassword</span><span class="p">=</span>
+<span class="py">asfSvnUsername</span><span class="p">=</span>
+<span class="py">asfSvnPassword</span><span class="p">=</span></code></pre></figure>
 
-<p>Follow the instructions <a href="https://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">here</a> to add your credentials to your maven configuration.</p>
+<p>Note: when https://github.com/vlsi/asflike-release-environment is used, the credentials are takend from
+<code class="highlighter-rouge">asfTest...</code> (e.g. <code class="highlighter-rouge">asfTestNexusUsername=test</code>)</p>
+
+<p>Note: if you want to uses <code class="highlighter-rouge">gpg-agent</code>, you need to pass <code class="highlighter-rouge">useGpgCmd</code> property, and specify the key id
+via <code class="highlighter-rouge">signing.gnupg.keyName</code>.</p>
 
 <h2 id="making-a-snapshot-for-calcite-committers">Making a snapshot (for Calcite committers)</h2>
 
 <p>Before you start:</p>
 
 <ul>
-  <li>Set up signing keys as described above.</li>
   <li>Make sure you are using JDK 8.</li>
   <li>Make sure build and tests succeed with <code class="highlighter-rouge">-Dcalcite.test.db=hsqldb</code> (the default)</li>
 </ul>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Tell GPG how to read a password from your terminal
-</span>
-<span class="nb">export </span><span class="nv">GPG_TTY</span><span class="o">=</span><span class="k">$(</span>tty<span class="k">)</span>
-
-<span class="c"># Make sure that there are no junk files in the sandbox
-</span>
+<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Make sure that there are no junk files in the sandbox</span>
 git clean <span class="nt">-xn</span>
-./mvnw clean
-
-./mvnw <span class="nt">-Papache-release</span> install</code></pre></figure>
+<span class="c"># Publish snapshot artifacts</span>
+./gradlew clean publish <span class="nt">-Pasf</span></code></pre></figure>
 
-<p>When the dry-run has succeeded, change <code class="highlighter-rouge">install</code> to <code class="highlighter-rouge">deploy</code>.</p>
+<h2 id="making-a-release-candidate-for-calcite-committers">Making a release candidate (for Calcite committers)</h2>
 
-<h2 id="making-a-release-for-calcite-committers">Making a release (for Calcite committers)</h2>
+<p>Note: release artifacts (dist.apache.org and repository.apache.org) are managed with
+<a href="https://github.com/vlsi/vlsi-release-plugins/tree/master/plugins/stage-vote-release-plugin">stage-vote-release-plugin</a></p>
 
 <p>Before you start:</p>
 
@@ -630,20 +663,18 @@ git clean <span class="nt">-xn</span>
   <li>Make sure you are using JDK 8 (not 9 or 10).</li>
   <li>Check that <code class="highlighter-rouge">README</code> and <code class="highlighter-rouge">site/_docs/howto.md</code> have the correct version number.</li>
   <li>Check that <code class="highlighter-rouge">NOTICE</code> has the current copyright year.</li>
-  <li>Set <code class="highlighter-rouge">version.major</code> and <code class="highlighter-rouge">version.minor</code> in <code class="highlighter-rouge">pom.xml</code>.</li>
-  <li>Make sure build and tests succeed, including with <code class="highlighter-rouge">-P it,it-oracle</code>.</li>
-  <li>Make sure that <code class="highlighter-rouge">./mvnw javadoc:javadoc javadoc:test-javadoc</code> succeeds
+  <li>Check that <code class="highlighter-rouge">calcite.version</code> has the proper value in <code class="highlighter-rouge">/gradle.properties</code>.</li>
+  <li>Make sure build and tests succeed</li>
+  <li>Make sure that <code class="highlighter-rouge">./gradlew javadoc</code> succeeds
 (i.e. gives no errors; warnings are OK)</li>
   <li>Generate a report of vulnerabilities that occur among dependencies,
-using <code class="highlighter-rouge">-Ppedantic</code>; if you like, run again with <code class="highlighter-rouge">-DfailBuildOnCVSS=8</code> to see
-whether serious vulnerabilities exist. Report to <a href="mailto:private@calcite.apache.org">private@calcite.apache.org</a>
+using <code class="highlighter-rouge">./gradlew dependencyCheckUpdate dependencyCheckAggregate</code>.
+Report to <a href="mailto:private@calcite.apache.org">private@calcite.apache.org</a>
 if new critical vulnerabilities are found among dependencies.</li>
-  <li>Make sure that <code class="highlighter-rouge">./mvnw apache-rat:check</code> succeeds. (It will be run as part of
-the release, but it’s better to trouble-shoot early.)</li>
   <li>Decide the supported configurations of JDK, operating system and
 Guava.  These will probably be the same as those described in the
 release notes of the previous release.  Document them in the release
-notes.  To test Guava version <em>x.y</em>, specify <code class="highlighter-rouge">-Dguava.version=x.y</code></li>
+notes.  To test Guava version <em>x.y</em>, specify <code class="highlighter-rouge">-Pguava.version=x.y</code></li>
   <li>Optional extra tests:
     <ul>
       <li><code class="highlighter-rouge">-Dcalcite.test.db=mysql</code></li>
@@ -672,66 +703,44 @@ just about to release)</li>
 <figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="err">$</span> <span class="p">.</span><span class="o">/</span><span class="n">sqlline</span>
 <span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">fun</span><span class="o">=</span><span class="n">spatial</span><span class="p">,</span><span class="n">oracle</span> <span class="nv">"sa"</span> <span class="nv">""</span>
 <span class="k">SELECT</span> <span class="n">NVL</span><span class="p">(</span><span class="n">ST_Is3D</span><span class="p">(</span><span class="n">ST_PointFromText</span><span class="p">(</span><span class="s1">'POINT(-71.064544 42.28787)'</span><span class="p">)),</span> <span class="k">TRUE</span><span class="p">);</span>
-<span class="o">+</span><span class="c1">--------+
-</span>
+<span class="o">+</span><span class="c1">--------+</span>
 <span class="o">|</span> <span class="n">EXPR</span><span class="err">$</span><span class="mi">0</span> <span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+
-</span>
+<span class="o">+</span><span class="c1">--------+</span>
 <span class="o">|</span> <span class="k">false</span>  <span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+
-</span>
+<span class="o">+</span><span class="c1">--------+</span>
 <span class="mi">1</span> <span class="k">row</span> <span class="n">selected</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">039</span> <span class="n">seconds</span><span class="p">)</span>
 <span class="o">&gt;</span> <span class="o">!</span><span class="n">quit</span></code></pre></figure>
 
-<p>Create a release branch named after the release, e.g. <code class="highlighter-rouge">branch-1.1</code>, and push it to Apache.</p>
+<p>The release candidate process does not add commits,
+so there’s no harm if it fails. It might leave <code class="highlighter-rouge">-rc</code> tag behind
+which can be removed if required.</p>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>git checkout <span class="nt">-b</span> branch-X.Y
-<span class="nv">$ </span>git push <span class="nt">-u</span> origin branch-X.Y</code></pre></figure>
+<p>You can perform a dry-run release with a help of https://github.com/vlsi/asflike-release-environment
+That would perform the same steps, however it would push changes to the mock Nexus, Git, and SVN servers.</p>
 
-<p>We will use the branch for the entire the release process. Meanwhile,
-we do not allow commits to the master branch. After the release is
-final, we can use <code class="highlighter-rouge">git merge --ff-only</code> to append the changes on the
-release branch onto the master branch. (Apache does not allow reverts
-to the master branch, which makes it difficult to clean up the kind of
-messy commits that inevitably happen while you are trying to finalize
-a release.)</p>
+<p>If any of the steps fail, fix the problem, and
+start again from the top.</p>
 
-<p>Now, set up your environment and do a dry run. The dry run will not
-commit any changes back to git and gives you the opportunity to verify
-that the release process will complete as expected.</p>
+<h3 id="to-prepare-a-release-candidate-directly-in-your-environment">To prepare a release candidate directly in your environment:</h3>
 
-<p>If any of the steps fail, clean up (see below), fix the problem, and
-start again from the top.</p>
+<p>Pick a release candidate index and ensure it does not interfere with previous candidates for the version.</p>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Tell GPG how to read a password from your terminal
-</span>
+<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Tell GPG how to read a password from your terminal</span>
 <span class="nb">export </span><span class="nv">GPG_TTY</span><span class="o">=</span><span class="k">$(</span>tty<span class="k">)</span>
 
-<span class="c"># Make sure that there are no junk files in the sandbox
-</span>
+<span class="c"># Make sure that there are no junk files in the sandbox</span>
 git clean <span class="nt">-xn</span>
-./mvnw clean
-
-<span class="c"># Do a dry run of the release:prepare step, which sets version numbers
-</span>
-<span class="c"># (accept the default tag name of calcite-X.Y.Z).
-</span>
-<span class="c"># Note X.Y.Z is the current version we're trying to release (e.g. 1.8.0),
-</span>
-<span class="c"># and X.(Y+1).Z is the next development version (e.g. 1.9.0).
-</span>
-./mvnw <span class="nt">-DdryRun</span><span class="o">=</span><span class="nb">true</span> <span class="nt">-DskipTests</span> <span class="nt">-DreleaseVersion</span><span class="o">=</span>X.Y.Z <span class="nt">-DdevelopmentVersion</span><span class="o">=</span>X.<span class="o">(</span>Y+1<span class="o">)</span>.Z-SNAPSHOT <span class="nt">-Papache-release</span> <span class="nt">-Darguments</span><span class="o">=</span><span class="nt">-DskipTests</span> release:prepare 2&gt;&amp [...]
-
-<span class="c"># If you have multiple GPG keys, you can select the key used to sign the release by adding `-Dgpg.keyname=${GPG_KEY_ID}` to `-Darguments`:
-</span>
-./mvnw <span class="nt">-DdryRun</span><span class="o">=</span><span class="nb">true</span> <span class="nt">-DskipTests</span> <span class="nt">-DreleaseVersion</span><span class="o">=</span>X.Y.Z <span class="nt">-DdevelopmentVersion</span><span class="o">=</span>X.<span class="o">(</span>Y+1<span class="o">)</span>.Z-SNAPSHOT <span class="nt">-Papache-release</span> <span class="nt">-Darguments</span><span class="o">=</span><span class="s2">"-DskipTests -Dgpg.keyname=</span><span clas [...]
-
-<p>Check the artifacts.
-Note that when performing the dry run <code class="highlighter-rouge">SNAPSHOT</code> will appear in any file or directory names given below.
-The version will be automatically changed when performing the release for real.</p>
+
+<span class="c"># Dry run the release candidate (push to asf-like-environment)</span>
+./gradlew prepareVote <span class="nt">-Prc</span><span class="o">=</span>1
+
+<span class="c"># Push release candidate to ASF servers</span>
+./gradlew prepareVote <span class="nt">-Prc</span><span class="o">=</span>1 <span class="nt">-Pasf</span></code></pre></figure>
+
+<h4 id="checking-the-artifacts">Checking the artifacts</h4>
 
 <ul>
-  <li>In the <code class="highlighter-rouge">target</code> directory should be these 3 files, among others:
+  <li>In the <code class="highlighter-rouge">release/build/distributions</code> directory should be these 3 files, among others:
     <ul>
       <li><code class="highlighter-rouge">apache-calcite-X.Y.Z-src.tar.gz</code></li>
       <li><code class="highlighter-rouge">apache-calcite-X.Y.Z-src.tar.gz.asc</code></li>
@@ -751,42 +760,13 @@ no binary distro), check that all files belong to a directory called
   </li>
   <li>Make sure that there is no <code class="highlighter-rouge">KEYS</code> file in the source distros</li>
   <li>In each .jar (for example
-<code class="highlighter-rouge">core/target/calcite-core-X.Y.Z.jar</code> and
-<code class="highlighter-rouge">mongodb/target/calcite-mongodb-X.Y.Z-sources.jar</code>), check
-that the <code class="highlighter-rouge">META-INF</code> directory contains <code class="highlighter-rouge">DEPENDENCIES</code>, <code class="highlighter-rouge">LICENSE</code>,
-<code class="highlighter-rouge">NOTICE</code> and <code class="highlighter-rouge">git.properties</code></li>
-  <li>In <code class="highlighter-rouge">core/target/calcite-core-X.Y.Z.jar</code>,
-check that <code class="highlighter-rouge">org-apache-calcite-jdbc.properties</code> is
-present and does not contain un-substituted <code class="highlighter-rouge">${...}</code> variables</li>
+<code class="highlighter-rouge">core/build/libs/calcite-core-X.Y.Z.jar</code> and
+<code class="highlighter-rouge">mongodb/build/libs/calcite-mongodb-X.Y.Z-sources.jar</code>), check
+that the <code class="highlighter-rouge">META-INF</code> directory contains <code class="highlighter-rouge">LICENSE</code>,
+<code class="highlighter-rouge">NOTICE</code></li>
   <li>Check PGP, per <a href="https://httpd.apache.org/dev/verification.html">this</a></li>
 </ul>
 
-<p>Now, remove the <code class="highlighter-rouge">-DdryRun</code> flag and run the release for real.
-For this step you’ll have to add the <a href="https://maven.apache.org/developers/committer-settings.html">Apache servers</a> to <code class="highlighter-rouge">~/.m2/settings.xml</code>.</p>
-
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Make sure that there are no junk files in the sandbox; performing a dry run may have generated
-</span>
-<span class="c"># redundant files that do not need to be present in the release artifacts.
-</span>
-git clean <span class="nt">-xn</span>
-./mvnw clean
-
-<span class="c"># Prepare sets the version numbers, creates a tag, and pushes it to git
-</span>
-<span class="c"># Note X.Y.Z is the current version we're trying to release, and X.Y+1.Z is the next development version.
-</span>
-<span class="c"># For example, if I am currently building a release for 1.16.0, X.Y.Z would be 1.16.0 and X.Y+1.Z would be 1.17.0.
-</span>
-./mvnw <span class="nt">-DdryRun</span><span class="o">=</span><span class="nb">false</span> <span class="nt">-DskipTests</span> <span class="nt">-DreleaseVersion</span><span class="o">=</span>X.Y.Z <span class="nt">-DdevelopmentVersion</span><span class="o">=</span>X.Y+1.Z-SNAPSHOT <span class="nt">-Papache-release</span> <span class="nt">-Darguments</span><span class="o">=</span><span class="nt">-DskipTests</span> release:prepare 2&gt;&amp;1 | tee /tmp/prepare.log
-
-<span class="c"># If you have multiple GPG keys, you can select the key used to sign the release by adding `-Dgpg.keyname=${GPG_KEY_ID}` to `-Darguments`:
-</span>
-./mvnw <span class="nt">-DdryRun</span><span class="o">=</span><span class="nb">false</span> <span class="nt">-DskipTests</span> <span class="nt">-DreleaseVersion</span><span class="o">=</span>X.Y.Z <span class="nt">-DdevelopmentVersion</span><span class="o">=</span>X.Y+1.Z-SNAPSHOT <span class="nt">-Papache-release</span> <span class="nt">-Darguments</span><span class="o">=</span><span class="s2">"-DskipTests -Dgpg.keyname=</span><span class="k">${</span><span class="nv">GPG_KEY_ID</spa [...]
-
-<span class="c"># Perform checks out the tagged version, builds, and deploys to the staging repository
-</span>
-./mvnw <span class="nt">-DskipTests</span> <span class="nt">-Papache-release</span> release:perform 2&gt;&amp;1 | tee /tmp/perform.log</code></pre></figure>
-
 <p>Verify the staged artifacts in the Nexus repository:</p>
 
 <ul>
@@ -800,65 +780,21 @@ https://repository.apache.org/content/repositories/orgapachecalcite-1000
 (or a similar URL)</li>
 </ul>
 
-<p>Upload the artifacts via subversion to a staging area,
-https://dist.apache.org/repos/dist/dev/calcite/apache-calcite-X.Y.Z-rcN:</p>
-
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Create a subversion workspace, if you haven't already
-</span>
-mkdir <span class="nt">-p</span> ~/dist/dev
-<span class="nb">pushd</span> ~/dist/dev
-svn co https://dist.apache.org/repos/dist/dev/calcite
-<span class="nb">popd</span>
-
-<span class="c"># Move the files into a directory
-</span>
-mkdir ~/dist/dev/calcite/apache-calcite-X.Y.Z-rcN
-mv apache-calcite-<span class="k">*</span> ~/dist/dev/calcite/apache-calcite-X.Y.Z-rcN
-
-<span class="c"># Check in
-</span>
-<span class="nb">cd</span> ~/dist/dev/calcite
-svn add apache-calcite-X.Y.Z-rcN
-svn ci</code></pre></figure>
-
 <h2 id="cleaning-up-after-a-failed-release-attempt-for-calcite-committers">Cleaning up after a failed release attempt (for Calcite committers)</h2>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Make sure that the tag you are about to generate does not already
-</span>
-<span class="c"># exist (due to a failed release attempt)
-</span>
-git tag
-
-<span class="c"># If the tag exists, delete it locally and remotely
-</span>
-git tag <span class="nt">-d</span> calcite-X.Y.Z
-git push origin :refs/tags/calcite-X.Y.Z
-
-<span class="c"># Remove modified files
-</span>
-./mvnw release:clean
-
-<span class="c"># Check whether there are modified files and if so, go back to the
-</span>
-<span class="c"># original git commit
-</span>
-git status
-git reset <span class="nt">--hard</span> HEAD</code></pre></figure>
+<p>If something is not correct, you can fix it, commit it, and prepare the next candidate.
+The release candidate tags might be kept for a while.</p>
 
 <h2 id="validate-a-release">Validate a release</h2>
 
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Check that the signing key (e.g. DDB6E9812AD3FAE3) is pushed
-</span>
+<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Check that the signing key (e.g. DDB6E9812AD3FAE3) is pushed</span>
 gpg <span class="nt">--recv-keys</span> key
 
-<span class="c"># Check keys
-</span>
+<span class="c"># Check keys</span>
 curl <span class="nt">-O</span> https://dist.apache.org/repos/dist/release/calcite/KEYS
 
-<span class="c"># Sign/check sha256 hashes
-</span>
-<span class="c"># (Assumes your O/S has a 'shasum' command.)
-</span>
+<span class="c"># Sign/check sha256 hashes</span>
+<span class="c"># (Assumes your O/S has a 'shasum' command.)</span>
 <span class="k">function </span>checkHash<span class="o">()</span> <span class="o">{</span>
   <span class="nb">cd</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span>
   <span class="k">for </span>i <span class="k">in</span> <span class="k">*</span>.<span class="o">{</span>pom,gz<span class="o">}</span><span class="p">;</span> <span class="k">do
@@ -881,7 +817,9 @@ checkHash apache-calcite-X.Y.Z-rcN</code></pre></figure>
 
 <h2 id="get-approval-for-a-release-via-apache-voting-process-for-calcite-committers">Get approval for a release via Apache voting process (for Calcite committers)</h2>
 
-<p>Release vote on dev list</p>
+<p>Release vote on dev list
+Note: the draft mail is printed as the final step of <code class="highlighter-rouge">prepareVote</code> task,
+and you can find the draft in <code class="highlighter-rouge">/build/prepareVote/mail.txt</code></p>
 
 <figure class="highlight"><pre><code class="language-text" data-lang="text">To: dev@calcite.apache.org
 Subject: [VOTE] Release apache-calcite-X.Y.Z (release candidate N)
@@ -971,35 +909,13 @@ This is based on the time when you expect to announce the release.
 This is usually a day after the vote closes.
 Remember that UTC date changes at 4pm Pacific time.</p>
 
-<p>Promote the staged nexus artifacts.</p>
+<h3 id="publishing-directly-in-your-environment">Publishing directly in your environment:</h3>
 
-<ul>
-  <li>Go to <a href="https://repository.apache.org/">https://repository.apache.org/</a> and login</li>
-  <li>Under “Build Promotion” click “Staging Repositories”</li>
-  <li>In the line with “orgapachecalcite-xxxx”, check the box</li>
-  <li>Press “Release” button</li>
-</ul>
+<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Dry run publishing the release (push to asf-like-environment)</span>
+./gradlew publishDist <span class="nt">-Prc</span><span class="o">=</span>1
 
-<p>Check the artifacts into svn.</p>
-
-<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Get the release candidate.
-</span>
-mkdir <span class="nt">-p</span> ~/dist/dev
-<span class="nb">cd</span> ~/dist/dev
-svn co https://dist.apache.org/repos/dist/dev/calcite
-
-<span class="c"># Copy the artifacts. Note that the copy does not have '-rcN' suffix.
-</span>
-mkdir <span class="nt">-p</span> ~/dist/release
-<span class="nb">cd</span> ~/dist/release
-svn co https://dist.apache.org/repos/dist/release/calcite
-<span class="nb">cd </span>calcite
-cp <span class="nt">-rp</span> ../../dev/calcite/apache-calcite-X.Y.Z-rcN apache-calcite-X.Y.Z
-svn add apache-calcite-X.Y.Z
-
-<span class="c"># Check in.
-</span>
-svn ci</code></pre></figure>
+<span class="c"># Publish the release to ASF servers</span>
+./gradlew publishDist <span class="nt">-Prc</span><span class="o">=</span>1 <span class="nt">-Pasf</span></code></pre></figure>
 
 <p>Svnpubsub will publish to the
 <a href="https://dist.apache.org/repos/dist/release/calcite">release repo</a> and propagate to the
@@ -1375,7 +1291,7 @@ as a template. Be sure to include a brief description of the project.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/index.html b/docs/index.html
index ef780a6..f1c941d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -197,7 +197,6 @@ more details in the <a href="reference.html">SQL reference</a></li>
   <li>Several <a href="adapter.html">adapters</a></li>
 </ul>
 
-
           
 
 
@@ -478,7 +477,7 @@ more details in the <a href="reference.html">SQL reference</a></li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/kafka_adapter.html b/docs/kafka_adapter.html
index 1de1a17..847d795 100644
--- a/docs/kafka_adapter.html
+++ b/docs/kafka_adapter.html
@@ -478,7 +478,7 @@ sqlline&gt; <span class="o">!</span>connect jdbc:calcite:model<span class="o">=<
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/lattice.html b/docs/lattice.html
index a1479eb..23bdac3 100644
--- a/docs/lattice.html
+++ b/docs/lattice.html
@@ -242,11 +242,9 @@ populating materialized views. Let’s run a query and check out its plan:</p>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">from</span> <span class="nv">"sales_fact_1997"</span>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">join</span> <span class="nv">"time_by_day"</span> <span class="k">using</span> <span class="p">(</span><span class="nv">"time_id"</span><span class="p">)</span>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">group</span> <span class="k">by</span> <span class="nv">"the_year"</span><span class="p">,</span><span class="nv">"the_month"</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">----------+-----------+------+
-</span>
+<span class="o">+</span><span class="c1">----------+-----------+------+</span>
 <span class="o">|</span> <span class="n">the_year</span> <span class="o">|</span> <span class="n">the_month</span> <span class="o">|</span>    <span class="k">C</span> <span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+-----------+------+
-</span>
+<span class="o">+</span><span class="c1">----------+-----------+------+</span>
 <span class="o">|</span> <span class="mi">1997</span>     <span class="o">|</span> <span class="n">September</span> <span class="o">|</span> <span class="mi">6663</span> <span class="o">|</span>
 <span class="o">|</span> <span class="mi">1997</span>     <span class="o">|</span> <span class="n">April</span>     <span class="o">|</span> <span class="mi">6590</span> <span class="o">|</span>
 <span class="o">|</span> <span class="mi">1997</span>     <span class="o">|</span> <span class="n">January</span>   <span class="o">|</span> <span class="mi">7034</span> <span class="o">|</span>
@@ -259,8 +257,7 @@ populating materialized views. Let’s run a query and check out its plan:</p>
 <span class="o">|</span> <span class="mi">1997</span>     <span class="o">|</span> <span class="n">December</span>  <span class="o">|</span> <span class="mi">8717</span> <span class="o">|</span>
 <span class="o">|</span> <span class="mi">1997</span>     <span class="o">|</span> <span class="n">July</span>      <span class="o">|</span> <span class="mi">7752</span> <span class="o">|</span>
 <span class="o">|</span> <span class="mi">1997</span>     <span class="o">|</span> <span class="n">November</span>  <span class="o">|</span> <span class="mi">8232</span> <span class="o">|</span>
-<span class="o">+</span><span class="c1">----------+-----------+------+
-</span>
+<span class="o">+</span><span class="c1">----------+-----------+------+</span>
 <span class="mi">12</span> <span class="k">rows</span> <span class="n">selected</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">147</span> <span class="n">seconds</span><span class="p">)</span>
 
 <span class="n">sqlline</span><span class="o">&gt;</span> <span class="k">explain</span> <span class="n">plan</span> <span class="k">for</span>
@@ -268,11 +265,9 @@ populating materialized views. Let’s run a query and check out its plan:</p>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">from</span> <span class="nv">"sales_fact_1997"</span>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">join</span> <span class="nv">"time_by_day"</span> <span class="k">using</span> <span class="p">(</span><span class="nv">"time_id"</span><span class="p">)</span>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">group</span> <span class="k">by</span> <span class="nv">"the_year"</span><span class="p">,</span><span class="nv">"the_month"</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+
-</span>
+<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">PLAN</span>                                                                           <span class="o">|</span>
-<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+
-</span>
+<span class="o">+</span><span class="c1">--------------------------------------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">EnumerableCalc</span><span class="p">(</span><span class="n">expr</span><span class="o">#</span><span class="mi">0</span><span class="p">..</span><span class="mi">2</span><span class="o">=</span><span class="p">[</span><span class="err">{</span><span class="n">inputs</span><span class="err">}</span><span class="p">],</span> <span class="n">the_year</span><span class="o">=</span><span class="p">[</span><span class="err">$</span><span class="n">t1</ [...]
 <span class="o">|</span>   <span class="n">EnumerableAggregate</span><span class="p">(</span><span class="k">group</span><span class="o">=</span><span class="p">[</span><span class="err">{</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="err">}</span><span class="p">],</span> <span class="k">C</span><span class="o">=</span><span class="p">[</span><span class="err">$</span><span class="n">SUM0</span><span class="p">(</span><span class="err">$</ [...]
 <span class="o">|</span>     <span class="n">EnumerableTableScan</span><span class="p">(</span><span class="k">table</span><span class="o">=</span><span class="p">[[</span><span class="n">adhoc</span><span class="p">,</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class=" [...]
@@ -287,11 +282,9 @@ tiles created at the start of the connection.</p>
 so is a more efficient way to answer the query:</p>
 
 <figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">describe</span> <span class="nv">"adhoc"</span><span class="p">.</span><span class="nv">"m{16, 17, 27, 31, 32, 36, 37}"</span>
-<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+
-</span>
+<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+</span>
 <span class="o">|</span> <span class="n">TABLE_SCHEM</span> <span class="o">|</span> <span class="k">TABLE_NAME</span>                    <span class="o">|</span> <span class="k">COLUMN_NAME</span>        <span class="o">|</span> <span class="n">DATA_TYPE</span> <span class="o">|</span> <span class="n">TYPE_NAME</span>       <span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+
-</span>
+<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+</span>
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
@@ -300,19 +293,15 @@ so is a more efficient way to answer the query:</p>
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">31</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
-<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+
-</span>
+<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------------+-----------+-----------------+</span>
 
 <span class="n">sqlline</span><span class="o">&gt;</span> <span class="k">select</span> <span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span> <span class="k">as</span> <span class="k">c</span>
 <span class="p">.</span> <span class="p">.</span> <span class="p">.</span> <span class="p">.</span><span class="o">&gt;</span> <span class="k">from</span> <span class="nv">"adhoc"</span><span class="p">.</span><span class="nv">"m{16, 17, 27, 31, 32, 36, 37}"</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----+
-</span>
+<span class="o">+</span><span class="c1">-----+</span>
 <span class="o">|</span>   <span class="k">C</span> <span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+
-</span>
+<span class="o">+</span><span class="c1">-----+</span>
 <span class="o">|</span> <span class="mi">120</span> <span class="o">|</span>
-<span class="o">+</span><span class="c1">-----+
-</span>
+<span class="o">+</span><span class="c1">-----+</span>
 <span class="mi">1</span> <span class="k">row</span> <span class="n">selected</span> <span class="p">(</span><span class="mi">0</span><span class="p">.</span><span class="mi">12</span> <span class="n">seconds</span><span class="p">)</span></code></pre></figure>
 
 <p>Let’s list the tables, and you will see several more tiles. There are also
@@ -320,11 +309,9 @@ tables of the <code class="highlighter-rouge">foodmart</code> schema, and the sy
 and the lattice itself, which appears as a table called <code class="highlighter-rouge">star</code>.</p>
 
 <figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="n">tables</span>
-<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------+
-</span>
+<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------+</span>
 <span class="o">|</span> <span class="n">TABLE_SCHEM</span> <span class="o">|</span> <span class="k">TABLE_NAME</span>                    <span class="o">|</span> <span class="n">TABLE_TYPE</span>   <span class="o">|</span>
-<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------+
-</span>
+<span class="o">+</span><span class="c1">-------------+-------------------------------+--------------+</span>
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">18</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span>         <span class="o">|</span> <span class="k">TABLE</span>        <span class="o">|</span>
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">16</span><span class="p">,</span> <span class="mi">17</span><span class="p">,</span> <span class="mi">19</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">36</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span [...]
 <span class="o">|</span> <span class="n">adhoc</span>       <span class="o">|</span> <span class="n">m</span><span class="err">{</span><span class="mi">4</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">16</span><span class="p">,</span> <span class="mi">27</span><span class="p">,</span> <span class="mi">32</span><span class="p">,</span> <span class="mi">37</span><span class="err">}</span>       <span class="o">|</span> <span class="k">TABL [...]
@@ -420,7 +407,6 @@ data is changed.</li>
     In <i>Proc. ACM SIGMOD Conf.</i>, Montreal, 1996.</li>
 </ul>
 
-
           
 
 
@@ -724,7 +710,7 @@ data is changed.</li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/materialized_views.html b/docs/materialized_views.html
index 06a2439..194de56 100644
--- a/docs/materialized_views.html
+++ b/docs/materialized_views.html
@@ -732,7 +732,7 @@ GROUP BY empid, deptname
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/model.html b/docs/model.html
index dedaf62..abff380 100644
--- a/docs/model.html
+++ b/docs/model.html
@@ -1080,7 +1080,7 @@ when you want to pass the column as a measure argument.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/os_adapter.html b/docs/os_adapter.html
index 7bfba61..e6c3017 100644
--- a/docs/os_adapter.html
+++ b/docs/os_adapter.html
@@ -635,7 +635,7 @@ into <a href="https://github.com/julianhyde/sqlline">sqlline</a></li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/pig_adapter.html b/docs/pig_adapter.html
index 8045f66..be8b01f 100644
--- a/docs/pig_adapter.html
+++ b/docs/pig_adapter.html
@@ -459,7 +459,7 @@ So, Piglet is basically the opposite of the Pig adapter.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/powered_by.html b/docs/powered_by.html
index 6fa0bf9..81f7a2b 100644
--- a/docs/powered_by.html
+++ b/docs/powered_by.html
@@ -543,7 +543,7 @@ graph database.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/reference.html b/docs/reference.html
index 22061c5..65d2969 100644
--- a/docs/reference.html
+++ b/docs/reference.html
@@ -5173,7 +5173,7 @@ and <em>filePathLiteral</em> are character literals.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/spatial.html b/docs/spatial.html
index c5162d3..90809e2 100644
--- a/docs/spatial.html
+++ b/docs/spatial.html
@@ -436,7 +436,7 @@ when the specification wasn’t clear. Thank you to these awesome projects.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/stream.html b/docs/stream.html
index 057ac41..e517b9f 100644
--- a/docs/stream.html
+++ b/docs/stream.html
@@ -1373,7 +1373,7 @@ MillWheel: Fault-Tolerant Stream Processing at Internet Scale</a>.</li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/docs/tutorial.html b/docs/tutorial.html
index 0bf2996..f4ac934 100644
--- a/docs/tutorial.html
+++ b/docs/tutorial.html
@@ -114,12 +114,11 @@ to relational operators using planner rules.</li>
 
 <h2 id="download-and-build">Download and build</h2>
 
-<p>You need Java (version 8, 9 or 10) and git.</p>
+<p>You need Java (version 8, 9 or 10) and Git.</p>
 
 <figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>git clone https://github.com/apache/calcite.git
-<span class="nv">$ </span><span class="nb">cd </span>calcite
-<span class="nv">$ </span>./mvnw install <span class="nt">-DskipTests</span> <span class="nt">-Dcheckstyle</span>.skip<span class="o">=</span><span class="nb">true</span>
-<span class="nv">$ </span><span class="nb">cd </span>example/csv</code></pre></figure>
+<span class="nv">$ </span><span class="nb">cd </span>calcite/example/csv
+<span class="nv">$ </span>./sqlline</code></pre></figure>
 
 <h2 id="first-queries">First queries</h2>
 
@@ -128,7 +127,7 @@ to relational operators using planner rules.</li>
 that is included in this project.</p>
 
 <figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>./sqlline
-sqlline&gt; <span class="o">!</span>connect jdbc:calcite:model<span class="o">=</span>target/test-classes/model.json admin admin</code></pre></figure>
+sqlline&gt; <span class="o">!</span>connect jdbc:calcite:model<span class="o">=</span>src/test/resources/model.json admin admin</code></pre></figure>
 
 <p>(If you are running Windows, the command is <code class="highlighter-rouge">sqlline.bat</code>.)</p>
 
@@ -158,7 +157,7 @@ system tables are always present in Calcite, but the other tables are
 provided by the specific implementation of the schema; in this case,
 the <code>EMPS</code> and <code>DEPTS</code> tables are based on the
 <code>EMPS.csv</code> and <code>DEPTS.csv</code> files in the
-<code>target/test-classes</code> directory.</p>
+<code>resources/sales</code> directory.</p>
 
 <p>Let’s execute some queries on those tables, to show that Calcite is providing
 a full implementation of SQL. First, a table scan:</p>
@@ -227,7 +226,7 @@ format. Here is the model:</p>
       </span><span class="err">type</span><span class="p">:</span><span class="w"> </span><span class="err">'custom'</span><span class="p">,</span><span class="w">
       </span><span class="err">factory</span><span class="p">:</span><span class="w"> </span><span class="err">'org.apache.calcite.adapter.csv.CsvSchemaFactory'</span><span class="p">,</span><span class="w">
       </span><span class="err">operand</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
-        </span><span class="err">directory</span><span class="p">:</span><span class="w"> </span><span class="err">'target/test-classes/sales'</span><span class="w">
+        </span><span class="err">directory</span><span class="p">:</span><span class="w"> </span><span class="err">'sales'</span><span class="w">
       </span><span class="p">}</span><span class="w">
     </span><span class="p">}</span><span class="w">
   </span><span class="p">]</span><span class="w">
@@ -276,10 +275,8 @@ and its sub-classes.</p>
 method in the <code>AbstractSchema</code> base class.</p>
 
 <figure class="highlight"><pre><code class="language-java" data-lang="java"><span class="kd">protected</span> <span class="n">Map</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Table</span><span class="o">&gt;</span> <span class="nf">getTableMap</span><span class="o">()</span> <span class="o">{</span>
-  <span class="c1">// Look for files in the directory ending in ".csv", ".csv.gz", ".json",
-</span>
-  <span class="c1">// ".json.gz".
-</span>
+  <span class="c1">// Look for files in the directory ending in ".csv", ".csv.gz", ".json",</span>
+  <span class="c1">// ".json.gz".</span>
   <span class="n">File</span><span class="o">[]</span> <span class="n">files</span> <span class="o">=</span> <span class="n">directoryFile</span><span class="o">.</span><span class="na">listFiles</span><span class="o">(</span>
       <span class="k">new</span> <span class="nf">FilenameFilter</span><span class="o">()</span> <span class="o">{</span>
         <span class="kd">public</span> <span class="kt">boolean</span> <span class="nf">accept</span><span class="o">(</span><span class="n">File</span> <span class="n">dir</span><span class="o">,</span> <span class="n">String</span> <span class="n">name</span><span class="o">)</span> <span class="o">{</span>
@@ -292,8 +289,7 @@ method in the <code>AbstractSchema</code> base class.</p>
     <span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"directory "</span> <span class="o">+</span> <span class="n">directoryFile</span> <span class="o">+</span> <span class="s">" not found"</span><span class="o">);</span>
     <span class="n">files</span> <span class="o">=</span> <span class="k">new</span> <span class="n">File</span><span class="o">[</span><span class="mi">0</span><span class="o">];</span>
   <span class="o">}</span>
-  <span class="c1">// Build a map from table name to table; each file becomes a table.
-</span>
+  <span class="c1">// Build a map from table name to table; each file becomes a table.</span>
   <span class="kd">final</span> <span class="n">ImmutableMap</span><span class="o">.</span><span class="na">Builder</span><span class="o">&lt;</span><span class="n">String</span><span class="o">,</span> <span class="n">Table</span><span class="o">&gt;</span> <span class="n">builder</span> <span class="o">=</span> <span class="n">ImmutableMap</span><span class="o">.</span><span class="na">builder</span><span class="o">();</span>
   <span class="k">for</span> <span class="o">(</span><span class="n">File</span> <span class="n">file</span> <span class="o">:</span> <span class="n">files</span><span class="o">)</span> <span class="o">{</span>
     <span class="n">String</span> <span class="n">tableName</span> <span class="o">=</span> <span class="n">trim</span><span class="o">(</span><span class="n">file</span><span class="o">.</span><span class="na">getName</span><span class="o">(),</span> <span class="s">".gz"</span><span class="o">);</span>
@@ -326,7 +322,7 @@ method in the <code>AbstractSchema</code> base class.</p>
 
 <p>The schema scans the directory and finds all files whose name ends
 with “.csv” and creates tables for them. In this case, the directory
-is <code>target/test-classes/sales</code> and contains files
+is <code>sales</code> and contains files
 <code>EMPS.csv</code> and <code>DEPTS.csv</code>, which these become
 the tables <code>EMPS</code> and <code>DEPTS</code>.</p>
 
@@ -359,7 +355,7 @@ clause that are not used in the final result.</p>
       </span><span class="err">type</span><span class="p">:</span><span class="w"> </span><span class="err">'custom'</span><span class="p">,</span><span class="w">
       </span><span class="err">factory</span><span class="p">:</span><span class="w"> </span><span class="err">'org.apache.calcite.adapter.csv.CsvSchemaFactory'</span><span class="p">,</span><span class="w">
       </span><span class="err">operand</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
-        </span><span class="err">directory</span><span class="p">:</span><span class="w"> </span><span class="err">'target/test-classes/sales'</span><span class="w">
+        </span><span class="err">directory</span><span class="p">:</span><span class="w"> </span><span class="err">'sales'</span><span class="w">
       </span><span class="p">},</span><span class="w">
       </span><span class="err">tables</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="w">
         </span><span class="p">{</span><span class="w">
@@ -393,11 +389,9 @@ supply a list of lines rather than a single string:</p>
 <p>Now we have defined a view, we can use it in queries just as if it were a table:</p>
 
 <figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="k">SELECT</span> <span class="n">e</span><span class="p">.</span><span class="n">name</span><span class="p">,</span> <span class="n">d</span><span class="p">.</span><span class="n">name</span> <span class="k">FROM</span> <span class="n">female_emps</span> <span class="k">AS</span> <span class="n">e</span> <span class="k">JOIN</span> <span class= [...]
-<span class="o">+</span><span class="c1">--------+------------+
-</span>
+<span class="o">+</span><span class="c1">--------+------------+</span>
 <span class="o">|</span>  <span class="n">NAME</span>  <span class="o">|</span>    <span class="n">NAME</span>    <span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+------------+
-</span>
+<span class="o">+</span><span class="c1">--------+------------+</span>
 <span class="o">|</span> <span class="n">Wilma</span>  <span class="o">|</span> <span class="n">Marketing</span>  <span class="o">|</span>
 <span class="o">+</span><span class="c1">--------+------------+</span></code></pre></figure>
 
@@ -420,7 +414,7 @@ They don’t need to live in a custom schema.</p>
           </span><span class="err">type</span><span class="p">:</span><span class="w"> </span><span class="err">'custom'</span><span class="p">,</span><span class="w">
           </span><span class="err">factory</span><span class="p">:</span><span class="w"> </span><span class="err">'org.apache.calcite.adapter.csv.CsvTableFactory'</span><span class="p">,</span><span class="w">
           </span><span class="err">operand</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w">
-            </span><span class="err">file</span><span class="p">:</span><span class="w"> </span><span class="err">'target/test-classes/sales/EMPS.csv.gz'</span><span class="p">,</span><span class="w">
+            </span><span class="err">file</span><span class="p">:</span><span class="w"> </span><span class="err">'sales/EMPS.csv.gz'</span><span class="p">,</span><span class="w">
             </span><span class="err">flavor</span><span class="p">:</span><span class="w"> </span><span class="s2">"scannable"</span><span class="w">
           </span><span class="p">}</span><span class="w">
         </span><span class="p">}</span><span class="w">
@@ -431,13 +425,11 @@ They don’t need to live in a custom schema.</p>
 
 <p>We can query the table in the usual way:</p>
 
-<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">model</span><span class="o">=</span><span class="n">target</span><span class="o">/</span><span class="n">test</span><span class="o">-</span><span class="n">classes</span><span class="o [...]
+<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">model</span><span class="o">=</span><span class="n">src</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">resources</span><span class="o" [...]
 <span class="n">sqlline</span><span class="o">&gt;</span> <span class="k">SELECT</span> <span class="n">empno</span><span class="p">,</span> <span class="n">name</span> <span class="k">FROM</span> <span class="n">custom_table</span><span class="p">.</span><span class="n">emps</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">--------+--------+
-</span>
+<span class="o">+</span><span class="c1">--------+--------+</span>
 <span class="o">|</span> <span class="n">EMPNO</span>  <span class="o">|</span>  <span class="n">NAME</span>  <span class="o">|</span>
-<span class="o">+</span><span class="c1">--------+--------+
-</span>
+<span class="o">+</span><span class="c1">--------+--------+</span>
 <span class="o">|</span> <span class="mi">100</span>    <span class="o">|</span> <span class="n">Fred</span>   <span class="o">|</span>
 <span class="o">|</span> <span class="mi">110</span>    <span class="o">|</span> <span class="n">Eric</span>   <span class="o">|</span>
 <span class="o">|</span> <span class="mi">110</span>    <span class="o">|</span> <span class="n">John</span>   <span class="o">|</span>
@@ -511,24 +503,19 @@ schema, and then you define some rules to make the access efficient.</p>
 a subset of columns from a CSV file. Let’s run the same query against two very
 similar schemas:</p>
 
-<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">model</span><span class="o">=</span><span class="n">target</span><span class="o">/</span><span class="n">test</span><span class="o">-</span><span class="n">classes</span><span class="o [...]
+<figure class="highlight"><pre><code class="language-sql" data-lang="sql"><span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">model</span><span class="o">=</span><span class="n">src</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">resources</span><span class="o" [...]
 <span class="n">sqlline</span><span class="o">&gt;</span> <span class="k">explain</span> <span class="n">plan</span> <span class="k">for</span> <span class="k">select</span> <span class="n">name</span> <span class="k">from</span> <span class="n">emps</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+
-</span>
+<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">PLAN</span>                                                <span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+
-</span>
+<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">EnumerableCalcRel</span><span class="p">(</span><span class="n">expr</span><span class="o">#</span><span class="mi">0</span><span class="p">..</span><span class="mi">9</span><span class="o">=</span><span class="p">[</span><span class="err">{</span><span class="n">inputs</span><span class="err">}</span><span class="p">],</span> <span class="n">NAME</span><span class="o">=</span><span class="p">[</span><span class="err">$</span><span class="n">t1</s [...]
 <span class="o">|</span>   <span class="n">EnumerableTableScan</span><span class="p">(</span><span class="k">table</span><span class="o">=</span><span class="p">[[</span><span class="n">SALES</span><span class="p">,</span> <span class="n">EMPS</span><span class="p">]])</span>        <span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+
-</span>
-<span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">model</span><span class="o">=</span><span class="n">target</span><span class="o">/</span><span class="n">test</span><span class="o">-</span><span class="n">classes</span><span class="o">/</span><span class="n">smart</span><span class="p">.</span><span class= [...]
+<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
+<span class="n">sqlline</span><span class="o">&gt;</span> <span class="o">!</span><span class="k">connect</span> <span class="n">jdbc</span><span class="p">:</span><span class="n">calcite</span><span class="p">:</span><span class="n">model</span><span class="o">=</span><span class="n">src</span><span class="o">/</span><span class="n">test</span><span class="o">/</span><span class="n">resources</span><span class="o">/</span><span class="n">smart</span><span class="p">.</span><span class=" [...]
 <span class="n">sqlline</span><span class="o">&gt;</span> <span class="k">explain</span> <span class="n">plan</span> <span class="k">for</span> <span class="k">select</span> <span class="n">name</span> <span class="k">from</span> <span class="n">emps</span><span class="p">;</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+
-</span>
+<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">PLAN</span>                                                <span class="o">|</span>
-<span class="o">+</span><span class="c1">-----------------------------------------------------+
-</span>
+<span class="o">+</span><span class="c1">-----------------------------------------------------+</span>
 <span class="o">|</span> <span class="n">EnumerableCalcRel</span><span class="p">(</span><span class="n">expr</span><span class="o">#</span><span class="mi">0</span><span class="p">..</span><span class="mi">9</span><span class="o">=</span><span class="p">[</span><span class="err">{</span><span class="n">inputs</span><span class="err">}</span><span class="p">],</span> <span class="n">NAME</span><span class="o">=</span><span class="p">[</span><span class="err">$</span><span class="n">t1</s [...]
 <span class="o">|</span>   <span class="n">CsvTableScan</span><span class="p">(</span><span class="k">table</span><span class="o">=</span><span class="p">[[</span><span class="n">SALES</span><span class="p">,</span> <span class="n">EMPS</span><span class="p">]])</span>               <span class="o">|</span>
 <span class="o">+</span><span class="c1">-----------------------------------------------------+</span></code></pre></figure>
@@ -572,8 +559,7 @@ but we have created a distinctive sub-type that will cause rules to fire.</p>
     <span class="kd">final</span> <span class="n">CsvTableScan</span> <span class="n">scan</span> <span class="o">=</span> <span class="n">call</span><span class="o">.</span><span class="na">rel</span><span class="o">(</span><span class="mi">1</span><span class="o">);</span>
     <span class="kt">int</span><span class="o">[]</span> <span class="n">fields</span> <span class="o">=</span> <span class="n">getProjectFields</span><span class="o">(</span><span class="n">project</span><span class="o">.</span><span class="na">getProjects</span><span class="o">());</span>
     <span class="k">if</span> <span class="o">(</span><span class="n">fields</span> <span class="o">==</span> <span class="kc">null</span><span class="o">)</span> <span class="o">{</span>
-      <span class="c1">// Project contains expressions more complex than just field references.
-</span>
+      <span class="c1">// Project contains expressions more complex than just field references.</span>
       <span class="k">return</span><span class="o">;</span>
     <span class="o">}</span>
     <span class="n">call</span><span class="o">.</span><span class="na">transformTo</span><span class="o">(</span>
@@ -591,8 +577,7 @@ but we have created a distinctive sub-type that will cause rules to fire.</p>
       <span class="k">if</span> <span class="o">(</span><span class="n">exp</span> <span class="k">instanceof</span> <span class="n">RexInputRef</span><span class="o">)</span> <span class="o">{</span>
         <span class="n">fields</span><span class="o">[</span><span class="n">i</span><span class="o">]</span> <span class="o">=</span> <span class="o">((</span><span class="n">RexInputRef</span><span class="o">)</span> <span class="n">exp</span><span class="o">).</span><span class="na">getIndex</span><span class="o">();</span>
       <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
-        <span class="k">return</span> <span class="kc">null</span><span class="o">;</span> <span class="c1">// not a simple projection
-</span>
+        <span class="k">return</span> <span class="kc">null</span><span class="o">;</span> <span class="c1">// not a simple projection</span>
       <span class="o">}</span>
     <span class="o">}</span>
     <span class="k">return</span> <span class="n">fields</span><span class="o">;</span>
@@ -752,7 +737,6 @@ initial implementations.</p>
 <p>There are many other ways to extend Calcite not yet described in this tutorial.
 The <a href="adapter.html">adapter specification</a> describes the APIs involved.</p>
 
-
           
 
 
@@ -1038,7 +1022,7 @@ The <a href="adapter.html">adapter specification</a> describes the APIs involved
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/downloads/index.html b/downloads/index.html
index 79c60b1..e30337e 100644
--- a/downloads/index.html
+++ b/downloads/index.html
@@ -312,7 +312,7 @@ forth.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/index.html b/index.html
index 3470db6..496c87d 100644
--- a/index.html
+++ b/index.html
@@ -146,7 +146,7 @@
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2014/06/27/release-0.8.0-incubating/index.html b/news/2014/06/27/release-0.8.0-incubating/index.html
index e8f4ed9..cf2be46 100644
--- a/news/2014/06/27/release-0.8.0-incubating/index.html
+++ b/news/2014/06/27/release-0.8.0-incubating/index.html
@@ -236,7 +236,7 @@ new utility, <code class="highlighter-rouge">SqlRun</code>.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2014/08/19/release-0.9.0-incubating/index.html b/news/2014/08/19/release-0.9.0-incubating/index.html
index 742e837..d8a59ef 100644
--- a/news/2014/08/19/release-0.9.0-incubating/index.html
+++ b/news/2014/08/19/release-0.9.0-incubating/index.html
@@ -234,7 +234,7 @@
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2014/10/02/release-0.9.1-incubating/index.html b/news/2014/10/02/release-0.9.1-incubating/index.html
index 6b6c8c0..7d05137 100644
--- a/news/2014/10/02/release-0.9.1-incubating/index.html
+++ b/news/2014/10/02/release-0.9.1-incubating/index.html
@@ -234,7 +234,7 @@
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2014/11/05/release-0.9.2-incubating/index.html b/news/2014/11/05/release-0.9.2-incubating/index.html
index 7536627..a4fcd82 100644
--- a/news/2014/11/05/release-0.9.2-incubating/index.html
+++ b/news/2014/11/05/release-0.9.2-incubating/index.html
@@ -237,7 +237,7 @@ before you move on to 1.0.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/01/31/release-1.0.0-incubating/index.html b/news/2015/01/31/release-1.0.0-incubating/index.html
index 2d47770..1201756 100644
--- a/news/2015/01/31/release-1.0.0-incubating/index.html
+++ b/news/2015/01/31/release-1.0.0-incubating/index.html
@@ -247,7 +247,7 @@ and fixes about 30 bugs.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/03/13/release-1.1.0-incubating/index.html b/news/2015/03/13/release-1.1.0-incubating/index.html
index d14f7f5..dea1701 100644
--- a/news/2015/03/13/release-1.1.0-incubating/index.html
+++ b/news/2015/03/13/release-1.1.0-incubating/index.html
@@ -246,7 +246,7 @@ calling constructors directly.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/04/07/release-1.2.0-incubating/index.html b/news/2015/04/07/release-1.2.0-incubating/index.html
index 64e067f..58c64cd 100644
--- a/news/2015/04/07/release-1.2.0-incubating/index.html
+++ b/news/2015/04/07/release-1.2.0-incubating/index.html
@@ -246,7 +246,7 @@ improve implicit and explicit conversions in SQL.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/04/24/new-committers/index.html b/news/2015/04/24/new-committers/index.html
index fa307c5..ada3531 100644
--- a/news/2015/04/24/new-committers/index.html
+++ b/news/2015/04/24/new-committers/index.html
@@ -240,7 +240,7 @@ committers for their work on Calcite. Welcome all!</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/05/30/release-1.3.0-incubating/index.html b/news/2015/05/30/release-1.3.0-incubating/index.html
index 6a5db32..7c630f6 100644
--- a/news/2015/05/30/release-1.3.0-incubating/index.html
+++ b/news/2015/05/30/release-1.3.0-incubating/index.html
@@ -238,7 +238,7 @@ and various improvements to Avatica.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/06/05/algebra-builder/index.html b/news/2015/06/05/algebra-builder/index.html
index fff4def..2f25afd 100644
--- a/news/2015/06/05/algebra-builder/index.html
+++ b/news/2015/06/05/algebra-builder/index.html
@@ -285,7 +285,7 @@ extensive set of query-optimization rules.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/07/31/xldb-best-lightning-talk/index.html b/news/2015/07/31/xldb-best-lightning-talk/index.html
index 7b1aa79..c640b97 100644
--- a/news/2015/07/31/xldb-best-lightning-talk/index.html
+++ b/news/2015/07/31/xldb-best-lightning-talk/index.html
@@ -245,7 +245,7 @@ and <a href="https://www.youtube.com/watch?v=5_MyORYjq3w">video</a>.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/09/02/release-1.4.0-incubating/index.html b/news/2015/09/02/release-1.4.0-incubating/index.html
index 670d423..88c9d9b 100644
--- a/news/2015/09/02/release-1.4.0-incubating/index.html
+++ b/news/2015/09/02/release-1.4.0-incubating/index.html
@@ -244,7 +244,7 @@ so that you can easily create relational algebra expressions.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/10/22/calcite-graduates/index.html b/news/2015/10/22/calcite-graduates/index.html
index 129d643..c57cc16 100644
--- a/news/2015/10/22/calcite-graduates/index.html
+++ b/news/2015/10/22/calcite-graduates/index.html
@@ -266,7 +266,7 @@ celebrated with a graduation cake.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/11/08/new-committers/index.html b/news/2015/11/08/new-committers/index.html
index 61c9bfc..82e573b 100644
--- a/news/2015/11/08/new-committers/index.html
+++ b/news/2015/11/08/new-committers/index.html
@@ -237,7 +237,7 @@ committers for their work on Calcite. Welcome!</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2015/11/10/release-1.5.0/index.html b/news/2015/11/10/release-1.5.0/index.html
index 2d8ce42..a06d930 100644
--- a/news/2015/11/10/release-1.5.0/index.html
+++ b/news/2015/11/10/release-1.5.0/index.html
@@ -238,7 +238,7 @@
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/01/22/release-1.6.0/index.html b/news/2016/01/22/release-1.6.0/index.html
index 4feb733..902b3b0 100644
--- a/news/2016/01/22/release-1.6.0/index.html
+++ b/news/2016/01/22/release-1.6.0/index.html
@@ -264,7 +264,7 @@ further tune the metadata layer.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/02/17/elser-pmc/index.html b/news/2016/02/17/elser-pmc/index.html
index b4d8600..8a13f27 100644
--- a/news/2016/02/17/elser-pmc/index.html
+++ b/news/2016/02/17/elser-pmc/index.html
@@ -237,7 +237,7 @@ not least in discussing <a href="https://mail-archives.apache.org/mod_mbox/calci
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/02/17/streaming-sql-talk/index.html b/news/2016/02/17/streaming-sql-talk/index.html
index a312d56..4d1a9da 100644
--- a/news/2016/02/17/streaming-sql-talk/index.html
+++ b/news/2016/02/17/streaming-sql-talk/index.html
@@ -246,7 +246,7 @@ and
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/03/22/cassandra-adapter/index.html b/news/2016/03/22/cassandra-adapter/index.html
index bf1e3a8..e992879 100644
--- a/news/2016/03/22/cassandra-adapter/index.html
+++ b/news/2016/03/22/cassandra-adapter/index.html
@@ -247,7 +247,7 @@ for CSV and JSON files, and JDBC data source, MongoDB, Spark and Splunk.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/03/22/release-1.7.0/index.html b/news/2016/03/22/release-1.7.0/index.html
index f97ec67..4df445b 100644
--- a/news/2016/03/22/release-1.7.0/index.html
+++ b/news/2016/03/22/release-1.7.0/index.html
@@ -269,7 +269,7 @@ to SLF4J’s <code class="highlighter-rouge">DEBUG</code> level, while <code cla
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/06/13/release-1.8.0/index.html b/news/2016/06/13/release-1.8.0/index.html
index 6ad20db..ee2e516 100644
--- a/news/2016/06/13/release-1.8.0/index.html
+++ b/news/2016/06/13/release-1.8.0/index.html
@@ -260,7 +260,7 @@ planner rules and APIs.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/09/22/release-1.9.0/index.html b/news/2016/09/22/release-1.9.0/index.html
index cf75c0e..746b135 100644
--- a/news/2016/09/22/release-1.9.0/index.html
+++ b/news/2016/09/22/release-1.9.0/index.html
@@ -258,7 +258,7 @@ changes to planner rules and APIs.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2016/10/12/release-1.10.0/index.html b/news/2016/10/12/release-1.10.0/index.html
index 9597969..488bfd3 100644
--- a/news/2016/10/12/release-1.10.0/index.html
+++ b/news/2016/10/12/release-1.10.0/index.html
@@ -241,7 +241,7 @@ prevented us from handling consistently time dimensions in different time zones.
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2017/01/09/release-1.11.0/index.html b/news/2017/01/09/release-1.11.0/index.html
index 2334a90..5ea06a9 100644
--- a/news/2017/01/09/release-1.11.0/index.html
+++ b/news/2017/01/09/release-1.11.0/index.html
@@ -279,7 +279,7 @@ See the cases for more details.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2017/03/24/release-1.12.0/index.html b/news/2017/03/24/release-1.12.0/index.html
index 868b678..1bb22bd 100644
--- a/news/2017/03/24/release-1.12.0/index.html
+++ b/news/2017/03/24/release-1.12.0/index.html
@@ -283,7 +283,7 @@ allows the corresponding time-unit arguments.</li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2017/03/31/new-avatica-repository/index.html b/news/2017/03/31/new-avatica-repository/index.html
index 368d977..4dcf8e3 100644
--- a/news/2017/03/31/new-avatica-repository/index.html
+++ b/news/2017/03/31/new-avatica-repository/index.html
@@ -242,7 +242,7 @@ with a mirrored-copy also available on Github at <a href="https://github.com/apa
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2017/06/26/release-1.13.0/index.html b/news/2017/06/26/release-1.13.0/index.html
index 7c4869d..465ebfb 100644
--- a/news/2017/06/26/release-1.13.0/index.html
+++ b/news/2017/06/26/release-1.13.0/index.html
@@ -259,7 +259,7 @@ e.g., <a href="https://issues.apache.org/jira/browse/CALCITE-1707">using extract
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2017/10/02/release-1.14.0/index.html b/news/2017/10/02/release-1.14.0/index.html
index e86884d..a46dd1d 100644
--- a/news/2017/10/02/release-1.14.0/index.html
+++ b/news/2017/10/02/release-1.14.0/index.html
@@ -246,7 +246,7 @@ Several minor improvements are added as well including improved <code class="hig
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2017/12/11/release-1.15.0/index.html b/news/2017/12/11/release-1.15.0/index.html
index ca3a2c3..8f24824 100644
--- a/news/2017/12/11/release-1.15.0/index.html
+++ b/news/2017/12/11/release-1.15.0/index.html
@@ -265,7 +265,7 @@ release that will support JDK 7</a>.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2018/03/19/release-1.16.0/index.html b/news/2018/03/19/release-1.16.0/index.html
index f36200d..3715a4f 100644
--- a/news/2018/03/19/release-1.16.0/index.html
+++ b/news/2018/03/19/release-1.16.0/index.html
@@ -257,7 +257,7 @@ support for <a href="https://issues.apache.org/jira/browse/CALCITE-2191">Guava v
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2018/07/20/release-1.17.0/index.html b/news/2018/07/20/release-1.17.0/index.html
index 04e11be..42aba26 100644
--- a/news/2018/07/20/release-1.17.0/index.html
+++ b/news/2018/07/20/release-1.17.0/index.html
@@ -247,7 +247,7 @@ that accepts all SQL dialects.</li>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2018/12/21/release-1.18.0/index.html b/news/2018/12/21/release-1.18.0/index.html
index c2fb5ed..7c429c3 100644
--- a/news/2018/12/21/release-1.18.0/index.html
+++ b/news/2018/12/21/release-1.18.0/index.html
@@ -247,7 +247,7 @@ and the Elasticsearch and Apache Geode adapters.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2019/03/25/release-1.19.0/index.html b/news/2019/03/25/release-1.19.0/index.html
index 8126e79..7dc0034 100644
--- a/news/2019/03/25/release-1.19.0/index.html
+++ b/news/2019/03/25/release-1.19.0/index.html
@@ -138,7 +138,6 @@ is pleased to announce
 
 <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>
@@ -239,7 +238,7 @@ is pleased to announce
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2019/06/24/release-1.20.0/index.html b/news/2019/06/24/release-1.20.0/index.html
index 85f14d5..a8a78cd 100644
--- a/news/2019/06/24/release-1.20.0/index.html
+++ b/news/2019/06/24/release-1.20.0/index.html
@@ -239,7 +239,7 @@ It includes support for anti-joins, recursive queries, new functions, a new adap
       <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
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/2019/09/11/release-1.21.0/index.html b/news/2019/09/11/release-1.21.0/index.html
index bd21973..9575355 100644
--- a/news/2019/09/11/release-1.21.0/index.html
+++ b/news/2019/09/11/release-1.21.0/index.html
@@ -261,7 +261,7 @@ and bug-fixes.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/index.html b/news/index.html
index 13e43f7..e5d437e 100644
--- a/news/index.html
+++ b/news/index.html
@@ -257,7 +257,6 @@ is pleased to announce
 
 <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>
@@ -2213,7 +2212,7 @@ of the website.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">
diff --git a/news/releases/index.html b/news/releases/index.html
index 4eccee5..fbe6609 100644
--- a/news/releases/index.html
+++ b/news/releases/index.html
@@ -257,7 +257,6 @@ is pleased to announce
 
 <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>
@@ -1696,7 +1695,7 @@ new utility, <code class="highlighter-rouge">SqlRun</code>.</p>
       <img src="/img/feather.png" width="190" height="77" alt="Apache Logo"></a>
   </div>
   <div id="copyright">
-  <p>The contents of this website are Copyright &copy;&nbsp;2019
+  <p>The contents of this website are Copyright &copy;&nbsp;2020
      <a href="https://www.apache.org/">Apache Software Foundation</a>
      under the terms of
      the <a href="https://www.apache.org/licenses/">