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:58:47 UTC

[calcite] branch site updated (3ced74e -> f99e955)

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

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


    from 3ced74e  Site: Switch PMC Chair to Stamatis Zampetakis
     new 72d16e5  [CALCITE-2905] Update documentation for Gradle
     new 0ce8d24  Site: Add two links with useful information about Gradle (Rui Wang)
     new f99e955  Site: Move "Fast federated SQL with Apache Calcite" in talks section and add video link

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 README.md                                |   1 +
 geode/README.md                          |   1 -
 site/README.md                           |   6 +-
 site/_docs/adapter.md                    |   1 -
 site/_docs/algebra.md                    |   1 -
 site/_docs/elasticsearch_adapter.md      |   1 -
 site/_docs/howto.md                      | 294 ++++++++++++-------------------
 site/_docs/index.md                      |   2 -
 site/_docs/lattice.md                    |   1 -
 site/_docs/tutorial.md                   |  26 ++-
 site/_posts/2019-03-26-release-1.19.0.md |   1 -
 site/community/index.md                  |  13 +-
 site/develop/index.md                    |  13 +-
 13 files changed, 148 insertions(+), 213 deletions(-)


[calcite] 02/03: Site: Add two links with useful information about Gradle (Rui Wang)

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 0ce8d24af33ac388643234fab216a0c6e98835fe
Author: amaliujia <am...@gmail.com>
AuthorDate: Tue Nov 19 12:31:44 2019 -0800

    Site: Add two links with useful information about Gradle (Rui Wang)
    
    Close apache/calcite#1596
---
 site/_docs/howto.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/site/_docs/howto.md b/site/_docs/howto.md
index 23274dc..fe95680 100644
--- a/site/_docs/howto.md
+++ b/site/_docs/howto.md
@@ -83,6 +83,10 @@ In the typical case you don't need to install Gradle manually, and
 You can install Gradle manually, however please note that there might
 be impedance mismatch between different versions.
 
+For more information about Gradle, check the following links:
+[Gradle five things](https://docs.gradle.org/current/userguide/what_is_gradle.html#five_things);
+[Gradle multi-project builds](https://docs.gradle.org/current/userguide/intro_multi_project_builds.html).
+
 ## Running tests
 
 The test suite will run by default when you build, unless you specify


[calcite] 03/03: Site: Move "Fast federated SQL with Apache Calcite" in talks section and add video link

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit f99e955ee3c5d6b4647fda5b1f102b91d3d23b3d
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Fri Dec 6 15:20:56 2019 +0100

    Site: Move "Fast federated SQL with Apache Calcite" in talks section and add video link
---
 site/community/index.md | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/site/community/index.md b/site/community/index.md
index 5048d2d..0b4ebec 100644
--- a/site/community/index.md
+++ b/site/community/index.md
@@ -26,11 +26,7 @@ limitations under the License.
 
 # Upcoming talks
 
-## Fast federated SQL with Apache Calcite (Chris Baynes)
-
-At [ApacheCon Europe 2019](https://aceu19.apachecon.com/), Berlin, Germany, October 24, 2019;
-[[summary](https://aceu19.apachecon.com/session/fast-federated-sql-apache-calcite)].
-
+There are no upcoming talks at the moment. Stay tuned!
 
 # Project Members
 
@@ -91,6 +87,13 @@ Want to learn more about Calcite?
 Watch some presentations and read through some slide decks about
 Calcite, or attend one of the [upcoming talks](#upcoming-talks).
 
+## Fast federated SQL with Apache Calcite
+
+At [ApacheCon Europe 2019](https://aceu19.apachecon.com/), Berlin, Germany, October 24, 2019;
+[[summary](https://aceu19.apachecon.com/session/fast-federated-sql-apache-calcite)],
+[[video](https://youtu.be/4JAOkLKrcYE)].
+
+
 ## One SQL to Rule Them All - an Efficient and Syntactically Idiomatic Approach to Management of Streams and Tables
 
 At [SIGMOD/PODS 2019](https://sigmod2019.org/sigmod_industry_list), Amsterdam, Netherlands, 2019


[calcite] 01/03: [CALCITE-2905] Update documentation for Gradle

Posted by za...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit 72d16e5ff419ec9e86f96774c8c4d85af448891b
Author: Stamatis Zampetakis <za...@gmail.com>
AuthorDate: Thu Feb 6 09:37:55 2020 +0100

    [CALCITE-2905] Update documentation for Gradle
    
    This is part of the commit 66c9cd5e1c88ebe834e6f0f299cfb1e1dffa4296 applied on master. Cannot cherry-pick the entire commit since it contains many important changes which affect many things apart from the site.
---
 README.md                                |   1 +
 geode/README.md                          |   1 -
 site/README.md                           |   6 +-
 site/_docs/adapter.md                    |   1 -
 site/_docs/algebra.md                    |   1 -
 site/_docs/elasticsearch_adapter.md      |   1 -
 site/_docs/howto.md                      | 290 ++++++++++++-------------------
 site/_docs/index.md                      |   2 -
 site/_docs/lattice.md                    |   1 -
 site/_docs/tutorial.md                   |  26 ++-
 site/_posts/2019-03-26-release-1.19.0.md |   1 -
 site/develop/index.md                    |  13 +-
 12 files changed, 136 insertions(+), 208 deletions(-)

diff --git a/README.md b/README.md
index 7a0f971..073160a 100644
--- a/README.md
+++ b/README.md
@@ -17,6 +17,7 @@ limitations under the License.
 {% endcomment %}
 -->
 [![Travis Build Status](https://travis-ci.org/apache/calcite.svg?branch=master)](https://travis-ci.org/apache/calcite)
+[![CI Status](https://github.com/apache/calcite/workflows/CI/badge.svg)](https://github.com/apache/calcite/actions)
 [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/apache/calcite?svg=true&branch=master)](https://ci.appveyor.com/project/ApacheSoftwareFoundation/calcite)
 
 # Apache Calcite
diff --git a/geode/README.md b/geode/README.md
index 7099e23..5c6a69d 100644
--- a/geode/README.md
+++ b/geode/README.md
@@ -18,4 +18,3 @@ limitations under the License.
 -->
 
 ##Apache Geode SQL/JBC Adapter
-
diff --git a/site/README.md b/site/README.md
index c528f9a..13c1ed5 100644
--- a/site/README.md
+++ b/site/README.md
@@ -41,10 +41,12 @@ Site generation currently works best with ruby-2.5.1.
 ### Add javadoc
 
 1. `cd ..`
-2. `mvn -DskipTests site`
+2. `./gradlew javadocAggregate`
 3. `rm -rf site/target/apidocs site/target/testapidocs`
    `rmdir site\target\apidocs site\target\testapidocs /S /Q` (Windows)
-4. `mv target/site/apidocs target/site/testapidocs site/target`
+4. `mkdir site/target`
+   `mkdir site\target` (Windows)
+4. `mv build/docs/javadocAggregate site/target/apidocs`
    `for /d %a in (target\site\apidocs* target\site\testapidocs*) do move %a site\target` (Windows)
 
 ### Running locally
diff --git a/site/_docs/adapter.md b/site/_docs/adapter.md
index feb357b..3e75b38 100644
--- a/site/_docs/adapter.md
+++ b/site/_docs/adapter.md
@@ -614,4 +614,3 @@ While preparing a query Calcite combines all of the applicable metadata
 providers and maintains a cache so that a given piece of metadata (for example
 the selectivity of the condition `x > 10` in a particular `Filter` operator)
 is computed only once.
-
diff --git a/site/_docs/algebra.md b/site/_docs/algebra.md
index 70301a1..d589fb0 100644
--- a/site/_docs/algebra.md
+++ b/site/_docs/algebra.md
@@ -472,4 +472,3 @@ To further modify the `AggCall`, call its methods:
 | `distinct(distinct)` | Eliminates duplicate values before aggregating if `distinct`
 | `filter(expr)`       | Filters rows before aggregating (see SQL `FILTER (WHERE ...)`)
 | `sort(expr...)`<br/>`sort(exprList)` | Sorts rows before aggregating (see SQL `WITHIN GROUP`)
-
diff --git a/site/_docs/elasticsearch_adapter.md b/site/_docs/elasticsearch_adapter.md
index 1c3a634..11bc94b 100644
--- a/site/_docs/elasticsearch_adapter.md
+++ b/site/_docs/elasticsearch_adapter.md
@@ -155,4 +155,3 @@ scroll is automatically cleared (removed) when all query resuts are consumed.
 Currently this adapter supports ElasticSearch versions 6.x (or newer). Generally
 we try to follow official [support schedule](https://www.elastic.co/support/eol).
 Also, types are not supported (this adapter only supports indices).
-
diff --git a/site/_docs/howto.md b/site/_docs/howto.md
index 6b7a550..23274dc 100644
--- a/site/_docs/howto.md
+++ b/site/_docs/howto.md
@@ -31,7 +31,7 @@ adapters.
 
 ## Building from a source distribution
 
-Prerequisite is Java (JDK 8, 9, 10, 11, or 12) on your path.
+Prerequisite is Java (JDK 8, 9, 10, 11, 12, or 13) on your path.
 
 Unpack the source distribution `.tar.gz` file,
 `cd` to the root directory of the unpacked source,
@@ -40,16 +40,16 @@ then build using the included maven wrapper:
 {% highlight bash %}
 $ tar xvfz calcite-1.21.0-source.tar.gz
 $ cd calcite-1.21.0
-$ ./mvnw install
+$ ./gradlew build
 {% endhighlight %}
 
 [Running tests](#running-tests) describes how to run more or fewer
 tests.
 
-## Building from git
+## Building from Git
 
 Prerequisites are git
-and Java (JDK 8, 9, 10, 11, or 12) on your path.
+and Java (JDK 8, 9, 10, 11, 12, or 13) on your path.
 
 Create a local copy of the github repository,
 `cd` to its root directory,
@@ -58,44 +58,46 @@ then build using the included maven wrapper:
 {% highlight bash %}
 $ git clone git://github.com/apache/calcite.git
 $ cd calcite
-$ ./mvnw install
+$ ./gradlew build
 {% endhighlight %}
 
 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 `skipGenerate` command line option with your maven command.
-If you invoke the `clean` lifecycle phase, you must not specify the
-`skipGenerate` option as it will not recompile the necessary code for the build
-to succeed.
+has not changed.
 
-{% highlight bash %}
-$ mvn clean
-$ mvn package
-... hacks ...
-$ mvn package -DskipGenerate
-{% endhighlight %}
+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. `core/build/javacc/javaCCMain/org/apache/calcite/sql/parser/impl/SqlParserImpl.java`),
+then you can call `./gradlew generateSources` tasks manually.
 
 [Running tests](#running-tests) describes how to run more or fewer
 tests.
 
-## If you already have Apache Maven
+## Gradle vs Gradle wrapper
 
-If you have already installed Maven and it is on your path, then you
-can use `mvn` rather than `./mvnw` in commands. You need Maven version
-3.5.2 or later.
+Calcite uses Gradle wrapper to make a consistent build environment.
+In the typical case you don't need to install Gradle manually, and
+`./gradlew` would download the proper version for you and verify the expected checksum.
+
+You can install Gradle manually, however please note that there might
+be impedance mismatch between different versions.
 
 ## Running tests
 
 The test suite will run by default when you build, unless you specify
-`-DskipTests`:
+`-x test`
 
 {% highlight bash %}
-$ ./mvnw -DskipTests clean install
-$ ./mvnw test
+$ ./gradlew assemble # build the artifacts
+$ ./gradlew build -x test # build the artifacts, verify code style, skip tests
+$ ./gradlew check # verify code style, execute tests
+$ ./gradlew test # execute tests
+$ ./gradlew checkstyleMain checkstyleTest # verify code style
 {% endhighlight %}
 
+You can use `./gradlew assemble` to build the artifacts and skip all tests and verifications.
+
 There are other options that control which tests are run, and in what
 environment, as follows.
 
@@ -115,6 +117,18 @@ environment, as follows.
 * `-Dcalcite.test.splunk` enables tests that run against Splunk.
   Splunk must be installed and running.
 
+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 `-D...` properties
+(see `passProperty` in `build.gradle.kts`):
+
+* `java.awt.headless`
+* `junit.jupiter.execution.parallel.enabled`, default: `true`
+* `junit.jupiter.execution.timeout.default`, default: `5 m`
+* `user.language`, default: `TR`
+* `user.country`, default: `tr`
+* `calcite.**` (to enable `calcite.test.db` and others above)
+
 ## Running integration tests
 
 For testing Calcite's external adapters, a test virtual machine should be used.
@@ -158,15 +172,16 @@ Note: test VM should be started before you launch integration tests. Calcite its
 
 Command line:
 
-* Executing regular unit tests (does not require external data): no change. `mvn test` or `mvn install`.
-* Executing all tests, for all the DBs: `mvn verify -Pit`. `it` stands for "integration-test". `mvn install -Pit` works as well.
-* Executing just tests for external DBs, excluding unit tests: `mvn -Dtest=foo -DfailIfNoTests=false -Pit verify`
-* Executing just MongoDB tests: `cd mongo; mvn verify -Pit`
+* Executing regular unit tests (does not require external data): no change. `./gradlew test` or `./gradlew build`.
+* Executing all tests, for all the DBs: `./gradlew test integTestAll`.
+* Executing just tests for external DBs, excluding unit tests: `./gradlew integTestAll`
+* Executing PostgreSQL JDBC tests: `./gradlew integTestPostgresql`
+* Executing just MongoDB tests: `./gradlew :mongo:build`
 
 From within IDE:
 
 * Executing regular unit tests: no change.
-* Executing MongoDB tests: run `MongoAdapterIT.java` as usual (no additional properties are required)
+* Executing MongoDB tests: run `MongoAdapterTest.java` with `calcite.integrationTest=true` system property
 * Executing MySQL tests: run `JdbcTest` and `JdbcAdapterTest` with setting `-Dcalcite.test.db=mysql`
 * Executing PostgreSQL tests: run `JdbcTest` and `JdbcAdapterTest` with setting `-Dcalcite.test.db=postgresql`
 
@@ -193,10 +208,10 @@ To setup [IntelliJ IDEA](https://www.jetbrains.com/idea/), follow the standard s
 
 Start with [building Calcite from the command line](#building-from-a-source-distribution).
 
-Go to *File > Open...* and open up Calcite's `pom.xml` file.
+Go to *File > Open...* and open up Calcite's root `build.gradle.kts` 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.
+IntelliJ's Gradle project importer should handle the rest.
 
 There is a partially implemented IntelliJ code style configuration that you can import located [on GitHub](https://gist.github.com/gianm/27a4e3cad99d7b9b6513b6885d3cfcc9).
 It does not do everything needed to make Calcite's style checker happy, but
@@ -208,18 +223,9 @@ Once the importer is finished, test the project setup.
 For example, navigate to the method `JdbcTest.testWinAgg` with
 *Navigate > Symbol* and enter `testWinAgg`. Run `testWinAgg` by right-clicking and selecting *Run* (or the equivalent keyboard shortcut).
 
-If you encounter an error while running the `JdbcTest.testWinAgg` , run the following Maven command from the command line:
-
-`$ ./mvnw -DskipTests clean install`
-
-You should see `"BUILD SUCCESS"`.
-
-Once that is complete, proceed with running `JdbcTest.testWinAgg`.
-
 ### Setting up NetBeans
 
-From the main menu, select *File > Open Project* and navigate to a name of the project (Calcite) with a small Maven icon, and choose to open.
-(See [this tutorial](https://www.packtpub.com/mapt/book/application_development/9781785286124/2/ch02lvl1sec23/importing-an-existing-maven-project-in-netbeans) for an example of how to open a Maven project)
+From the main menu, select *File > Open Project* 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.
 
 To ensure that the project is configured successfully, navigate to the method `testWinAgg` in `org.apache.calcite.test.JdbcTest`.
@@ -227,6 +233,10 @@ Right-click on the method and select to *Run Focused Test Method*.
 NetBeans will run a Maven process, and you should see in the command output window a line with
  `Running org.apache.calcite.test.JdbcTest` followed by `"BUILD SUCCESS"`.
 
+Note: it is not clear if NetBeans automatically generates relevant sources on project import,
+so you might need to run `./gradlew generateSources` before importing the project (and when you
+update template parser sources, and project version)
+
 ## Tracing
 
 To enable tracing, add the following flags to the java command line:
@@ -312,8 +322,8 @@ Calcite model:
 
 {% highlight bash %}
 $ ./sqlline
-sqlline> !connect jdbc:calcite:model=mongodb/target/test-classes/mongo-model.json admin admin
-Connecting to jdbc:calcite:model=mongodb/target/test-classes/mongo-model.json
+sqlline> !connect jdbc:calcite:model=mongodb/src/test/resources/mongo-model.json admin admin
+Connecting to jdbc:calcite:model=mongodb/src/test/resources/mongo-model.json
 Connected to: Calcite (version 1.x.x)
 Driver: Calcite JDBC Driver (version 1.x.x)
 Autocommit status: true
@@ -499,32 +509,47 @@ file by following instructions in the `KEYS` file.
 ball because that would be
 [redundant](https://issues.apache.org/jira/browse/CALCITE-1746).)
 
-## Set up Maven repository credentials (for Calcite committers)
+## Set up Nexus repository credentials (for Calcite committers)
+
+Gradle provides multiple ways to [configure project properties](https://docs.gradle.org/current/userguide/build_environment.html#sec:gradle_configuration_properties).
+For instance, you could update `$HOME/.gradle/gradle.properties`.
+
+Note: the build script would print the missing properties, so you can try running it and let it complain on the missing ones.
 
-Follow the instructions [here](https://www.apache.org/dev/publishing-maven-artifacts.html#dev-env) to add your credentials to your maven configuration.
+The following options are used:
+
+{% highlight properties %}
+asfCommitterId=
+asfNexusUsername=
+asfNexusPassword=
+asfSvnUsername=
+asfSvnPassword=
+{% endhighlight %}
+
+Note: when https://github.com/vlsi/asflike-release-environment is used, the credentials are takend from
+`asfTest...` (e.g. `asfTestNexusUsername=test`)
+
+Note: if you want to uses `gpg-agent`, you need to pass `useGpgCmd` property, and specify the key id
+via `signing.gnupg.keyName`.
 
 ## Making a snapshot (for Calcite committers)
 
 Before you start:
 
-* Set up signing keys as described above.
 * Make sure you are using JDK 8.
 * Make sure build and tests succeed with `-Dcalcite.test.db=hsqldb` (the default)
 
 {% highlight bash %}
-# Tell GPG how to read a password from your terminal
-export GPG_TTY=$(tty)
-
 # Make sure that there are no junk files in the sandbox
 git clean -xn
-./mvnw clean
-
-./mvnw -Papache-release install
+# Publish snapshot artifacts
+./gradlew clean publish -Pasf
 {% endhighlight %}
 
-When the dry-run has succeeded, change `install` to `deploy`.
+## Making a release candidate (for Calcite committers)
 
-## Making a release (for Calcite committers)
+Note: release artifacts (dist.apache.org and repository.apache.org) are managed with
+[stage-vote-release-plugin](https://github.com/vlsi/vlsi-release-plugins/tree/master/plugins/stage-vote-release-plugin)
 
 Before you start:
 
@@ -532,20 +557,18 @@ Before you start:
 * Make sure you are using JDK 8 (not 9 or 10).
 * Check that `README` and `site/_docs/howto.md` have the correct version number.
 * Check that `NOTICE` has the current copyright year.
-* Set `version.major` and `version.minor` in `pom.xml`.
-* Make sure build and tests succeed, including with `-P it,it-oracle`.
-* Make sure that `./mvnw javadoc:javadoc javadoc:test-javadoc` succeeds
+* Check that `calcite.version` has the proper value in `/gradle.properties`.
+* Make sure build and tests succeed
+* Make sure that `./gradlew javadoc` succeeds
   (i.e. gives no errors; warnings are OK)
 * Generate a report of vulnerabilities that occur among dependencies,
-  using `-Ppedantic`; if you like, run again with `-DfailBuildOnCVSS=8` to see
-  whether serious vulnerabilities exist. Report to [private@calcite.apache.org](mailto:private@calcite.apache.org)
+  using `./gradlew dependencyCheckUpdate dependencyCheckAggregate`.
+  Report to [private@calcite.apache.org](mailto:private@calcite.apache.org)
   if new critical vulnerabilities are found among dependencies.
-* Make sure that `./mvnw apache-rat:check` succeeds. (It will be run as part of
-  the release, but it's better to trouble-shoot early.)
 * 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 _x.y_, specify `-Dguava.version=x.y`
+  notes.  To test Guava version _x.y_, specify `-Pguava.version=x.y`
 * Optional extra tests:
   * `-Dcalcite.test.db=mysql`
   * `-Dcalcite.test.db=hsqldb`
@@ -580,27 +603,19 @@ SELECT NVL(ST_Is3D(ST_PointFromText('POINT(-71.064544 42.28787)')), TRUE);
 > !quit
 {% endhighlight %}
 
-Create a release branch named after the release, e.g. `branch-1.1`, and push it to Apache.
+The release candidate process does not add commits,
+so there's no harm if it fails. It might leave `-rc` tag behind
+which can be removed if required.
 
-{% highlight bash %}
-$ git checkout -b branch-X.Y
-$ git push -u origin branch-X.Y
-{% endhighlight %}
+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.
 
-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 `git merge --ff-only` 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.)
+If any of the steps fail, fix the problem, and
+start again from the top.
 
-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.
+### To prepare a release candidate directly in your environment:
 
-If any of the steps fail, clean up (see below), fix the problem, and
-start again from the top.
+Pick a release candidate index and ensure it does not interfere with previous candidates for the version.
 
 {% highlight bash %}
 # Tell GPG how to read a password from your terminal
@@ -608,23 +623,17 @@ export GPG_TTY=$(tty)
 
 # Make sure that there are no junk files in the sandbox
 git clean -xn
-./mvnw clean
 
-# Do a dry run of the release:prepare step, which sets version numbers
-# (accept the default tag name of calcite-X.Y.Z).
-# Note X.Y.Z is the current version we're trying to release (e.g. 1.8.0),
-# and X.(Y+1).Z is the next development version (e.g. 1.9.0).
-./mvnw -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.(Y+1).Z-SNAPSHOT -Papache-release -Darguments=-DskipTests release:prepare 2>&1 | tee /tmp/prepare-dry.log
+# Dry run the release candidate (push to asf-like-environment)
+./gradlew prepareVote -Prc=1
 
-# 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`:
-./mvnw -DdryRun=true -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.(Y+1).Z-SNAPSHOT -Papache-release -Darguments="-DskipTests -Dgpg.keyname=${GPG_KEY_ID}" release:prepare 2>&1 | tee /tmp/prepare-dry.log
+# Push release candidate to ASF servers
+./gradlew prepareVote -Prc=1 -Pasf
 {% endhighlight %}
 
-Check the artifacts.
-Note that when performing the dry run `SNAPSHOT` will appear in any file or directory names given below.
-The version will be automatically changed when performing the release for real.
+#### Checking the artifacts
 
-* In the `target` directory should be these 3 files, among others:
+* In the `release/build/distributions` directory should be these 3 files, among others:
   * `apache-calcite-X.Y.Z-src.tar.gz`
   * `apache-calcite-X.Y.Z-src.tar.gz.asc`
   * `apache-calcite-X.Y.Z-src.tar.gz.sha256`
@@ -638,36 +647,12 @@ The version will be automatically changed when performing the release for real.
   * Check that the copyright year in `NOTICE` is correct
 * Make sure that there is no `KEYS` file in the source distros
 * In each .jar (for example
-  `core/target/calcite-core-X.Y.Z.jar` and
-  `mongodb/target/calcite-mongodb-X.Y.Z-sources.jar`), check
-  that the `META-INF` directory contains `DEPENDENCIES`, `LICENSE`,
-  `NOTICE` and `git.properties`
-* In `core/target/calcite-core-X.Y.Z.jar`,
-  check that `org-apache-calcite-jdbc.properties` is
-  present and does not contain un-substituted `${...}` variables
+  `core/build/libs/calcite-core-X.Y.Z.jar` and
+  `mongodb/build/libs/calcite-mongodb-X.Y.Z-sources.jar`), check
+  that the `META-INF` directory contains `LICENSE`,
+  `NOTICE`
 * Check PGP, per [this](https://httpd.apache.org/dev/verification.html)
 
-Now, remove the `-DdryRun` flag and run the release for real.
-For this step you'll have to add the [Apache servers](https://maven.apache.org/developers/committer-settings.html) to `~/.m2/settings.xml`.
-
-{% highlight bash %}
-# Make sure that there are no junk files in the sandbox; performing a dry run may have generated
-# redundant files that do not need to be present in the release artifacts.
-git clean -xn
-./mvnw clean
-
-# Prepare sets the version numbers, creates a tag, and pushes it to git
-# Note X.Y.Z is the current version we're trying to release, and X.Y+1.Z is the next development version.
-# 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.
-./mvnw -DdryRun=false -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments=-DskipTests release:prepare 2>&1 | tee /tmp/prepare.log
-
-# 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`:
-./mvnw -DdryRun=false -DskipTests -DreleaseVersion=X.Y.Z -DdevelopmentVersion=X.Y+1.Z-SNAPSHOT -Papache-release -Darguments="-DskipTests -Dgpg.keyname=${GPG_KEY_ID}" release:prepare 2>&1 | tee /tmp/prepare.log
-
-# Perform checks out the tagged version, builds, and deploys to the staging repository
-./mvnw -DskipTests -Papache-release release:perform 2>&1 | tee /tmp/perform.log
-{% endhighlight %}
-
 Verify the staged artifacts in the Nexus repository:
 
 * Go to [https://repository.apache.org/](https://repository.apache.org/) and login
@@ -679,45 +664,10 @@ Verify the staged artifacts in the Nexus repository:
   https://repository.apache.org/content/repositories/orgapachecalcite-1000
   (or a similar URL)
 
-Upload the artifacts via subversion to a staging area,
-https://dist.apache.org/repos/dist/dev/calcite/apache-calcite-X.Y.Z-rcN:
-
-{% highlight bash %}
-# Create a subversion workspace, if you haven't already
-mkdir -p ~/dist/dev
-pushd ~/dist/dev
-svn co https://dist.apache.org/repos/dist/dev/calcite
-popd
-
-# Move the files into a directory
-mkdir ~/dist/dev/calcite/apache-calcite-X.Y.Z-rcN
-mv apache-calcite-* ~/dist/dev/calcite/apache-calcite-X.Y.Z-rcN
-
-# Check in
-cd ~/dist/dev/calcite
-svn add apache-calcite-X.Y.Z-rcN
-svn ci
-{% endhighlight %}
-
 ## Cleaning up after a failed release attempt (for Calcite committers)
 
-{% highlight bash %}
-# Make sure that the tag you are about to generate does not already
-# exist (due to a failed release attempt)
-git tag
-
-# If the tag exists, delete it locally and remotely
-git tag -d calcite-X.Y.Z
-git push origin :refs/tags/calcite-X.Y.Z
-
-# Remove modified files
-./mvnw release:clean
-
-# Check whether there are modified files and if so, go back to the
-# original git commit
-git status
-git reset --hard HEAD
-{% endhighlight %}
+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.
 
 ## Validate a release
 
@@ -754,6 +704,8 @@ checkHash apache-calcite-X.Y.Z-rcN
 ## Get approval for a release via Apache voting process (for Calcite committers)
 
 Release vote on dev list
+Note: the draft mail is printed as the final step of `prepareVote` task,
+and you can find the draft in `/build/prepareVote/mail.txt`
 
 {% highlight text %}
 To: dev@calcite.apache.org
@@ -848,31 +800,15 @@ 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.
 
-Promote the staged nexus artifacts.
-
-* Go to [https://repository.apache.org/](https://repository.apache.org/) and login
-* Under "Build Promotion" click "Staging Repositories"
-* In the line with "orgapachecalcite-xxxx", check the box
-* Press "Release" button
 
-Check the artifacts into svn.
+### Publishing directly in your environment:
 
 {% highlight bash %}
-# Get the release candidate.
-mkdir -p ~/dist/dev
-cd ~/dist/dev
-svn co https://dist.apache.org/repos/dist/dev/calcite
-
-# Copy the artifacts. Note that the copy does not have '-rcN' suffix.
-mkdir -p ~/dist/release
-cd ~/dist/release
-svn co https://dist.apache.org/repos/dist/release/calcite
-cd calcite
-cp -rp ../../dev/calcite/apache-calcite-X.Y.Z-rcN apache-calcite-X.Y.Z
-svn add apache-calcite-X.Y.Z
-
-# Check in.
-svn ci
+# Dry run publishing the release (push to asf-like-environment)
+./gradlew publishDist -Prc=1
+
+# Publish the release to ASF servers
+./gradlew publishDist -Prc=1 -Pasf
 {% endhighlight %}
 
 Svnpubsub will publish to the
diff --git a/site/_docs/index.md b/site/_docs/index.md
index cf4560c..fda9999 100644
--- a/site/_docs/index.md
+++ b/site/_docs/index.md
@@ -142,5 +142,3 @@ The following features are complete.
   more details in the [SQL reference](reference.html)
 * Local and remote JDBC drivers; see [Avatica](avatica_overview.html)
 * Several [adapters](adapter.html)
-
-
diff --git a/site/_docs/lattice.md b/site/_docs/lattice.md
index 790d137..9c0b635 100644
--- a/site/_docs/lattice.md
+++ b/site/_docs/lattice.md
@@ -351,4 +351,3 @@ Here are some ideas that have not yet been implemented:
     data cubes efficiently</a>.
     In <i>Proc. ACM SIGMOD Conf.</i>, Montreal, 1996.</li>
 </ul>
-
diff --git a/site/_docs/tutorial.md b/site/_docs/tutorial.md
index 182bbc5..f12bfea 100644
--- a/site/_docs/tutorial.md
+++ b/site/_docs/tutorial.md
@@ -53,13 +53,12 @@ several important concepts:
 
 ## Download and build
 
-You need Java (version 8, 9 or 10) and git.
+You need Java (version 8, 9 or 10) and Git.
 
 {% highlight bash %}
 $ git clone https://github.com/apache/calcite.git
-$ cd calcite
-$ ./mvnw install -DskipTests -Dcheckstyle.skip=true
-$ cd example/csv
+$ cd calcite/example/csv
+$ ./sqlline
 {% endhighlight %}
 
 ## First queries
@@ -70,7 +69,7 @@ that is included in this project.
 
 {% highlight bash %}
 $ ./sqlline
-sqlline> !connect jdbc:calcite:model=target/test-classes/model.json admin admin
+sqlline> !connect jdbc:calcite:model=src/test/resources/model.json admin admin
 {% endhighlight %}
 
 (If you are running Windows, the command is `sqlline.bat`.)
@@ -103,7 +102,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.
+<code>resources/sales</code> directory.
 
 Let's execute some queries on those tables, to show that Calcite is providing
 a full implementation of SQL. First, a table scan:
@@ -179,7 +178,7 @@ format. Here is the model:
       type: 'custom',
       factory: 'org.apache.calcite.adapter.csv.CsvSchemaFactory',
       operand: {
-        directory: 'target/test-classes/sales'
+        directory: 'sales'
       }
     }
   ]
@@ -280,7 +279,7 @@ private Table createTable(File file) {
 
 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>.
 
@@ -314,7 +313,7 @@ Here is a schema that defines a view:
       type: 'custom',
       factory: 'org.apache.calcite.adapter.csv.CsvSchemaFactory',
       operand: {
-        directory: 'target/test-classes/sales'
+        directory: 'sales'
       },
       tables: [
         {
@@ -379,7 +378,7 @@ There is an example in <code>model-with-custom-table.json</code>:
           type: 'custom',
           factory: 'org.apache.calcite.adapter.csv.CsvTableFactory',
           operand: {
-            file: 'target/test-classes/sales/EMPS.csv.gz',
+            file: 'sales/EMPS.csv.gz',
             flavor: "scannable"
           }
         }
@@ -392,7 +391,7 @@ There is an example in <code>model-with-custom-table.json</code>:
 We can query the table in the usual way:
 
 {% highlight sql %}
-sqlline> !connect jdbc:calcite:model=target/test-classes/model-with-custom-table.json admin admin
+sqlline> !connect jdbc:calcite:model=src/test/resources/model-with-custom-table.json admin admin
 sqlline> SELECT empno, name FROM custom_table.emps;
 +--------+--------+
 | EMPNO  |  NAME  |
@@ -476,7 +475,7 @@ a subset of columns from a CSV file. Let's run the same query against two very
 similar schemas:
 
 {% highlight sql %}
-sqlline> !connect jdbc:calcite:model=target/test-classes/model.json admin admin
+sqlline> !connect jdbc:calcite:model=src/test/resources/model.json admin admin
 sqlline> explain plan for select name from emps;
 +-----------------------------------------------------+
 | PLAN                                                |
@@ -484,7 +483,7 @@ sqlline> explain plan for select name from emps;
 | EnumerableCalcRel(expr#0..9=[{inputs}], NAME=[$t1]) |
 |   EnumerableTableScan(table=[[SALES, EMPS]])        |
 +-----------------------------------------------------+
-sqlline> !connect jdbc:calcite:model=target/test-classes/smart.json admin admin
+sqlline> !connect jdbc:calcite:model=src/test/resources/smart.json admin admin
 sqlline> explain plan for select name from emps;
 +-----------------------------------------------------+
 | PLAN                                                |
@@ -721,4 +720,3 @@ initial implementations.
 
 There are many other ways to extend Calcite not yet described in this tutorial.
 The [adapter specification](adapter.html) describes the APIs involved.
-
diff --git a/site/_posts/2019-03-26-release-1.19.0.md b/site/_posts/2019-03-26-release-1.19.0.md
index c85a62f..b8f3802 100644
--- a/site/_posts/2019-03-26-release-1.19.0.md
+++ b/site/_posts/2019-03-26-release-1.19.0.md
@@ -31,4 +31,3 @@ is pleased to announce
 [Apache Calcite release 1.19.0]({{ site.baseurl }}/docs/history.html#v1-19-0).
 
 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.
-
diff --git a/site/develop/index.md b/site/develop/index.md
index ded23ea..e39e66d 100644
--- a/site/develop/index.md
+++ b/site/develop/index.md
@@ -40,16 +40,16 @@ user-friendly.
 
 ## Download source, build, and run tests
 
-Prerequisites are git, maven (3.5.2 or later)
-and Java (JDK 8 or later, 9 preferred) on your path.
+Prerequisites are Git,
+and Java (JDK 8 or later, 13 preferred) on your path.
 
-Create a local copy of the git repository, `cd` to its root directory,
-then build using maven:
+Create a local copy of the Git repository, `cd` to its root directory,
+then build using Gradle:
 
 {% highlight bash %}
 $ git clone git://github.com/apache/calcite.git
 $ cd calcite
-$ mvn install
+$ ./gradlew build
 {% endhighlight %}
 
 The HOWTO describes how to
@@ -130,7 +130,7 @@ the contributor(s) involved in the discussion should:
 Fork the GitHub repository, and create a branch for your feature.
 
 Develop your feature and test cases, and make sure that
-`mvn install` succeeds. (Run extra tests if your change warrants it.)
+`./gradlew build` succeeds. (Run extra tests if your change warrants it.)
 
 Commit your change to your branch, and use a comment that starts with
 the JIRA case number, like this:
@@ -218,4 +218,3 @@ We value all contributions that help to build a vibrant community, not just code
 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.
-